From 6441c84c1615548667a2065358deec284716f3d0 Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 1 Oct 2024 16:16:15 -0400 Subject: [PATCH 01/13] Add missing JMX metrics for ContainerInsights. --- .../src/main/resources/jmx/rules/jvm.yaml | 31 ++++ .../src/main/resources/jmx/rules/tomcat.yaml | 134 ++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index b2c29cfbc2..daaa6f8322 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -54,10 +54,37 @@ rules: ThreadCount: metric: count desc: Number of threads + DaemonThreadCount: + metric: daemon + desc: Number of daemon threads - bean: java.lang:type=OperatingSystem,* prefix: jvm.cpu. type: gauge mapping: + TotalSwapSpaceSize: + metric: jvm.system.swap.space.total + desc: The host swap memory size in bytes + unit: by + FreeSwapSpaceSize: + metric: jvm.system.swap.space.free + desc: The amount of available swap memory in bytes + unit: by + TotalPhysicalMemorySize: + metric: jvm.system.physical.memory.total + desc: The total physical memory size in host + unit: by + FreePhysicalMemorySize: + metric: jvm.system.physical.memory.free + desc: The amount of free physical memory in host + unit: by + AvailableProcessors: + metric: jvm.system.available.processors + desc: The number of available processors + unit: "1" + SystemCpuLoad: + metric: jvm.system.cpu.utilization + desc: The current load of CPU in host + unit: "1" ProcessCpuTime: metric: time unit: ns @@ -66,3 +93,7 @@ rules: metric: recent_utilization unit: "1" desc: Recent CPU utilization for the process + OpenFileDescriptorCount: + metric: jvm.fd.open.count + desc: The number of opened file descriptors + unit: "1" diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml new file mode 100644 index 0000000000..587c59f7a6 --- /dev/null +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml @@ -0,0 +1,134 @@ +--- +rules: + - bean: Catalina:type=Manager,host=localhost,context=* + unit: sessions + type: gauge + mapping: + activeSessions: + metric: tomcat.sessions + desc: The number of active sessions. + rejectedSessions: + metric: tomcat.rejected_sessions + desc: The number of rejected sessions. + - bean: Catalina:type=GlobalRequestProcessor,name=* + metricAttribute: + name: param(name) + mapping: + errorCount: + metric: tomcat.errors + type: counter + unit: errors + desc: The number of errors encountered. + requestCount: + metric: tomcat.request_count + type: counter + unit: requests + desc: The total requests. + maxTime: + metric: tomcat.max_time + type: gauge + unit: ms + desc: Maximum time to process a request + processingTime: + metric: tomcat.processing_time + type: counter + unit: ms + desc: The total processing time. + bytesReceived: + metric: tomcat.traffic + metricAttribute: + direction: const(received) + type: counter + unit: by + desc: The number of bytes transmitted and received. + bytesSent: + metric: tomcat.traffic + metricAttribute: + direction: const(sent) + type: counter + unit: by + desc: The number of bytes transmitted and received. + - bean: Catalina:type=ThreadPool,name=* + metricAttribute: + name: param(name) + mapping: + currentThreadCount: + metric: tomcat.threads + metricAttribute: + state: const(idle) + type: gauge + unit: threads + desc: The number of threads + currentThreadsBusy: + metric: tomcat.threads + metricAttribute: + state: const(busy) + type: gauge + unit: threads + desc: The number of threads + - bean: Tomcat:type=Manager,host=localhost,context=* + unit: sessions + type: gauge + mapping: + activeSessions: + metric: tomcat.sessions + desc: The number of active sessions. + rejectedSessions: + metric: tomcat.rejected_sessions + desc: The number of rejected sessions. + - bean: Tomcat:type=GlobalRequestProcessor,name=* + metricAttribute: + name: param(name) + mapping: + errorCount: + metric: tomcat.errors + type: counter + unit: errors + desc: The number of errors encountered. + requestCount: + metric: tomcat.request_count + type: counter + unit: requests + desc: The total requests. + maxTime: + metric: tomcat.max_time + type: gauge + unit: ms + desc: Maximum time to process a request + processingTime: + metric: tomcat.processing_time + type: counter + unit: ms + desc: The total processing time. + bytesReceived: + metric: tomcat.traffic + metricAttribute: + direction: const(received) + type: counter + unit: by + desc: The number of bytes transmitted and received. + bytesSent: + metric: tomcat.traffic + metricAttribute: + direction: const(sent) + type: counter + unit: by + desc: The number of bytes transmitted and received. + - bean: Tomcat:type=ThreadPool,name=* + metricAttribute: + name: param(name) + mapping: + currentThreadCount: + metric: tomcat.threads + metricAttribute: + state: const(idle) + type: gauge + unit: threads + desc: The number of threads + currentThreadsBusy: + metric: tomcat.threads + metricAttribute: + state: const(busy) + type: gauge + unit: threads + desc: The number of threads \ No newline at end of file From b2ec0d47464ab554bf6b7db732e3bc2dd0fad0a4 Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 1 Oct 2024 16:20:03 -0400 Subject: [PATCH 02/13] Fix naming. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index daaa6f8322..b87146514a 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -58,7 +58,6 @@ rules: metric: daemon desc: Number of daemon threads - bean: java.lang:type=OperatingSystem,* - prefix: jvm.cpu. type: gauge mapping: TotalSwapSpaceSize: @@ -86,11 +85,11 @@ rules: desc: The current load of CPU in host unit: "1" ProcessCpuTime: - metric: time + metric: jvm.cpu.time unit: ns desc: CPU time used ProcessCpuLoad: - metric: recent_utilization + metric: jvm.cpu.recent_utilization unit: "1" desc: Recent CPU utilization for the process OpenFileDescriptorCount: From 37e88a2022bb97166dfc40368d326a174f118a1b Mon Sep 17 00:00:00 2001 From: musa-asad Date: Mon, 7 Oct 2024 18:35:42 -0400 Subject: [PATCH 03/13] Update naming. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index b87146514a..aa422de7b7 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -84,6 +84,10 @@ rules: metric: jvm.system.cpu.utilization desc: The current load of CPU in host unit: "1" + CpuLoad: + metric: jvm.system.cpu.utilization + desc: The current load of CPU in host + unit: "1" ProcessCpuTime: metric: jvm.cpu.time unit: ns @@ -93,6 +97,6 @@ rules: unit: "1" desc: Recent CPU utilization for the process OpenFileDescriptorCount: - metric: jvm.fd.open.count + metric: jvm.open_file_descriptor.count desc: The number of opened file descriptors unit: "1" From 7685d4cf576e3957d5462351f8b586bf210b7217 Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 8 Oct 2024 15:22:00 -0400 Subject: [PATCH 04/13] Remove CpuLoad. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index aa422de7b7..dba065b873 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -84,10 +84,6 @@ rules: metric: jvm.system.cpu.utilization desc: The current load of CPU in host unit: "1" - CpuLoad: - metric: jvm.system.cpu.utilization - desc: The current load of CPU in host - unit: "1" ProcessCpuTime: metric: jvm.cpu.time unit: ns From 1859acc683f307b3c6f8a742e6b7861d90ba39eb Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 8 Oct 2024 20:05:33 -0400 Subject: [PATCH 05/13] Update README.md. --- instrumentation/jmx-metrics/src/main/resources/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/README.md b/instrumentation/jmx-metrics/src/main/resources/README.md index 4c4d72cc38..163cdaaff1 100644 --- a/instrumentation/jmx-metrics/src/main/resources/README.md +++ b/instrumentation/jmx-metrics/src/main/resources/README.md @@ -10,4 +10,8 @@ OTEL_EXPERIMENTAL_METRICS_VIEW_CONFIG: classpath:/jmx/view.yaml ### rules/*.yaml The rules are a translation of the JMX Metric Gatherer's [target systems](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/jmx-metrics/src/main/resources/target-systems) -based on the [JMX metric rule YAML schema](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md#basic-syntax). \ No newline at end of file +based on the [JMX metric rule YAML schema](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md#basic-syntax). + + +### SystemCpuLoad +The `SystemCpuLoad` metric is deprecated and Java versions 14+ now use `CpuLoad`. However, to avoid emitting double metrics, we stick to using `SystemCpuLoad`. \ No newline at end of file From e6c214e2c210fd10b448b69641647dff1c1720ec Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 8 Oct 2024 20:06:31 -0400 Subject: [PATCH 06/13] Update README.md. --- instrumentation/jmx-metrics/src/main/resources/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/README.md b/instrumentation/jmx-metrics/src/main/resources/README.md index 163cdaaff1..c98c328f96 100644 --- a/instrumentation/jmx-metrics/src/main/resources/README.md +++ b/instrumentation/jmx-metrics/src/main/resources/README.md @@ -14,4 +14,4 @@ based on the [JMX metric rule YAML schema](https://github.com/open-telemetry/ope ### SystemCpuLoad -The `SystemCpuLoad` metric is deprecated and Java versions 14+ now use `CpuLoad`. However, to avoid emitting double metrics, we stick to using `SystemCpuLoad`. \ No newline at end of file +The `SystemCpuLoad` metric is deprecated and Java versions 14+ now use `CpuLoad`. However, to avoid emitting double metrics, we stick to using `SystemCpuLoad` as it still works on newer versions. \ No newline at end of file From 783569ed11884e62397bb30bbcfd43d8221e9114 Mon Sep 17 00:00:00 2001 From: musa-asad Date: Tue, 8 Oct 2024 20:07:07 -0400 Subject: [PATCH 07/13] Removed spacing. --- instrumentation/jmx-metrics/src/main/resources/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/README.md b/instrumentation/jmx-metrics/src/main/resources/README.md index c98c328f96..f27c5e22a9 100644 --- a/instrumentation/jmx-metrics/src/main/resources/README.md +++ b/instrumentation/jmx-metrics/src/main/resources/README.md @@ -12,6 +12,5 @@ OTEL_EXPERIMENTAL_METRICS_VIEW_CONFIG: classpath:/jmx/view.yaml The rules are a translation of the JMX Metric Gatherer's [target systems](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/jmx-metrics/src/main/resources/target-systems) based on the [JMX metric rule YAML schema](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md#basic-syntax). - ### SystemCpuLoad The `SystemCpuLoad` metric is deprecated and Java versions 14+ now use `CpuLoad`. However, to avoid emitting double metrics, we stick to using `SystemCpuLoad` as it still works on newer versions. \ No newline at end of file From d44bc82509a20ded11ff6d8a6e66ce72696d0a03 Mon Sep 17 00:00:00 2001 From: musa-asad Date: Thu, 10 Oct 2024 15:01:36 -0400 Subject: [PATCH 08/13] Add context. --- .../jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml index 587c59f7a6..f5584797a1 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/tomcat.yaml @@ -1,6 +1,8 @@ --- rules: - bean: Catalina:type=Manager,host=localhost,context=* + metricAttribute: + context: param(context) unit: sessions type: gauge mapping: @@ -67,6 +69,8 @@ rules: unit: threads desc: The number of threads - bean: Tomcat:type=Manager,host=localhost,context=* + metricAttribute: + context: param(context) unit: sessions type: gauge mapping: From 7124faee3bba9cdb964181c5547a8f26b03bb5ec Mon Sep 17 00:00:00 2001 From: Musa Date: Thu, 10 Oct 2024 17:42:17 -0400 Subject: [PATCH 09/13] Use percentage. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index dba065b873..075b1204ee 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -83,7 +83,7 @@ rules: SystemCpuLoad: metric: jvm.system.cpu.utilization desc: The current load of CPU in host - unit: "1" + unit: % ProcessCpuTime: metric: jvm.cpu.time unit: ns From 2a6a0f3e766b2c286b2c6362083fbdf363e00d1e Mon Sep 17 00:00:00 2001 From: Musa Date: Thu, 10 Oct 2024 17:43:41 -0400 Subject: [PATCH 10/13] Switch back. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index 075b1204ee..dba065b873 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -83,7 +83,7 @@ rules: SystemCpuLoad: metric: jvm.system.cpu.utilization desc: The current load of CPU in host - unit: % + unit: "1" ProcessCpuTime: metric: jvm.cpu.time unit: ns From 359402ecd668d65bbe5f9ec7aaef7f675b84c7cb Mon Sep 17 00:00:00 2001 From: Musa Date: Thu, 10 Oct 2024 20:21:43 -0400 Subject: [PATCH 11/13] Update daemon name. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index 28dc46eb3a..bbf5806931 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -75,14 +75,13 @@ rules: desc: The maximum amount of memory can be used for the memory pool - bean: java.lang:type=Threading unit: "1" - prefix: jvm.threads. type: gauge mapping: ThreadCount: - metric: count + metric: jvm.threads.count desc: Number of threads DaemonThreadCount: - metric: daemon + metric: jvm.daemon_threads.count desc: Number of daemon threads - bean: java.lang:type=OperatingSystem,* prefix: jvm.cpu. From afca329030db8b992776696b6f30e577b29de594 Mon Sep 17 00:00:00 2001 From: Musa Date: Thu, 10 Oct 2024 20:29:42 -0400 Subject: [PATCH 12/13] Fix OS bean name. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index bbf5806931..b74cab5b10 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -83,7 +83,7 @@ rules: DaemonThreadCount: metric: jvm.daemon_threads.count desc: Number of daemon threads - - bean: java.lang:type=OperatingSystem,* + - bean: java.lang:type=OperatingSystem prefix: jvm.cpu. type: gauge mapping: From 2c250b680d3e78da8b8a488e86efeac66a88609c Mon Sep 17 00:00:00 2001 From: Musa Date: Thu, 10 Oct 2024 20:31:04 -0400 Subject: [PATCH 13/13] Remove prefix. --- .../jmx-metrics/src/main/resources/jmx/rules/jvm.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml index b74cab5b10..9119b59b06 100644 --- a/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml +++ b/instrumentation/jmx-metrics/src/main/resources/jmx/rules/jvm.yaml @@ -84,7 +84,6 @@ rules: metric: jvm.daemon_threads.count desc: Number of daemon threads - bean: java.lang:type=OperatingSystem - prefix: jvm.cpu. type: gauge mapping: TotalSwapSpaceSize: