Version 0.4.0
All checks were successful
Run linters on applied template / Python 3.13 lint and build (push) Successful in 1m40s
All checks were successful
Run linters on applied template / Python 3.13 lint and build (push) Successful in 1m40s
Changes: - put ObservabilityMiddleware before ExceptionHandlerMiddleware to avoid repetative code - add application startup and last metrics update metrics along with CPU usage metric and threads count - move host and port to new uvicorn section at config along with new reload and forwarded_allow_ips - add request_id and remove trace_id/span_id generation if tracing is disabled - move logging logic from utils to observability - pass trace_id/span_id in HEX form
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
"""Open Telemetry agent initialization is defined here"""
|
||||
|
||||
import platform
|
||||
from functools import cache
|
||||
|
||||
from opentelemetry import metrics, trace
|
||||
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
||||
from opentelemetry.exporter.prometheus import PrometheusMetricReader
|
||||
from opentelemetry.sdk.metrics import MeterProvider
|
||||
from opentelemetry.sdk.resources import SERVICE_NAME, SERVICE_VERSION, Resource
|
||||
from opentelemetry.sdk.resources import SERVICE_INSTANCE_ID, SERVICE_NAME, SERVICE_VERSION, Resource
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
||||
|
||||
@@ -14,14 +17,16 @@ from {{project_slug}}.version import VERSION as APP_VERSION
|
||||
from .metrics_server import PrometheusServer
|
||||
|
||||
|
||||
@cache
|
||||
def get_resource() -> Resource:
|
||||
return Resource.create(
|
||||
attributes={SERVICE_NAME: "{{project_slug}}", SERVICE_VERSION: APP_VERSION, SERVICE_INSTANCE_ID: platform.node()}
|
||||
)
|
||||
|
||||
|
||||
class OpenTelemetryAgent: # pylint: disable=too-few-public-methods
|
||||
def __init__(self, prometheus_config: PrometheusConfig | None, jaeger_config: JaegerConfig | None):
|
||||
self._resource = Resource.create(
|
||||
attributes={
|
||||
SERVICE_NAME: "{{project_name}}",
|
||||
SERVICE_VERSION: APP_VERSION,
|
||||
}
|
||||
)
|
||||
self._resource = get_resource()
|
||||
self._prometheus: PrometheusServer | None = None
|
||||
self._span_exporter: OTLPSpanExporter | None = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user