# On-Demand Mode
To begin capturing troubleshooting artifacts from your application, you'll need to download and configure the yc-360 script. On-Demand Mode is the most commonly used execution mode. It allows you to manually trigger the script whenever needed. The yc-360 script collects critical artifacts such as thread dumps, GC logs, heap dumps, and system metrics from your target application, then automatically uploads them to the yCrash server for analysis and root cause identification.
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. Download the YAML Configuration File: Use the following command to download the sample yc-config.yaml configuration template.
wget https://tier1app.com/dist/docs/yc-360-script/on-demand/yc-config.yaml
Replace the placeholders in the YAML configuration file with your actual values:
{API_KEY}: Your API key was provided with your license at the time of registration. If you're not sure where to find the API key, click here (opens new window).{http://MY-YC-SERVER:PORT}: URL of the yCrash server (e.g., http://localhost:8080 (opens new window)). If you're not sure where to find the Server URL, click here (opens new window).{JAVA_HOME}: The directory path where Java is installed in your environment.{APPLICATION_NAME}: Friendly name for the application (displayed in the yCrash dashboard).
For a full list of arguments, refer to the All yc-360 Script Arguments page.
6. Execute yc-360 Script: Run the script with your target application's process ID:
For Java applications:
./yc -c yc-config.yaml -p {PID}
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 -c yc-config.yaml -p {PID} -appRuntime=nodejs
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?
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 On-Demand 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. Download the YAML Configuration File: Use the following command to download the sample yc-config.yaml configuration template.
wget https://tier1app.com/dist/docs/yc-360-script/on-demand/yc-config.yaml
Replace the placeholders in the YAML configuration file with your actual values:
{API_KEY}: Your API key was provided with your license at the time of registration. If you're not sure where to find the API key, click here (opens new window).{http://MY-YC-SERVER:PORT}: URL of the yCrash server (e.g., http://localhost:8080 (opens new window)). If you're not sure where to find the Server URL, click here (opens new window).{JAVA_HOME}: The directory path where Java is installed in your environment.{APPLICATION_NAME}: Friendly name for the application (displayed in the yCrash dashboard).
For a full list of arguments, refer to the All yc-360 Script Arguments page.
4. Execute yc-360 Script: Run the script with your target application's process ID:
For Java applications:
./yc -c yc-config.yaml -p {PID}
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 -c yc-config.yaml -p {PID} -appRuntime=nodejs
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?
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. Create YAML Configuration File: Download sample YAML configuration file: yc-config.yaml (opens new window).
Replace the placeholders in the YAML configuration file with your actual values:
{API_KEY}: Your API key was provided with your license at the time of registration. If you're not sure where to find the API key, click here (opens new window).{http://MY-YC-SERVER:PORT}: URL of the yCrash server (e.g., http://localhost:8080 (opens new window)). If you're not sure where to find the Server URL, click here (opens new window).{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).
For a full list of arguments, refer to the All yc-360 Script Arguments page.
4. Execute yc-360 Script: Run the script with your target application's process ID:
For Java applications:
.\yc -c yc-config.yaml -p {PID}
For .NET applications:
.\yc -c yc-config.yaml -p {PID} -appRuntime=dotnet
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 -c yc-config.yaml -p {PID} -appRuntime=nodejs
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?
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 on OpenShift, deploy the yc-360 script using a sidecar container:
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.