diff --git a/CHANGELOG.md b/CHANGELOG.md index 51ecc94d8c..b5339972d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,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)) - `opentelemetry-instrumentation-httpx`: Check if mount transport is none before wrap it ([#3022](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3022)) 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..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 @@ -595,7 +596,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 +627,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..92c30a66f0 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,14 @@ def test_open_file_descriptor_count(self, mock_process_num_fds): expected, ) mock_process_num_fds.assert_called() + + +class TestConfigSystemMetrics(TestBase): + # pylint:disable=no-self-use + def test_that_correct_config_is_read(self): + for key, value in _DEFAULT_CONFIG.items(): + meter_provider = MeterProvider([InMemoryMetricReader()]) + instrumentor = SystemMetricsInstrumentor(config={key: value}) + instrumentor.instrument(meter_provider=meter_provider) + meter_provider.force_flush() + instrumentor.uninstrument()