from opentelemetry import metrics from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.sdk.resources import Resource resource = Resource.create( { "service.name": "checkout-service", "deployment.environment.name": "dev", } ) exporter = OTLPMetricExporter(endpoint="http://localhost:4318/v1/metrics") reader = PeriodicExportingMetricReader(exporter, export_interval_millis=1000) provider = MeterProvider(resource=resource, metric_readers=[reader]) metrics.set_meter_provider(provider) meter = metrics.get_meter("checkout.metrics") checkout_counter = meter.create_counter( "checkout.completed", unit="1", description="Completed checkout requests", ) checkout_counter.add( 1, { "checkout.region": "ap-southeast", "payment.method": "card", }, ) checkout_counter.add( 2, { "checkout.region": "ap-southeast", "payment.method": "card", }, ) provider.force_flush() provider.shutdown() print("recorded checkout.completed count=3 region=ap-southeast payment=card") print("exported metrics to http://localhost:4318/v1/metrics")