Skip to content

Commit 114732d

Browse files
Corvin LasoggaCoLa5
Corvin Lasogga
authored andcommitted
added meter instrumentation
1 parent de325c0 commit 114732d

File tree

2 files changed

+239
-83
lines changed
  • instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc

2 files changed

+239
-83
lines changed

instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/__init__.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,13 @@ def run():
6767
6868
import grpc
6969
70-
from opentelemetry import trace
70+
from opentelemetry import metrics, trace
7171
from opentelemetry.instrumentation.grpc import GrpcInstrumentorServer
72+
from opentelemetry.sdk.metrics import MeterProvider
73+
from opentelemetry.sdk.metrics.export import (
74+
ConsoleMetricExporter,
75+
PeriodicExportingMetricReader,
76+
)
7277
from opentelemetry.sdk.trace import TracerProvider
7378
from opentelemetry.sdk.trace.export import (
7479
ConsoleSpanExporter,
@@ -80,6 +85,12 @@ def run():
8085
except ImportError:
8186
from gen import helloworld_pb2, helloworld_pb2_grpc
8287
88+
exporter = ConsoleMetricExporter()
89+
reader = PeriodicExportingMetricReader(exporter)
90+
metrics.set_meter_provider(
91+
MeterProvider(metric_readers=[reader])
92+
)
93+
8394
trace.set_tracer_provider(TracerProvider())
8495
trace.get_tracer_provider().add_span_processor(
8596
SimpleSpanProcessor(ConsoleSpanExporter())
@@ -123,7 +134,7 @@ def serve():
123134
import grpc # pylint:disable=import-self
124135
from wrapt import wrap_function_wrapper as _wrap
125136

126-
from opentelemetry import trace
137+
from opentelemetry import metrics, trace
127138
from opentelemetry.instrumentation.grpc.grpcext import intercept_channel
128139
from opentelemetry.instrumentation.grpc.package import _instruments
129140
from opentelemetry.instrumentation.grpc.version import __version__
@@ -153,17 +164,24 @@ def instrumentation_dependencies(self) -> Collection[str]:
153164

154165
def _instrument(self, **kwargs):
155166
self._original_func = grpc.server
167+
meter_provider = kwargs.get("meter_provider")
156168
tracer_provider = kwargs.get("tracer_provider")
157169

158170
def server(*args, **kwargs):
159171
if "interceptors" in kwargs:
160172
# add our interceptor as the first
161173
kwargs["interceptors"].insert(
162-
0, server_interceptor(tracer_provider=tracer_provider)
174+
0, server_interceptor(
175+
meter_provider=meter_provider,
176+
tracer_provider=tracer_provider
177+
)
163178
)
164179
else:
165180
kwargs["interceptors"] = [
166-
server_interceptor(tracer_provider=tracer_provider)
181+
server_interceptor(
182+
meter_provider=meter_provider,
183+
tracer_provider=tracer_provider
184+
)
167185
]
168186
return self._original_func(*args, **kwargs)
169187

@@ -240,17 +258,19 @@ def client_interceptor(tracer_provider=None):
240258
return _client.OpenTelemetryClientInterceptor(tracer)
241259

242260

243-
def server_interceptor(tracer_provider=None):
261+
def server_interceptor(meter_provider=None, tracer_provider=None):
244262
"""Create a gRPC server interceptor.
245263
246264
Args:
247-
tracer: The tracer to use to create server-side spans.
265+
meter_provider: The meter provider which allows acess to the meter.
266+
tracer_provider: The tracer provider which allows acess to the tracer.
248267
249268
Returns:
250269
A service-side interceptor object.
251270
"""
252271
from . import _server
253272

273+
meter = metrics.get_meter(__name__, __version__, meter_provider)
254274
tracer = trace.get_tracer(__name__, __version__, tracer_provider)
255275

256-
return _server.OpenTelemetryServerInterceptor(tracer)
276+
return _server.OpenTelemetryServerInterceptor(meter, tracer)

0 commit comments

Comments
 (0)