Instrumenting scripts - AWS X-Ray

Instrumenting scripts

You can also instrument code that isn't part of your application. When the X-Ray daemon is running, it will relay any segments that it receives to X-Ray, even if they are not generated by the X-Ray SDK. Scorekeep uses its own scripts to instrument the build that compiles the application during deployment.

Example bin/build.sh – Instrumented build script
SEGMENT=$(python bin/xray_start.py) gradle build --quiet --stacktrace &> /var/log/gradle.log; GRADLE_RETURN=$? if (( GRADLE_RETURN != 0 )); then echo "Gradle failed with exit status $GRADLE_RETURN" >&2 python bin/xray_error.py "$SEGMENT" "$(cat /var/log/gradle.log)" exit 1 fi python bin/xray_success.py "$SEGMENT"

xray_start.py, xray_error.py and xray_success.py are simple Python scripts that construct segment objects, convert them to JSON documents, and send them to the daemon over UDP. If the Gradle build fails, you can find the error message by clicking on the scorekeep-build node in the X-Ray console trace map.

Diagram showing client connection to Scorekeep-build with average time of 14.6s and 0.07/min.
Timeline view showing Scorekeep-build process with 14.6 second duration and warning icon.
Error message showing build failure due to missing ElasticBeanstalkPlugin symbol in RdsWebConfig class.