|
1 | | -### Usage of argument options: |
2 | | -```bash |
3 | | -Usage of yc: |
4 | | - -a string |
5 | | - The APP Name of the target |
6 | | - -c string |
7 | | - The config file path to load |
8 | | - -cmd value |
9 | | - The command to be executed, should be paired with '-urlParams' together |
10 | | - -d Delete logs folder created during analyse, default is false |
11 | | - -gcPath string |
12 | | - The gc log file to be uploaded while it exists |
13 | | - -hd |
14 | | - Capture heap dump, default is false |
15 | | - -hdPath string |
16 | | - The heap dump file to be uploaded while it exists |
17 | | - -j string |
18 | | - The java home path to be used. Default will try to use os env 'JAVA_HOME' if 'JAVA_HOME' is not empty, for example: /usr/lib/jvm/java-8-openjdk-amd64 |
19 | | - -k string |
20 | | - The API Key that will be used to make API requests, for example: tier1app@12312-12233-1442134-112 |
21 | | - -p int |
22 | | - The process Id of the target, for example: 3121 |
23 | | - -s string |
24 | | - The server url that will be used to upload data, for example: https://ycrash.companyname.com |
25 | | - -tdPath string |
26 | | - The thread dump file to be uploaded while it exists |
27 | | - -urlParams value |
28 | | - The params to be added at the end of upload request url, should be paired with '-cmd' together |
29 | | - -version |
30 | | - Show the version of this program |
| 1 | +# yc-data-script |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +## What does the yc-data-script do? |
| 6 | + |
| 7 | +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: |
| 8 | + |
| 9 | +1. Garbage collection log |
| 10 | +2. Thread dump |
| 11 | +3. Heap dump |
| 12 | +4. Heap substitute |
| 13 | +5. top |
| 14 | +6. ps |
| 15 | +7. top -H |
| 16 | +8. Disk usage |
| 17 | +9. dmesg |
| 18 | +10. netstat |
| 19 | +11. ping |
| 20 | +12. vmstat |
| 21 | +13. iostat |
| 22 | +14. Kernel parameters |
| 23 | +15. Application Log |
| 24 | +16. Metadata |
| 25 | + |
| 26 | +## How to run the yc-data-script? |
| 27 | + |
| 28 | +1. Download latest yc-data-script from [this](https://tier1app.com/dist/ycrash/yc-agent-latest.zip) location |
| 29 | +2. Unzip the downloaded ```yc-agent-latest.zip``` file. (Say you are unzipping in '/opt/workspace/yc-agent-latest' folder) |
| 30 | +3. In the unzipped folder you will find yc-data-script by operating system: |
| 31 | + |
| 32 | +a) ```linux/yc``` - If you are running on Unix/Linux, then use this script. |
| 33 | + |
| 34 | +b) ```windows/yc.exe``` - If you are running on Windows, then use this script. |
| 35 | + |
| 36 | +c) ```mac/yc``` - If you are running on MAC, then use this script. |
31 | 37 |
|
32 | 38 | ``` |
33 | | -### Example of config file: |
34 | | -```yaml |
35 | | -version: "1" |
36 | | -options: |
37 | | - a: name |
38 | | - d: false |
39 | | - hd: false |
40 | | - j: /usr/lib/jvm/java-8-openjdk-amd64 |
41 | | - k: buggycompany@e094aasdsa-c3eb-4c9a-8254-f0dd107245cc |
42 | | - p: 3121 |
43 | | - s: https://gceasy.io |
44 | | - gcPath: /var/log/gc.log |
45 | | - hdPath: /var/log/heapdump.log |
46 | | - tdPath: /var/log/threaddump.log |
47 | | - cmds: |
48 | | - - urlParams: dt=vmstat |
49 | | - cmd: vmstat 1 1 |
| 39 | +./yc -j {JAVA_HOME} -onlyCapture -p {PID} -hd |
50 | 40 | ``` |
| 41 | +Where, |
| 42 | + |
| 43 | +**JAVA_HOME** is the home directory where JDK is installed |
| 44 | + |
| 45 | +**PID** is the target JVM's process ID |
| 46 | + |
| 47 | +**Example:** |
| 48 | + |
| 49 | +``` |
| 50 | +./yc -j /usr/java/jdk1.8.0_141 -onlyCapture -p 15326 -hd |
| 51 | +``` |
| 52 | + |
| 53 | +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'. |
| 54 | + |
| 55 | +**Example:** 'yc-2021-03-06T14-02-42.zip'. |
| 56 | + |
| 57 | +## How to analyze the artifacts generated by the yc-data-script? |
| 58 | + |
| 59 | +You can analyze the artifacts captured by yc-data-script either manually or through [yCrash server](https://ycrash.io/). yCrash server analyzes all the captured data and generates a root cause analysis report instantly. You can use the [Bundle upload](https://docs.ycrash.io/ycrash-features/bundle-upload.html#step-1-go-to-upload-incident-form) feature in the yCrash server to analyze the captured 360-degree data. |
| 60 | + |
| 61 | +### Advanced launch modes |
| 62 | + |
| 63 | +You can launch yc-data-script in following [3 different modes](https://docs.ycrash.io/ycrash-agent/launch-modes.html#launch-modes): |
| 64 | + |
| 65 | +1. **On-demand Mode:** In this mode you can directly transmit 360-degree artifacts from your server to yCrash server for analysis. |
| 66 | +2. **API Mode:** In this mode you can integrate yc-data-script with your current monitoring tools such as AppDynamics, New Relic, Dynatrace, … |
| 67 | +3. **M3 (Micro-metrics Monitoring) mode:** In this mode, yc-data-script proactively detect performance outages much earlier before it surfaces |
| 68 | + |
| 69 | +## How to build the yc-data-script? |
| 70 | + |
| 71 | +Please refer to any one of the following links if you want to build the yc-data-script in that corresponding operating system: |
51 | 72 |
|
52 | | -The config file is using yaml format. The name of the option keys is same as the name of argument options. |
53 | | -
|
54 | | -'-s': the server url that will be used to upload data. |
55 | | -'-k': the API key that will be used to make API requests. |
56 | | -'-j': the java home path to be used. Default will try to use os env 'JAVA_HOME' if 'JAVA_HOME' is not empty. |
57 | | -'-a': the app name of the target. |
58 | | -'-p': the pid of the target. |
59 | | -'-d': delete logs folder created during analyse, default is false. |
60 | | -'-hd': capture heap dump, default is false. |
61 | | -'-gcPath': the gc log file to be uploaded while it exists, otherwise it will captures one if failed to get the path from '-Xlog:gc' or '-Xloggc'. |
62 | | -'-hdPath': the heap dump file to be uploaded while it exists. |
63 | | -'-tdPath': the thread dump file to be uploaded while it exists, otherwise it will captures one. |
64 | | -
|
65 | | -Only for argument options: |
66 | | -'-version' show the version of this program. |
67 | | -'-c': the config file path to load. |
68 | | -
|
69 | | -### Example to capture info from target with pid 3121: |
70 | | -
|
71 | | -`yc -p 3121 -s https://gceasy.io -k testCompany@e094a34e-c3eb-4c9a-8254-f0dd107245cc -j /usr/lib/jvm/java-11-openjdk-amd64 -c ./config.yaml` |
72 | | -
|
73 | | -### Example to execute custom commands after the capturing: |
74 | | -
|
75 | | -- By arguments. One '-urlParams' should be paired with one '-cmd'. |
76 | | -`yc ... -urlParams dt=vmstat -cmd "vmstat 1 1" -urlParams dt=pidstat -cmd "pidstat 1 1" ...` |
77 | | -- By config file. |
78 | | -```yaml |
79 | | - cmds: |
80 | | - - urlParams: dt=vmstat |
81 | | - cmd: vmstat 1 1 |
82 | | -``` |
| 73 | +1. Build yc-data-script in [Windows](/docs/Build%20yc%20agent%20in%20Windows.pdf) |
| 74 | +2. Build yc-data-script in [Linux](/docs/build-yc-agent-linux.md) |
| 75 | +3. Build yc-data-script in [MacOS](/docs/build-yc-agent-macos.md) |
0 commit comments