# Only-capture Mode
In Only-capture Mode, the yc-360 script collects diagnostic artifacts but does not transmit them to the yCrash server. Instead, it packages the collected data into a ZIP file and saves it locally in the directory where the script is executed.
The yc-360 script currently supports Java, .NET, and Node.js applications.
Choose your environment to follow step-by-step instructions:
1. Create a directory for yc-360 script
mkdir -p /opt/workspace/yc-360
cd /opt/workspace/yc-360
2
2. Download the latest yc-360 script
wget https://tier1app.com/dist/ycrash/yc-360-latest.zip
3. Extract the downloaded zip file
unzip yc-360-latest.zip
4. After unzipping, navigate to the linux directory. Inside this directory, select the yc-360 script that matches your server's architecture (amd64 or arm64).
5. Execute yc-360 Script: Run the script with your target application's process ID:
When you execute the below command, the yc-360 script will capture all the artifacts/logs from the target JVM & host for analysis. Captured artifacts will be compressed into a zip file and stored in the directory where the above command was executed. The zip file will have the name in the format: 'yc-YYYY-MM-DDTHH-mm-ss.zip'. Example: 'yc-2024-09-23T14-02-42.zip'.
For Java applications:
./yc -onlyCapture -p {PID} -j {JAVA_HOME} -a {APPLICATION_NAME}
For Node.js applications:
Before running the script, make sure your Node.js application has the yCrash hook loaded. This is a one time setup step on the application side, separate from running yc-360 itself. See Node.js Diagnostic Capture for how to configure it.
./yc -onlyCapture -p {PID} -appRuntime=nodejs -a {APPLICATION_NAME}
INFO:
{PID}: This is the process ID of your target application. Not sure how to find process Id? Learn here. Alternatively, you can pass Unique Token that will uniquely identify the process in container. What is Unique Token?{JAVA_HOME}: The directory path where Java is installed in your environment. Not applicable for Node.js applications.{APPLICATION_NAME}: Friendly name for the application (displayed in the yCrash dashboard).
IMPORTANT TIP:
For Java applications:
The yc-360 script must be executed with the same user privileges as the Java application. For example, if the application runs under the
tomcat-useruser, yc-360 script must also be executed bytomcat-useruser.To detect memory-related issues, GC logging must be enabled for your application. You can enable GC logging by using the JVM arguments listed here.
The yc-360 script doesn't capture heap dump by default. Pass
-hdargument to capture heap dump. For more information, please visit How to Capture Heap Dump?
For Node.js applications:
The yc-360 script must be executed with the same user privileges as the Node.js application.
The yCrash hook must already be loaded in the target process before the script runs. It can't attach to an application after the fact. See Node.js Diagnostic Capture for setup.
GC Log auto discovery works out of the box on Linux, as long as the application was started with
--trace-gc.
# Video
The following video demonstrates how to trigger Only-Capture Mode in a Linux environment.
1. Create a directory for yc-360 script
mkdir -p /opt/workspace/yc-360
cd /opt/workspace/yc-360
2
2. Download the latest yc-360 script
wget https://tier1app.com/dist/ycrash/yc-360-latest.zip
3. Extract the downloaded zip file
unzip yc-360-latest.zip
4. After unzipping, navigate to the mac directory. Inside this directory, select the yc-360 script that matches your server's architecture (amd64 or arm64).
5. Execute yc-360 Script: Run the script with your target application's process ID:
When you execute the below command, the yc-360 script will capture all the artifacts/logs from the target JVM & host for analysis. Captured artifacts will be compressed into a zip file and stored in the directory where the above command was executed. The zip file will have the name in the format: 'yc-YYYY-MM-DDTHH-mm-ss.zip'. Example: 'yc-2024-09-23T14-02-42.zip'.
For Java applications:
./yc -onlyCapture -p {PID} -j {JAVA_HOME} -a {APPLICATION_NAME}
For Node.js applications:
Before running the script, make sure your Node.js application has the yCrash hook loaded. This is a one time setup step on the application side, separate from running yc-360 itself. See Node.js Diagnostic Capture for how to configure it.
./yc -onlyCapture -p {PID} -appRuntime=nodejs -a {APPLICATION_NAME}
INFO:
{PID}: This is the process ID of your target application. Not sure how to find process Id? Learn here. Alternatively, you can pass Unique Token that will uniquely identify the process in container. What is Unique Token?{JAVA_HOME}: The directory path where Java is installed in your environment. Not applicable for Node.js applications.{APPLICATION_NAME}: Friendly name for the application (displayed in the yCrash dashboard).
IMPORTANT TIP:
For Java applications:
The yc-360 script must be executed with the same user privileges as the Java application. For example, if the application runs under the
tomcat-useruser, yc-360 script must also be executed bytomcat-useruser.To detect memory-related issues, GC logging must be enabled for your application. You can enable GC logging by using the JVM arguments listed here.
The yc-360 script doesn't capture heap dump by default. Pass
-hdargument to capture heap dump. For more information, please visit How to Capture Heap Dump?
For Node.js applications:
The yc-360 script must be executed with the same user privileges as the Node.js application.
The yCrash hook must already be loaded in the target process before the script runs. It can't attach to an application after the fact. See Node.js Diagnostic Capture for setup.
GC Log auto discovery works out of the box on macOS, as long as the application was started with
--trace-gc.
1. Download: Download the latest version of the yc-360 script from here (opens new window).
2. Extract: Unzip the package and navigate to the windows directory:
cd windows
3. Execute yc-360 Script: Run the script with your target application's process ID:
When the command is executed, the yc-360 script captures all artifacts from the target application and host. The collected artifacts are compressed into a ZIP file and saved in the directory where the command was executed. The ZIP file is named in the format: yc-YYYY-MM-DDTHH-mm-ss.zip. For example: yc-2024-09-23T14-02-42.zip.
For Java applications:
.\yc -onlyCapture -p {PID} -j {JAVA_HOME} -a {APPLICATION_NAME}
For .NET applications:
.\yc -onlyCapture -p {PID} -appRuntime=dotnet -a {APPLICATION_NAME}
For Node.js applications:
Before running the script, make sure your Node.js application has the yCrash hook loaded. This is a one time setup step on the application side, separate from running yc-360 itself. See Node.js Diagnostic Capture for how to configure it.
.\yc -onlyCapture -p {PID} -appRuntime=nodejs -a {APPLICATION_NAME}
INFO:
{PID}: The process ID of your target application. Not sure how to find the process ID? Learn here. Alternatively, you can pass a Unique Token to uniquely identify the process in a container. What is Unique Token?{JAVA_HOME}: The directory path where Java is installed in your environment. Thejargument is required for Java applications only. Not applicable for .NET applications.{APPLICATION_NAME}: Friendly name for the application (displayed in the yCrash dashboard).
IMPORTANT TIP:
For Java applications:
The yc-360 script must be executed with the same user privileges as the Java application. For example, if the application runs under the
tomcat-useruser, yc-360 script must also be executed bytomcat-useruser.To detect memory-related issues, GC logging must be enabled for your application. You can enable GC logging by using the JVM arguments listed here.
The yc-360 script doesn't capture heap dump by default. Pass
-hdargument to capture heap dump. For more information, please visit How to Capture Heap Dump?
For .NET applications:
Ensure Event Tracing for Windows (ETW) is enabled in your environment. It is required to capture .NET artifacts. To learn more, visit ETW Privileges and Environment Requirements (opens new window)
The yc-360 script must be run with administrator permissions to capture .NET artifacts.
Heap dumps are not captured for .NET applications. Instead, the script captures lightweight heap substitute data for memory analysis.
GC capture duration: By default, GC collection runs for 30 seconds. To extend this, pass
-gcDuration=<seconds>to the yc-360 script (replace<seconds>with the desired duration).
For Node.js applications:
The yCrash hook must already be loaded in the target process before the script runs. It can't attach to an application after the fact. See Node.js Diagnostic Capture for setup.
GC Log capture on Windows requires
-nodejsGCLogPathpointing at your application's redirected output file. There's no auto discovery on this platform. SeenodejsGCLogPath.
You can run the yc-360 script in a Docker environment using one of the following approaches, depending on your deployment setup and monitoring preferences:
Run yc-360 Script in Sidecar Container – Run the script in a separate container alongside your application container.
Run yc-360 Script in Same Container – Embed the yc-360 script directly inside the application container.
Run yc-360 Script on Host – Run the script on the host that is running your Docker containers.
For Node.js applications, set NODE_OPTIONS as an environment variable on your application's container before you start it. See Node.js Diagnostic Capture for the full setup, including how to point both sides at a shared runtime directory in a containerized deployment.
You can run the yc-360 script in a Kubernetes environment using one of the following approaches, depending on your deployment setup and monitoring preferences:
Run yc-360 Script in Sidecar Container – Add yc-360 as a separate container in your pod spec.
Run yc-360 Script in Same Container – Install and run the script directly inside your application container.
For Node.js applications, set NODE_OPTIONS in your pod's container env spec before the pod starts. See Node.js Diagnostic Capture for the full setup.
To monitor applications running in OpenShift, deploy the yc-360 script using:
Run yc-360 Script in Sidecar Container – Add yc-360 alongside your application within the pod template.
For Node.js applications, set NODE_OPTIONS in your pod's container env spec before the pod starts. See Node.js Diagnostic Capture for the full setup.
You can run the yc-360 script in an AWS Fargate environment using one of the following approaches, depending on your orchestration platform:
Fargate on ECS
Run yc-360 Script in Sidecar Container for ECS Fargate – Add yc-360 as a sidecar container in your ECS task definition to automatically capture metrics and logs from your application container.Fargate on EKS COMING SOON
For Node.js applications, set NODE_OPTIONS on your application's container definition before it starts. See Node.js Diagnostic Capture for the full setup.
# How to Analyze Captured 360° Artifacts?
You can upload the captured zip file in the 'Bundle upload' section of yCrash dashboard. Tool will analyze all the above artifacts and generate a root cause analysis report instantly.