Skip to content

Commit 6a7f945

Browse files
committed
Add configuration for JMX metrics.
1 parent ff295b7 commit 6a7f945

File tree

10 files changed

+578
-0
lines changed

10 files changed

+578
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
plugins {
17+
java
18+
id("com.github.johnrengelman.shadow")
19+
}
20+
21+
base.archivesBaseName = "aws-instrumentation-jmx-metrics"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
## JMX Metrics
2+
The package provides all the configurations needed to have the [JMX Metric Insight](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/jmx-metrics/javaagent/README.md)
3+
instrumentation support the same metrics as the [JMX Metric Gatherer](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/jmx-metrics).
4+
5+
It is required at least until [open-telemetry/opentelemetry-java-instrumentation#9765](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/9765) is addressed.
6+
7+
### view.yaml
8+
A [Metric View](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#view) is functionality the OpenTelemetry SDK
9+
supports that allows users to customize the metrics outputted by the SDK. The SDK also supports [configuring views
10+
via YAML](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/incubator#view-file-configuration),
11+
which can be specified via property or environment variable. In this case, the view is configured to only retain metrics
12+
from the JMX Metric Insight instrumentation.
13+
14+
```
15+
OTEL_EXPERIMENTAL_METRICS_VIEW_CONFIG: classpath:/jmx/view.yaml
16+
```
17+
18+
### rules/*.yaml
19+
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)
20+
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).
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
rules:
3+
- bean: java.lang:type=ClassLoading
4+
unit: "1"
5+
prefix: jvm.classes.
6+
type: gauge
7+
mapping:
8+
LoadedClassCount:
9+
metric: loaded
10+
desc: Number of loaded classes
11+
- bean: java.lang:type=GarbageCollector,*
12+
prefix: jvm.gc.collections.
13+
type: counter
14+
metricAttribute:
15+
name: param(name)
16+
mapping:
17+
CollectionCount:
18+
metric: count
19+
unit: "1"
20+
desc: Total number of collections that have occurred
21+
CollectionTime:
22+
metric: elapsed
23+
unit: ms
24+
desc: The approximate accumulated collection elapsed time in milliseconds
25+
- bean: java.lang:type=Memory
26+
unit: by
27+
prefix: jvm.memory.
28+
type: gauge
29+
mapping:
30+
HeapMemoryUsage.used:
31+
metric: heap
32+
desc: The current heap usage
33+
NonHeapMemoryUsage.used:
34+
metric: nonheap
35+
desc: The current non-heap usage
36+
- bean: java.lang:type=MemoryPool,*
37+
unit: by
38+
prefix: jvm.memory.pool.
39+
type: gauge
40+
metricAttribute:
41+
name: param(name)
42+
mapping:
43+
Usage.used:
44+
metric: usage
45+
desc: Current memory pool usage
46+
- bean: java.lang:type=Threading
47+
unit: "1"
48+
prefix: jvm.threads.
49+
type: gauge
50+
mapping:
51+
ThreadCount:
52+
metric: count
53+
desc: Number of threads
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
rules:
3+
- bean: kafka.consumer:client-id=*,type=consumer-fetch-manager-metrics
4+
metricAttribute:
5+
client-id: param(client-id)
6+
mapping:
7+
fetch-rate:
8+
metric: kafka.consumer.fetch-rate
9+
type: gauge
10+
desc: The number of fetch requests for all topics per second
11+
unit: "1"
12+
records-lag-max:
13+
metric: kafka.consumer.records-lag-max
14+
type: gauge
15+
desc: Number of messages the consumer lags behind the producer
16+
unit: "1"
17+
bytes-consumed-rate:
18+
metric: kafka.consumer.total.bytes-consumed-rate
19+
type: gauge
20+
desc: The average number of bytes consumed for all topics per second
21+
unit: by
22+
fetch-size-avg:
23+
metric: kafka.consumer.total.fetch-size-avg
24+
type: gauge
25+
desc: The average number of bytes fetched per request for all topics
26+
unit: by
27+
records-consumed-rate:
28+
metric: kafka.consumer.total.records-consumed-rate
29+
type: gauge
30+
desc: The average number of records consumed for all topics per second
31+
unit: "1"
32+
- bean: kafka.consumer:client-id=*,topic=*,type=consumer-fetch-manager-metrics
33+
metricAttribute:
34+
client-id: param(client-id)
35+
topic: param(topic)
36+
mapping:
37+
bytes-consumed-rate:
38+
metric: kafka.consumer.bytes-consumed-rate
39+
type: gauge
40+
desc: The average number of bytes consumed per second
41+
unit: by
42+
fetch-size-avg:
43+
metric: kafka.consumer.fetch-size-avg
44+
type: gauge
45+
desc: The average number of bytes fetched per request
46+
unit: by
47+
records-consumed-rate:
48+
metric: kafka.consumer.records-consumed-rate
49+
type: gauge
50+
desc: The average number of records consumed per second
51+
unit: "1"
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
rules:
3+
- bean: kafka.producer:client-id=*,type=producer-metrics
4+
metricAttribute:
5+
client-id: param(client-id)
6+
mapping:
7+
io-wait-time-ns-avg:
8+
metric: kafka.producer.io-wait-time-ns-avg
9+
type: gauge
10+
desc: The average length of time the I/O thread spent waiting for a socket ready for reads or writes
11+
unit: ns
12+
outgoing-byte-rate:
13+
metric: kafka.producer.outgoing-byte-rate
14+
type: gauge
15+
desc: The average number of outgoing bytes sent per second to all servers
16+
unit: by
17+
request-latency-avg:
18+
metric: kafka.producer.request-latency-avg
19+
type: gauge
20+
desc: The average request latency
21+
unit: ms
22+
request-rate:
23+
metric: kafka-producer.request-rate
24+
type: gauge
25+
desc: The average number of requests sent per second
26+
unit: "1"
27+
response-rate:
28+
metric: kafka.producer.response-rate
29+
type: gauge
30+
desc: Responses received per second
31+
unit: "1"
32+
- bean: kafka.producer:client-id=*,topic=*,type=producer-topic-metrics
33+
metricAttribute:
34+
client-id: param(client-id)
35+
topic: param(topic)
36+
mapping:
37+
byte-rate:
38+
metric: kafka.producer.byte-rate
39+
type: gauge
40+
desc: The average number of bytes sent per second for a topic
41+
unit: by
42+
compression-rate:
43+
metric: kafka.producer.compression-rate
44+
type: gauge
45+
desc: The average compression rate of record batches for a topic
46+
unit: "1"
47+
record-error-rate:
48+
metric: kafka.producer.record-error-rate
49+
type: gauge
50+
desc: The average per-second number of record sends that resulted in errors for a topic
51+
unit: "1"
52+
record-retry-rate:
53+
metric: kafka.producer.record-retry-rate
54+
type: gauge
55+
desc: The average per-second number of retried record sends for a topic
56+
unit: "1"
57+
record-send-rate:
58+
metric: kafka.producer.record-send-rate
59+
type: gauge
60+
desc: The average number of records sent per second for a topic
61+
unit: "1"

0 commit comments

Comments
 (0)