How do I export OpenTelemetry metrics in Python aplication with OTLP?

Viewed 960

I am creating a prototype of application using Python with OpenTelemetry for collecting metrics, traces and for logging purposes.

Currently metrics for python in open telemetry is implemented as an experimental feature and I could not find any documentation how export metrics.

Currently I use following versions of libs

opentelemetry-api                      1.9.1
opentelemetry-exporter-otlp-proto-grpc 1.9.1
opentelemetry-instrumentation          0.28b1
opentelemetry-instrumentation-flask    0.28b1
opentelemetry-instrumentation-logging  0.28b1
opentelemetry-instrumentation-requests 0.28b1
opentelemetry-instrumentation-wsgi     0.28b1
opentelemetry-proto                    1.9.1
opentelemetry-sdk                      1.9.1
opentelemetry-semantic-conventions     0.28b1
opentelemetry-util-http                0.28b1

and tried followed code

from opentelemetry._metrics import get_meter_provider, set_meter_provider
from opentelemetry.sdk._metrics import MeterProvider
from opentelemetry.sdk._metrics.export import PeriodicExportingMetricReader
from opentelemetry.exporter.otlp.proto.grpc._metric_exporter import (
    OTLPMetricExporter
)

TRACE_EXPORTER_ENDPOINT = os.environ.get('SERVER_TRACE_EXPORTER_ENDPOINT', 'http://localhost:4317')

#meter setup
meterExporter = OTLPMetricExporter(endpoint=TRACE_EXPORTER_ENDPOINT)
reader = PeriodicExportingMetricReader(meterExporter)
provider = MeterProvider(metric_readers=[reader])
set_meter_provider(provider)

meter = get_meter_provider().get_meter(__name__)
counter = meter.create_counter("first_counter")
counter.add(1)

however, the metric does not appear in local instance of Prometheus

Looking for any idea how to export metrics correctly, thank you

UPD:

added the otel-collector-config.yaml

receivers:
  otlp:
    protocols:
      grpc:
exporters:
    logging:
      loglevel: debug
    jaeger:
      endpoint: jaeger:14250
      insecure: true
    prometheus:
      endpoint: "0.0.0.0:8889"
processors:
    batch:
service:
    pipelines:
        traces:
            receivers: [otlp]
            exporters: [logging, jaeger]
            processors: [batch]
        metrics:
            receivers: [otlp]
            exporters: [logging, prometheus]

also, tried to attach to the collector container and the only I was able to see is traces but there was no information about metrics.

0 Answers
Related