Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add missing JMX metrics for ContainerInsights. (#898)
### Description of changes * Added missing metrics from the ContainerInsights [dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights-Prometheus-metrics.html#ContainerInsights-Prometheus-metrics-jmx) not included in the [agent](https://github.com/aws-observability/aws-otel-java-instrumentation/blob/c39b76830931899a678f72d502dafe33329adde5/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml)'s solution for JMX. * Compared the current spec files for JVM and Tomcat with the dashboard to see what was missing. * Set up an EC2 cluster, a Tomcat application, and JMXTerm to find the bean and metric names for the missing metrics. * Added these to the spec file based on appropriate types and the naming convention from [OTel](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md). * Then, the ADOT Jar image was built and tested with the `amazon-cloudwatch-agent-operator` and `helm-charts` on an EKS cluster with a custom Tomcat deployment, which correctly produced the correct metrics: * `./scripts/local_patch.sh && ./gradlew build` * `docker build --platform linux/amd64 -t adot-autoinstrumentation-java .` * `[add docker image to ECR]` ### Manual testing For testing, I decided to use this built image with the CloudWatch Agent to see if these metrics are able to be emitted and tracked on the CW console. #### Configuration ``` { "metrics": { "namespace": "tomcat", "metrics_collected": { "jmx": { "jvm": { "measurement": [ "jvm.system.swap.space.total", "jvm.system.swap.space.free", "jvm.system.physical.memory.total", "jvm.system.physical.memory.free", "jvm.system.available.processors", "jvm.system.cpu.utilization", "jvm.open_file_descriptor.count", "jvm.daemon_threads.count", "jvm.threads.count" ] }, "tomcat": { "measurement": [ "tomcat.rejected_sessions", "tomcat.sessions" ] } } } } } ``` #### CW Console <img width="949" alt="Screenshot 2024-10-04 at 11 08 51 AM" src="https://github.com/user-attachments/assets/e9f3869b-f17d-4d17-81b5-0c0b97272012"> By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Mengyi Zhou (bjrara) <[email protected]>
- Loading branch information