Source code for acp_sdk.server.telemetry

import logging

from opentelemetry import metrics, trace
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.sdk.resources import (
    SERVICE_NAME,
    SERVICE_NAMESPACE,
    SERVICE_VERSION,
    Resource,
)
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor

from acp_sdk.version import __version__

root_logger = logging.getLogger()


[docs] def configure_telemetry() -> None: """Utility that configures opentelemetry with OTLP exporter""" resource = Resource( attributes={ SERVICE_NAME: "acp-server", SERVICE_NAMESPACE: "acp", SERVICE_VERSION: __version__, } ) # Traces provider = TracerProvider(resource=resource) processor = BatchSpanProcessor(OTLPSpanExporter()) provider.add_span_processor(processor) trace.set_tracer_provider(provider) # Metrics meter_provider = MeterProvider( resource=resource, metric_readers=[PeriodicExportingMetricReader(OTLPMetricExporter())], ) metrics.set_meter_provider(meter_provider) # Logs logger_provider = LoggerProvider(resource=resource) processor = BatchLogRecordProcessor(OTLPLogExporter()) logger_provider.add_log_record_processor(processor) root_logger.addHandler(LoggingHandler(logger_provider=logger_provider))