From 1023cc51161cce7014686d69fe3018d5d374424b Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 19 Nov 2024 12:39:16 +0100 Subject: [PATCH 1/4] opentelemetry-instrumentation-system-metrics: fix typo in metrics configs With default config it behaves correctly, with custom config changing dropped packets affected two other measures. --- .../instrumentation/system_metrics/__init__.py | 4 ++-- .../tests/test_system_metrics.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py index 4e1ee2a5df..d71cae5c79 100644 --- a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py @@ -595,7 +595,7 @@ def _get_system_network_packets( """Observer callback for network packets""" for device, counters in psutil.net_io_counters(pernic=True).items(): - for metric in self._config["system.network.dropped.packets"]: + for metric in self._config["system.network.packets"]: recv_sent = {"receive": "recv", "transmit": "sent"}[metric] if hasattr(counters, f"packets_{recv_sent}"): self._system_network_packets_labels["device"] = device @@ -626,7 +626,7 @@ def _get_system_network_io( """Observer callback for network IO""" for device, counters in psutil.net_io_counters(pernic=True).items(): - for metric in self._config["system.network.dropped.packets"]: + for metric in self._config["system.network.io"]: recv_sent = {"receive": "recv", "transmit": "sent"}[metric] if hasattr(counters, f"bytes_{recv_sent}"): self._system_network_io_labels["device"] = device diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py b/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py index 83abcff4c0..a8798f2a8a 100644 --- a/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py +++ b/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py @@ -20,6 +20,7 @@ from unittest import mock, skipIf from opentelemetry.instrumentation.system_metrics import ( + _DEFAULT_CONFIG, SystemMetricsInstrumentor, ) from opentelemetry.sdk.metrics import MeterProvider @@ -865,3 +866,13 @@ def test_open_file_descriptor_count(self, mock_process_num_fds): expected, ) mock_process_num_fds.assert_called() + + +class TestConfigSystemMetrics(TestBase): + def test_that_correct_config_is_read(self): + for k, v in _DEFAULT_CONFIG.items(): + meter_provider = MeterProvider([InMemoryMetricReader()]) + instrumentor = SystemMetricsInstrumentor(config={k: v}) + instrumentor.instrument(meter_provider=meter_provider) + meter_provider.force_flush() + instrumentor.uninstrument() From 750a9ecc51644dbbefe89adc37aa48382eddd675 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 19 Nov 2024 12:48:55 +0100 Subject: [PATCH 2/4] Add CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 772384bdde..ab79f1d0b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `opentelemetry-instrumentation-httpx`: instrument_client is a static method again ([#3003](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3003)) +- `opentelemetry-instrumentation-system_metrics`: fix callbacks reading wrong config + ([#3025](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3025)) ### Breaking changes From 0450051ffa09097c3545566d013d4b6382188c22 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 19 Nov 2024 14:21:54 +0100 Subject: [PATCH 3/4] Please pylint --- .../tests/test_system_metrics.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py b/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py index a8798f2a8a..92c30a66f0 100644 --- a/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py +++ b/instrumentation/opentelemetry-instrumentation-system-metrics/tests/test_system_metrics.py @@ -869,10 +869,11 @@ def test_open_file_descriptor_count(self, mock_process_num_fds): class TestConfigSystemMetrics(TestBase): + # pylint:disable=no-self-use def test_that_correct_config_is_read(self): - for k, v in _DEFAULT_CONFIG.items(): + for key, value in _DEFAULT_CONFIG.items(): meter_provider = MeterProvider([InMemoryMetricReader()]) - instrumentor = SystemMetricsInstrumentor(config={k: v}) + instrumentor = SystemMetricsInstrumentor(config={key: value}) instrumentor.instrument(meter_provider=meter_provider) meter_provider.force_flush() instrumentor.uninstrument() From 8ba60412b7b5a9982c5162fe3dc5cb012d76cb97 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Thu, 21 Nov 2024 16:47:35 +0100 Subject: [PATCH 4/4] Sync doc with code --- .../src/opentelemetry/instrumentation/system_metrics/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py index d71cae5c79..aff86ea77b 100644 --- a/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-system-metrics/src/opentelemetry/instrumentation/system_metrics/__init__.py @@ -40,6 +40,7 @@ "process.runtime.thread_count": None, "process.runtime.cpu.utilization": None, "process.runtime.context_switches": ["involuntary", "voluntary"], + "process.open_file_descriptor.count": None, } Usage