Skip to content

Commit 996c805

Browse files
Copilotxrmx
andcommitted
Fix cpython.gc metrics to use correct attribute name
- Import CPYTHON_GC_GENERATION from semantic conventions - Replace "generation" with CPYTHON_GC_GENERATION constant - Change generation values from strings to integers (0, 1, 2) - Update tests to use correct attribute name "cpython.gc.generation" Co-authored-by: xrmx <12932+xrmx@users.noreply.github.com>
1 parent e4a1b10 commit 996c805

2 files changed

Lines changed: 17 additions & 14 deletions

File tree

instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@
112112
from opentelemetry.instrumentation.system_metrics.package import _instruments
113113
from opentelemetry.instrumentation.system_metrics.version import __version__
114114
from opentelemetry.metrics import CallbackOptions, Observation, get_meter
115+
from opentelemetry.semconv._incubating.attributes.cpython_attributes import (
116+
CPYTHON_GC_GENERATION,
117+
)
115118
from opentelemetry.semconv._incubating.metrics.process_metrics import (
116119
create_process_cpu_utilization,
117120
)
@@ -958,7 +961,7 @@ def _get_runtime_gc_collections(
958961
) -> Iterable[Observation]:
959962
"""Observer callback for garbage collection"""
960963
for index, stat in enumerate(gc.get_stats()):
961-
self._runtime_gc_collections_labels["generation"] = str(index)
964+
self._runtime_gc_collections_labels[CPYTHON_GC_GENERATION] = index
962965
yield Observation(
963966
stat["collections"], self._runtime_gc_collections_labels.copy()
964967
)
@@ -968,7 +971,7 @@ def _get_runtime_gc_collected_objects(
968971
) -> Iterable[Observation]:
969972
"""Observer callback for garbage collection collected objects"""
970973
for index, stat in enumerate(gc.get_stats()):
971-
self._runtime_gc_collected_objects_labels["generation"] = str(
974+
self._runtime_gc_collected_objects_labels[CPYTHON_GC_GENERATION] = (
972975
index
973976
)
974977
yield Observation(
@@ -981,9 +984,9 @@ def _get_runtime_gc_uncollectable_objects(
981984
) -> Iterable[Observation]:
982985
"""Observer callback for garbage collection uncollectable objects"""
983986
for index, stat in enumerate(gc.get_stats()):
984-
self._runtime_gc_uncollectable_objects_labels["generation"] = str(
985-
index
986-
)
987+
self._runtime_gc_uncollectable_objects_labels[
988+
CPYTHON_GC_GENERATION
989+
] = index
987990
yield Observation(
988991
stat["uncollectable"],
989992
self._runtime_gc_uncollectable_objects_labels.copy(),

instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -983,9 +983,9 @@ def test_runtime_get_gc_collections(self, mock_gc_get_stats):
983983
}
984984
)
985985
expected_gc_collections = [
986-
_SystemMetricsResult({"generation": "0"}, 10),
987-
_SystemMetricsResult({"generation": "1"}, 20),
988-
_SystemMetricsResult({"generation": "2"}, 30),
986+
_SystemMetricsResult({"cpython.gc.generation": 0}, 10),
987+
_SystemMetricsResult({"cpython.gc.generation": 1}, 20),
988+
_SystemMetricsResult({"cpython.gc.generation": 2}, 30),
989989
]
990990
self._test_metrics(
991991
"cpython.gc.collections",
@@ -1007,9 +1007,9 @@ def test_runtime_get_gc_collected_objects(self, mock_gc_get_stats):
10071007
}
10081008
)
10091009
expected_gc_collected_objects = [
1010-
_SystemMetricsResult({"generation": "0"}, 100),
1011-
_SystemMetricsResult({"generation": "1"}, 200),
1012-
_SystemMetricsResult({"generation": "2"}, 300),
1010+
_SystemMetricsResult({"cpython.gc.generation": 0}, 100),
1011+
_SystemMetricsResult({"cpython.gc.generation": 1}, 200),
1012+
_SystemMetricsResult({"cpython.gc.generation": 2}, 300),
10131013
]
10141014
self._test_metrics(
10151015
"cpython.gc.collected_objects",
@@ -1031,9 +1031,9 @@ def test_runtime_get_gc_uncollectable_objects(self, mock_gc_get_stats):
10311031
}
10321032
)
10331033
expected_gc_uncollectable_objects = [
1034-
_SystemMetricsResult({"generation": "0"}, 1),
1035-
_SystemMetricsResult({"generation": "1"}, 2),
1036-
_SystemMetricsResult({"generation": "2"}, 3),
1034+
_SystemMetricsResult({"cpython.gc.generation": 0}, 1),
1035+
_SystemMetricsResult({"cpython.gc.generation": 1}, 2),
1036+
_SystemMetricsResult({"cpython.gc.generation": 2}, 3),
10371037
]
10381038
self._test_metrics(
10391039
"cpython.gc.uncollectable_objects",

0 commit comments

Comments
 (0)