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.