Skip to content

Commit 0b59ab8

Browse files
author
Alex Boten
committed
fix tests
1 parent 0529646 commit 0b59ab8

File tree

3 files changed

+245
-414
lines changed

3 files changed

+245
-414
lines changed

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

+46-39
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
"system.disk.io": ["read", "write"],
2929
"system.disk.operations": ["read", "write"],
3030
"system.disk.time": ["read", "write"],
31-
"system.disk.merged": ["read", "write"],
3231
"system.network.dropped.packets": ["transmit", "receive"],
3332
"system.network.packets": ["transmit", "receive"],
3433
"system.network.errors": ["transmit", "receive"],
@@ -64,37 +63,37 @@
6463
"runtime.memory": ["rss", "vms"],
6564
"runtime.cpu.time": ["user", "system"],
6665
}
67-
SystemMetrics(exporter, config=configuration)
66+
SystemMetrics(config=configuration)
6867
6968
API
7069
---
7170
"""
7271

72+
from typing import Collection
73+
7374
import gc
7475
import os
7576
from typing import Dict, List, Iterable, Optional
7677
from platform import python_implementation
7778

7879
import psutil
7980

80-
from opentelemetry._metrics import get_meter_provider
81+
from opentelemetry._metrics import get_meter
8182
from opentelemetry._metrics.measurement import Measurement
83+
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
84+
from opentelemetry.instrumentation.system_metrics.version import __version__
85+
from opentelemetry.instrumentation.system_metrics.package import _instruments
8286
from opentelemetry.sdk.util import get_dict_as_key
8387

8488

85-
class SystemMetrics:
89+
class SystemMetrics(BaseInstrumentor):
8690
# pylint: disable=too-many-statements
8791
def __init__(
8892
self,
89-
interval: int = 30,
9093
labels: Optional[Dict[str, str]] = None,
9194
config: Optional[Dict[str, List[str]]] = None,
9295
):
93-
self._labels = {} if labels is None else labels
94-
self.meter = get_meter_provider().get_meter(
95-
"io.otel.python.instrumentation.system-metrics"
96-
) # TODO: find a better name here
97-
self._python_implementation = python_implementation().lower()
96+
super().__init__()
9897
if config is None:
9998
self._config = {
10099
"system.cpu.time": ["idle", "user", "system", "irq"],
@@ -108,7 +107,6 @@ def __init__(
108107
"system.disk.io": ["read", "write"],
109108
"system.disk.operations": ["read", "write"],
110109
"system.disk.time": ["read", "write"],
111-
"system.disk.merged": ["read", "write"],
112110
# "system.filesystem.usage": [],
113111
# "system.filesystem.utilization": [],
114112
"system.network.dropped.packets": ["transmit", "receive"],
@@ -121,6 +119,20 @@ def __init__(
121119
}
122120
else:
123121
self._config = config
122+
self._labels = {} if labels is None else labels
123+
self._meter = None
124+
125+
def instrumentation_dependencies(self) -> Collection[str]:
126+
return _instruments
127+
128+
def _instrument(self, **kwargs):
129+
meter_provider = kwargs.get("meter_provider")
130+
self._meter = get_meter(
131+
"io.otel.python.instrumentation.system_metrics",
132+
__version__,
133+
meter_provider,
134+
)
135+
self._python_implementation = python_implementation().lower()
124136

125137
self._proc = psutil.Process(os.getpid())
126138

@@ -153,92 +165,84 @@ def __init__(
153165
self._runtime_cpu_time_labels = self._labels.copy()
154166
self._runtime_gc_count_labels = self._labels.copy()
155167

156-
self.meter.create_observable_counter(
168+
self._meter.create_observable_counter(
157169
callback=self._get_system_cpu_time,
158170
name="system.cpu.time",
159171
description="System CPU time",
160172
unit="seconds",
161173
)
162174

163-
self.meter.create_observable_gauge(
175+
self._meter.create_observable_gauge(
164176
callback=self._get_system_cpu_utilization,
165177
name="system.cpu.utilization",
166178
description="System CPU utilization",
167179
unit="1",
168180
)
169181

170-
self.meter.create_observable_gauge(
182+
self._meter.create_observable_gauge(
171183
callback=self._get_system_memory_usage,
172184
name="system.memory.usage",
173185
description="System memory usage",
174186
unit="bytes",
175187
)
176188

177-
self.meter.create_observable_gauge(
189+
self._meter.create_observable_gauge(
178190
callback=self._get_system_memory_utilization,
179191
name="system.memory.utilization",
180192
description="System memory utilization",
181193
unit="1",
182194
)
183195

184-
self.meter.create_observable_gauge(
196+
self._meter.create_observable_gauge(
185197
callback=self._get_system_swap_usage,
186198
name="system.swap.usage",
187199
description="System swap usage",
188200
unit="pages",
189201
)
190202

191-
self.meter.create_observable_gauge(
203+
self._meter.create_observable_gauge(
192204
callback=self._get_system_swap_utilization,
193205
name="system.swap.utilization",
194206
description="System swap utilization",
195207
unit="1",
196208
)
197209

198-
# # self.meter.create_observable_counter(
210+
# # self._meter.create_observable_counter(
199211
# # callback=self._get_system_swap_page_faults,
200212
# # name="system.swap.page_faults",
201213
# # description="System swap page faults",
202214
# # unit="faults",
203215
# # value_type=int,
204216
# # )
205217

206-
# # self.meter.create_observable_counter(
218+
# # self._meter.create_observable_counter(
207219
# # callback=self._get_system_swap_page_operations,
208220
# # name="system.swap.page_operations",
209221
# # description="System swap page operations",
210222
# # unit="operations",
211223
# # value_type=int,
212224
# # )
213-
214-
self.meter.create_observable_counter(
225+
self._meter.create_observable_counter(
215226
callback=self._get_system_disk_io,
216227
name="system.disk.io",
217228
description="System disk IO",
218229
unit="bytes",
219230
)
220231

221-
self.meter.create_observable_counter(
232+
self._meter.create_observable_counter(
222233
callback=self._get_system_disk_operations,
223234
name="system.disk.operations",
224235
description="System disk operations",
225236
unit="operations",
226237
)
227238

228-
self.meter.create_observable_counter(
239+
self._meter.create_observable_counter(
229240
callback=self._get_system_disk_time,
230241
name="system.disk.time",
231242
description="System disk time",
232243
unit="seconds",
233244
)
234245

235-
self.meter.create_observable_counter(
236-
callback=self._get_system_disk_merged,
237-
name="system.disk.merged",
238-
description="System disk merged",
239-
unit="1",
240-
)
241-
242246
# self.accumulator.register_valueobserver(
243247
# callback=self._get_system_filesystem_usage,
244248
# name="system.filesystem.usage",
@@ -247,50 +251,50 @@ def __init__(
247251
# value_type=int,
248252
# )
249253

250-
# self.meter.create_observable_gauge(
254+
# self._meter.create_observable_gauge(
251255
# callback=self._get_system_filesystem_utilization,
252256
# name="system.filesystem.utilization",
253257
# description="System filesystem utilization",
254258
# unit="1",
255259
# value_type=float,
256260
# )
257261

258-
self.meter.create_observable_counter(
262+
self._meter.create_observable_counter(
259263
callback=self._get_system_network_dropped_packets,
260264
name="system.network.dropped_packets",
261265
description="System network dropped_packets",
262266
unit="packets",
263267
)
264268

265-
self.meter.create_observable_counter(
269+
self._meter.create_observable_counter(
266270
callback=self._get_system_network_packets,
267271
name="system.network.packets",
268272
description="System network packets",
269273
unit="packets",
270274
)
271275

272-
self.meter.create_observable_counter(
276+
self._meter.create_observable_counter(
273277
callback=self._get_system_network_errors,
274278
name="system.network.errors",
275279
description="System network errors",
276280
unit="errors",
277281
)
278282

279-
self.meter.create_observable_counter(
283+
self._meter.create_observable_counter(
280284
callback=self._get_system_network_io,
281285
name="system.network.io",
282286
description="System network io",
283287
unit="bytes",
284288
)
285289

286-
self.meter.create_observable_up_down_counter(
290+
self._meter.create_observable_up_down_counter(
287291
callback=self._get_system_network_connections,
288292
name="system.network.connections",
289293
description="System network connections",
290294
unit="connections",
291295
)
292296

293-
self.meter.create_observable_counter(
297+
self._meter.create_observable_counter(
294298
callback=self._get_runtime_memory,
295299
name="runtime.{}.memory".format(self._python_implementation),
296300
description="Runtime {} memory".format(
@@ -299,7 +303,7 @@ def __init__(
299303
unit="bytes",
300304
)
301305

302-
self.meter.create_observable_counter(
306+
self._meter.create_observable_counter(
303307
callback=self._get_runtime_cpu_time,
304308
name="runtime.{}.cpu_time".format(self._python_implementation),
305309
description="Runtime {} CPU time".format(
@@ -308,14 +312,17 @@ def __init__(
308312
unit="seconds",
309313
)
310314

311-
self.meter.create_observable_counter(
315+
self._meter.create_observable_counter(
312316
callback=self._get_runtime_gc_count,
313317
name="runtime.{}.gc_count".format(self._python_implementation),
314318
description="Runtime {} GC count".format(
315319
self._python_implementation
316320
),
317321
unit="bytes",
318322
)
323+
324+
def _uninstrument(self, **__):
325+
pass
319326

320327
def _get_system_cpu_time(self) -> Iterable[Measurement]:
321328
"""Observer callback for system CPU time
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright The OpenTelemetry Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
16+
_instruments = ("psutil >= 5.7.3",)

0 commit comments

Comments
 (0)