Skip to content

Commit

Permalink
add namespace to jvm metric attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
zeitlinger committed Aug 7, 2023
1 parent 007a4a8 commit b4aa9c0
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 27 deletions.
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,25 @@ release.
([#224](https://github.com/open-telemetry/semantic-conventions/pull/224))
- Update HTTP `network.protocol.version` examples to match HTTP RFCs.
([#228](https://github.com/open-telemetry/semantic-conventions/pull/228))
- BREAKING: Add namespaces to JVM metric attributes ([#20](https://github.com/open-telemetry/semantic-conventions/pull/20)).
- Rename attributes `type` to `jvm.memory.type`, `pool` to `jvm.memory.pool.name`
- Applies to metrics:
- `process.runtime.jvm.memory.usage`
- `process.runtime.jvm.memory.init`
- `process.runtime.jvm.memory.committed`
- `process.runtime.jvm.memory.limit`
- `process.runtime.jvm.memory.usage_after_last_gc`
- Rename attributes `gc`, `action` to `jvm.gc.name`, `jvm.gc.action`
- Applies to metrics:
- `process.runtime.jvm.gc.duration`
- Rename attribute `daemon` to `thread.daemon`
- Applies to metrics:
- `process.runtime.jvm.threads.count`
- Rename attribute `pool` to `jvm.buffer.pool.name`
- Applies to metrics:
- `process.runtime.jvm.buffer.usage`
- `process.runtime.jvm.buffer.limit`
- `process.runtime.jvm.buffer.count`

## v1.21.0 (2023-07-13)

Expand Down
1 change: 1 addition & 0 deletions docs/general/attributes.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ a thread that started a span.
|---|---|---|---|---|
| `thread.id` | int | Current "managed" thread ID (as opposed to OS thread ID). | `42` | Recommended |
| `thread.name` | string | Current thread name. | `main` | Recommended |
| `thread.daemon` | boolean | Whether the thread is daemon or not. | | Recommended |
<!-- endsemconv -->

Examples of where `thread.id` and `thread.name` can be extracted from:
Expand Down
42 changes: 21 additions & 21 deletions docs/system/runtime-environment-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,12 @@ This metric is obtained from [`MemoryPoolMXBean#getUsage()`](https://docs.oracle
<!-- semconv metric.process.runtime.jvm.memory.usage(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `pool` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |
| `jvm.memory.type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `jvm.memory.pool.name` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |

**[1]:** Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).

`type` MUST be one of the following:
`jvm.memory.type` MUST be one of the following:

| Value | Description |
|---|---|
Expand All @@ -118,12 +118,12 @@ This metric is obtained from [`MemoryPoolMXBean#getUsage()`](https://docs.oracle
<!-- semconv metric.process.runtime.jvm.memory.committed(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `pool` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |
| `jvm.memory.type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `jvm.memory.pool.name` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |

**[1]:** Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).

`type` MUST be one of the following:
`jvm.memory.type` MUST be one of the following:

| Value | Description |
|---|---|
Expand All @@ -145,12 +145,12 @@ This metric is obtained from [`MemoryPoolMXBean#getUsage()`](https://docs.oracle
<!-- semconv metric.process.runtime.jvm.memory.limit(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `pool` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |
| `jvm.memory.type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `jvm.memory.pool.name` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |

**[1]:** Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).

`type` MUST be one of the following:
`jvm.memory.type` MUST be one of the following:

| Value | Description |
|---|---|
Expand All @@ -172,12 +172,12 @@ This metric is obtained from [`MemoryPoolMXBean#getCollectionUsage()`](https://d
<!-- semconv metric.process.runtime.jvm.memory.usage_after_last_gc(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `pool` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |
| `jvm.memory.type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `jvm.memory.pool.name` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |

**[1]:** Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).

`type` MUST be one of the following:
`jvm.memory.type` MUST be one of the following:

| Value | Description |
|---|---|
Expand All @@ -204,8 +204,8 @@ of `[]` (single bucket histogram capturing count, sum, min, max).
<!-- semconv metric.process.runtime.jvm.gc.duration(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `gc` | string | Name of the garbage collector. [1] | `G1 Young Generation`; `G1 Old Generation` | Recommended |
| `action` | string | Name of the garbage collector action. [2] | `end of minor GC`; `end of major GC` | Recommended |
| `jvm.gc.name` | string | Name of the garbage collector. [1] | `G1 Young Generation`; `G1 Old Generation` | Recommended |
| `jvm.gc.action` | string | Name of the garbage collector action. [2] | `end of minor GC`; `end of major GC` | Recommended |

**[1]:** Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).

Expand All @@ -228,7 +228,7 @@ Note that this is the number of platform threads (as opposed to virtual threads)
<!-- semconv metric.process.runtime.jvm.threads.count(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `daemon` | boolean | Whether the thread is daemon or not. | | Recommended |
| [`thread.daemon`](../general/attributes.md) | boolean | Whether the thread is daemon or not. | | Recommended |
<!-- endsemconv -->

### Metric: `process.runtime.jvm.classes.loaded`
Expand Down Expand Up @@ -325,12 +325,12 @@ This metric is obtained from [`MemoryPoolMXBean#getUsage()`](https://docs.oracle
<!-- semconv metric.process.runtime.jvm.memory.init(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `pool` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |
| `jvm.memory.type` | string | The type of memory. | `heap`; `non_heap` | Recommended |
| `jvm.memory.pool.name` | string | Name of the memory pool. [1] | `G1 Old Gen`; `G1 Eden space`; `G1 Survivor Space` | Recommended |

**[1]:** Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).

`type` MUST be one of the following:
`jvm.memory.type` MUST be one of the following:

| Value | Description |
|---|---|
Expand Down Expand Up @@ -385,7 +385,7 @@ This metric is obtained from [`BufferPoolMXBean#getMemoryUsed()`](https://docs.o
<!-- semconv metric.process.runtime.jvm.buffer.usage(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `pool` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |
| `jvm.buffer.pool.name` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |

**[1]:** Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).
<!-- endsemconv -->
Expand All @@ -404,7 +404,7 @@ This metric is obtained from [`BufferPoolMXBean#getTotalCapacity()`](https://doc
<!-- semconv metric.process.runtime.jvm.buffer.limit(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `pool` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |
| `jvm.buffer.pool.name` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |

**[1]:** Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).
<!-- endsemconv -->
Expand All @@ -423,7 +423,7 @@ This metric is obtained from [`BufferPoolMXBean#getCount()`](https://docs.oracle
<!-- semconv metric.process.runtime.jvm.buffer.count(full) -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `pool` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |
| `jvm.buffer.pool.name` | string | Name of the buffer pool. [1] | `mapped`; `direct` | Recommended |

**[1]:** Pool names are generally obtained via [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).
<!-- endsemconv -->
Expand Down
5 changes: 4 additions & 1 deletion model/metrics/process-runtime-jvm-metrics-experimental.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ groups:
- id: attributes.process.runtime.jvm.buffer
type: attribute_group
brief: "Describes JVM buffer metric attributes."
prefix: jvm.buffer
attributes:
- ref: pool
- id: pool.name
type: string
requirement_level: recommended
brief: Name of the buffer pool.
examples: [ "mapped", "direct" ]
note: >
Expand Down
10 changes: 5 additions & 5 deletions model/metrics/process-runtime-jvm-metrics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ groups:
- id: attributes.process.runtime.jvm.memory
type: attribute_group
brief: "Describes JVM memory metric attributes."
prefix: jvm.memory
attributes:
- id: type
type:
Expand All @@ -16,7 +17,7 @@ groups:
requirement_level: recommended
brief: The type of memory.
examples: ["heap", "non_heap"]
- id: pool
- id: pool.name
type: string
requirement_level: recommended
brief: Name of the memory pool.
Expand Down Expand Up @@ -63,8 +64,9 @@ groups:
brief: "Duration of JVM garbage collection actions."
instrument: histogram
unit: "s"
prefix: jvm.gc
attributes:
- id: gc
- id: name
type: string
requirement_level: recommended
brief: Name of the garbage collector.
Expand All @@ -88,9 +90,7 @@ groups:
instrument: updowncounter
unit: "{thread}"
attributes:
- id: daemon
brief: "Whether the thread is daemon or not."
type: boolean
- ref: thread.daemon
requirement_level: recommended

- id: metric.process.runtime.jvm.classes.loaded
Expand Down
3 changes: 3 additions & 0 deletions model/trace/general.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,9 @@ groups:
brief: >
Current thread name.
examples: main
- id: daemon
brief: "Whether the thread is daemon or not."
type: boolean
- id: code
prefix: code
type: span
Expand Down
15 changes: 15 additions & 0 deletions schema-next.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@ versions:
- rename_metrics:
http.client.duration: http.client.request.duration
http.server.duration: http.server.request.duration
# https://github.com/open-telemetry/opentelemetry-specification/pull/3464
- rename_attributes:
attribute_map:
type: jvm.memory.type
pool: jvm.memory.pool.name
- rename_attributes:
attribute_map:
name: jvm.gc.name
action: jvm.gc.action
- rename_attributes:
attribute_map:
daemon: thread.daemon
- rename_attributes:
attribute_map:
pool: jvm.buffer.pool.name
1.21.0:
spans:
changes:
Expand Down

0 comments on commit b4aa9c0

Please sign in to comment.