Skip to content

yc is a lightweight script that captures comprehensive 360° performance troubleshooting artifacts (GC logs, thread dumps, heap dumps, application logs, top, and more) across diverse environments like Linux, Windows, Docker, Kubernetes, and OpenShift.

Notifications You must be signed in to change notification settings

ycrash/yc-data-script

Repository files navigation

yc-data-script

img

What does the yc-data-script do?

yc-data-script is a simple Golang script that captures 16 different artifacts from your application in a pristine manner. These artifacts will be highly useful to troubleshoot performance problems. Below is the list of artifacts captured:

  1. Garbage collection log
  2. Thread dump
  3. Heap dump
  4. Heap substitute
  5. top
  6. ps
  7. top -H
  8. Disk usage
  9. dmesg
  10. netstat
  11. ping
  12. vmstat
  13. iostat
  14. Kernel parameters
  15. Application Log
  16. Metadata

How to run the yc-data-script?

  1. Download the latest yc-data-script from this location
  2. Unzip the downloaded yc-agent-latest.zip file. (Say you are unzipping in '/opt/workspace/yc-agent-latest' folder)
  3. In the unzipped folder you will find yc-data-script by operating system:

a) linux/yc - If you are running on Unix/Linux, then use this script.

b) windows/yc.exe - If you are running on Windows, then use this script.

c) mac/yc - If you are running on MAC, then use this script.

  1. You can execute the yc script by issuing following command:
./yc -j {JAVA_HOME} -onlyCapture -p {PID} -hd

Where,

JAVA_HOME is the home directory where JDK is installed

PID is the troubled target process ID

Example:

./yc -j /usr/java/jdk1.8.0_141 -onlyCapture -p 15326 -hd

When you pass the above arguments, yc-data-script will capture all the application level and system level artifacts/logs from the server from the target JVM & host for analysis. Captured artifacts will be compressed into a zip file and stored in the current 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-2021-03-06T14-02-42.zip'.

WARNING: In Linux/Unix, yCrash agent should be run with same user permissions as your target java application user permission. Say your target java application is running with user permission 'tomcat-user', then yCrash agent should also be run with 'tomcat-user' permission.

Important Tip: In order to detect memory related problems, you need to enable GC logging on your application. You can enable GC logging on your application, by passing the arguments mentioned here.

Help: If you encounter any issues during setup, contact our support team at support@tier1app.com. To see all yCrash agent arguments, please refer here.

How to analyze the artifacts generated by the yc-data-script?

You can analyze the artifacts captured by yc-data-script either manually or through yCrash server. yCrash server analyzes all the captured data and generates a root cause analysis report instantly. You can use the Bundle upload feature in the yCrash server to analyze the captured 360-degree data.

Advanced launch modes

You can launch yc-data-script in following 3 different modes:

  1. On-demand Mode: In this mode you can directly transmit 360-degree artifacts from your server to yCrash server for analysis.
  2. API Mode: In this mode you can integrate yc-data-script with your current monitoring tools such as AppDynamics, New Relic, Dynatrace, …
  3. M3 (Micro-metrics Monitoring) mode: In this mode, yc-data-script proactively detect performance outages much earlier before it surfaces

How to build the yc-data-script?

Please refer to any one of the following links if you want to build the yc-data-script in that corresponding operating system:

  1. Build yc-data-script in Windows
  2. Build yc-data-script in Linux
  3. Build yc-data-script in MacOS