|
1 | 1 | """ Adds aiohttp middleware for tracing using opentelemetry instrumentation. |
2 | 2 |
|
3 | 3 | """ |
| 4 | + |
4 | 5 | import logging |
5 | 6 |
|
6 | 7 | from aiohttp import web |
7 | 8 | from opentelemetry import trace |
8 | 9 | from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( |
9 | 10 | OTLPSpanExporter as OTLPSpanExporterHTTP, |
10 | 11 | ) |
11 | | -from opentelemetry.instrumentation.aiohttp_client import AioHttpClientInstrumentor |
12 | | -from opentelemetry.instrumentation.aiohttp_server import AioHttpServerInstrumentor |
13 | | -from opentelemetry.instrumentation.aiopg import AiopgInstrumentor |
| 12 | +from opentelemetry.instrumentation.aiohttp_client import ( # pylint:disable=no-name-in-module |
| 13 | + AioHttpClientInstrumentor, |
| 14 | +) |
| 15 | +from opentelemetry.instrumentation.aiohttp_server import ( # pylint:disable=no-name-in-module |
| 16 | + AioHttpServerInstrumentor, |
| 17 | +) |
| 18 | +from opentelemetry.instrumentation.aiopg import ( # pylint:disable=no-name-in-module |
| 19 | + AiopgInstrumentor, |
| 20 | +) |
14 | 21 | from opentelemetry.instrumentation.requests import RequestsInstrumentor |
15 | 22 | from opentelemetry.sdk.resources import Resource |
16 | 23 | from opentelemetry.sdk.trace import TracerProvider |
17 | 24 | from opentelemetry.sdk.trace.export import BatchSpanProcessor |
18 | 25 | from settings_library.tracing import TracingSettings |
19 | 26 |
|
20 | | -log = logging.getLogger(__name__) |
| 27 | +_logger = logging.getLogger(__name__) |
21 | 28 |
|
22 | 29 |
|
23 | 30 | def setup_tracing( |
24 | | - app: web.Application, # pylint: disable=unused-argument |
| 31 | + app: web.Application, |
25 | 32 | tracing_settings: TracingSettings, |
26 | 33 | service_name: str, |
27 | 34 | instrument_aiopg: bool = False, # noqa: FBT001, FBT002 |
28 | 35 | ) -> None: |
29 | 36 | """ |
30 | 37 | Sets up this service for a distributed tracing system (opentelemetry) |
31 | 38 | """ |
| 39 | + _ = app |
32 | 40 | opentelemetry_collector_endpoint = ( |
33 | 41 | tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT |
34 | 42 | ) |
35 | 43 | opentelemetry_collector_port = tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_PORT |
36 | 44 | if not opentelemetry_collector_endpoint and not opentelemetry_collector_port: |
37 | | - log.warning("Skipping opentelemetry tracing setup") |
| 45 | + _logger.warning("Skipping opentelemetry tracing setup") |
38 | 46 | return |
39 | 47 | if not opentelemetry_collector_endpoint or not opentelemetry_collector_port: |
40 | | - raise RuntimeError( |
41 | | - f"Variable opentelemetry_collector_endpoint [{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT}] or opentelemetry_collector_port [{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_PORT}] unset. Tracing options incomplete." |
| 48 | + msg = ( |
| 49 | + "Variable opentelemetry_collector_endpoint " |
| 50 | + f"[{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_ENDPOINT}] " |
| 51 | + "or opentelemetry_collector_port " |
| 52 | + f"[{tracing_settings.TRACING_OPENTELEMETRY_COLLECTOR_PORT}] " |
| 53 | + "unset. Tracing options incomplete." |
42 | 54 | ) |
| 55 | + raise RuntimeError(msg) |
43 | 56 | resource = Resource(attributes={"service.name": service_name}) |
44 | 57 | trace.set_tracer_provider(TracerProvider(resource=resource)) |
45 | 58 | tracer_provider: trace.TracerProvider = trace.get_tracer_provider() |
46 | 59 | tracing_destination: str = ( |
47 | 60 | f"{opentelemetry_collector_endpoint}:{opentelemetry_collector_port}/v1/traces" |
48 | 61 | ) |
49 | 62 |
|
50 | | - log.info( |
| 63 | + _logger.info( |
51 | 64 | "Trying to connect service %s to tracing collector at %s.", |
52 | 65 | service_name, |
53 | 66 | tracing_destination, |
|
0 commit comments