Logs collection was configurate for OTEL.
This commit is contained in:
parent
086863ef9c
commit
8b0a233816
4 changed files with 20 additions and 6 deletions
|
|
@ -90,6 +90,7 @@ extract = [
|
||||||
"striprtf>=0.0.26",
|
"striprtf>=0.0.26",
|
||||||
"chardet>=5.2",
|
"chardet>=5.2",
|
||||||
"python-magic>=0.4.27",
|
"python-magic>=0.4.27",
|
||||||
|
"opentelemetry-instrumentation-httpx>=0.45b0",
|
||||||
]
|
]
|
||||||
analyze = [
|
analyze = [
|
||||||
{ include-group = "db" },
|
{ include-group = "db" },
|
||||||
|
|
@ -114,6 +115,7 @@ notify = [
|
||||||
{ include-group = "mq" },
|
{ include-group = "mq" },
|
||||||
{ include-group = "obs" },
|
{ include-group = "obs" },
|
||||||
"aiosmtplib>=3.0",
|
"aiosmtplib>=3.0",
|
||||||
|
"opentelemetry-instrumentation-httpx>=0.45b0",
|
||||||
]
|
]
|
||||||
billing = [
|
billing = [
|
||||||
{ include-group = "db" },
|
{ include-group = "db" },
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,15 @@ def create_app() -> FastAPI:
|
||||||
) -> RedirectResponse:
|
) -> RedirectResponse:
|
||||||
return RedirectResponse(url=f"/admin/login?reason={exc.reason}", status_code=303)
|
return RedirectResponse(url=f"/admin/login?reason={exc.reason}", status_code=303)
|
||||||
|
|
||||||
|
# Emit request traces to the OTLP collector. Must happen after all routes
|
||||||
|
# and middleware are registered so spans cover the full request lifecycle.
|
||||||
|
try:
|
||||||
|
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
|
||||||
|
|
||||||
|
FastAPIInstrumentor.instrument_app(app)
|
||||||
|
except Exception: # pragma: no cover - optional instrumentor
|
||||||
|
pass
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,9 +97,10 @@ def setup_telemetry(service_name: str | None = None) -> None:
|
||||||
|
|
||||||
resource = Resource.create({"service.name": service_name or settings.otel_service_name})
|
resource = Resource.create({"service.name": service_name or settings.otel_service_name})
|
||||||
|
|
||||||
# Traces
|
# Traces. Exporters read OTEL_EXPORTER_OTLP_ENDPOINT and append the
|
||||||
|
# signal-specific path (/v1/traces, /v1/logs, /v1/metrics) automatically.
|
||||||
trace_provider = TracerProvider(resource=resource)
|
trace_provider = TracerProvider(resource=resource)
|
||||||
trace_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint=endpoint)))
|
trace_provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
|
||||||
set_tracer_provider(trace_provider)
|
set_tracer_provider(trace_provider)
|
||||||
_trace_provider = trace_provider
|
_trace_provider = trace_provider
|
||||||
|
|
||||||
|
|
@ -107,9 +108,7 @@ def setup_telemetry(service_name: str | None = None) -> None:
|
||||||
# through the stdlib logging tree; this handler unwraps the structured
|
# through the stdlib logging tree; this handler unwraps the structured
|
||||||
# event dicts so OpenObserve receives the message body and fields.
|
# event dicts so OpenObserve receives the message body and fields.
|
||||||
log_provider = LoggerProvider(resource=resource)
|
log_provider = LoggerProvider(resource=resource)
|
||||||
log_provider.add_log_record_processor(
|
log_provider.add_log_record_processor(BatchLogRecordProcessor(OTLPLogExporter()))
|
||||||
BatchLogRecordProcessor(OTLPLogExporter(endpoint=endpoint))
|
|
||||||
)
|
|
||||||
set_logger_provider(log_provider)
|
set_logger_provider(log_provider)
|
||||||
_log_provider = log_provider
|
_log_provider = log_provider
|
||||||
|
|
||||||
|
|
@ -119,7 +118,7 @@ def setup_telemetry(service_name: str | None = None) -> None:
|
||||||
|
|
||||||
# Metrics infrastructure (OTel metrics → OTLP). Existing prometheus_client
|
# Metrics infrastructure (OTel metrics → OTLP). Existing prometheus_client
|
||||||
# metrics are still scraped by Prometheus; use remote_write for those.
|
# metrics are still scraped by Prometheus; use remote_write for those.
|
||||||
metric_reader = PeriodicExportingMetricReader(OTLPMetricExporter(endpoint=endpoint))
|
metric_reader = PeriodicExportingMetricReader(OTLPMetricExporter())
|
||||||
meter_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
|
meter_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
|
||||||
set_meter_provider(meter_provider)
|
set_meter_provider(meter_provider)
|
||||||
_meter_provider = meter_provider
|
_meter_provider = meter_provider
|
||||||
|
|
|
||||||
4
uv.lock
generated
4
uv.lock
generated
|
|
@ -751,6 +751,7 @@ extract = [
|
||||||
{ name = "mammoth" },
|
{ name = "mammoth" },
|
||||||
{ name = "minio" },
|
{ name = "minio" },
|
||||||
{ name = "opentelemetry-exporter-otlp" },
|
{ name = "opentelemetry-exporter-otlp" },
|
||||||
|
{ name = "opentelemetry-instrumentation-httpx" },
|
||||||
{ name = "opentelemetry-sdk" },
|
{ name = "opentelemetry-sdk" },
|
||||||
{ name = "pillow" },
|
{ name = "pillow" },
|
||||||
{ name = "prometheus-client" },
|
{ name = "prometheus-client" },
|
||||||
|
|
@ -770,6 +771,7 @@ notify = [
|
||||||
{ name = "alembic" },
|
{ name = "alembic" },
|
||||||
{ name = "asyncpg" },
|
{ name = "asyncpg" },
|
||||||
{ name = "opentelemetry-exporter-otlp" },
|
{ name = "opentelemetry-exporter-otlp" },
|
||||||
|
{ name = "opentelemetry-instrumentation-httpx" },
|
||||||
{ name = "opentelemetry-sdk" },
|
{ name = "opentelemetry-sdk" },
|
||||||
{ name = "prometheus-client" },
|
{ name = "prometheus-client" },
|
||||||
{ name = "sentry-sdk" },
|
{ name = "sentry-sdk" },
|
||||||
|
|
@ -918,6 +920,7 @@ extract = [
|
||||||
{ name = "mammoth", specifier = ">=1.8" },
|
{ name = "mammoth", specifier = ">=1.8" },
|
||||||
{ name = "minio", specifier = ">=7.2" },
|
{ name = "minio", specifier = ">=7.2" },
|
||||||
{ name = "opentelemetry-exporter-otlp", specifier = ">=1.24" },
|
{ name = "opentelemetry-exporter-otlp", specifier = ">=1.24" },
|
||||||
|
{ name = "opentelemetry-instrumentation-httpx", specifier = ">=0.45b0" },
|
||||||
{ name = "opentelemetry-sdk", specifier = ">=1.24" },
|
{ name = "opentelemetry-sdk", specifier = ">=1.24" },
|
||||||
{ name = "pillow", specifier = ">=10" },
|
{ name = "pillow", specifier = ">=10" },
|
||||||
{ name = "prometheus-client", specifier = ">=0.20" },
|
{ name = "prometheus-client", specifier = ">=0.20" },
|
||||||
|
|
@ -935,6 +938,7 @@ notify = [
|
||||||
{ name = "alembic", specifier = ">=1.13" },
|
{ name = "alembic", specifier = ">=1.13" },
|
||||||
{ name = "asyncpg", specifier = ">=0.29" },
|
{ name = "asyncpg", specifier = ">=0.29" },
|
||||||
{ name = "opentelemetry-exporter-otlp", specifier = ">=1.24" },
|
{ name = "opentelemetry-exporter-otlp", specifier = ">=1.24" },
|
||||||
|
{ name = "opentelemetry-instrumentation-httpx", specifier = ">=0.45b0" },
|
||||||
{ name = "opentelemetry-sdk", specifier = ">=1.24" },
|
{ name = "opentelemetry-sdk", specifier = ">=1.24" },
|
||||||
{ name = "prometheus-client", specifier = ">=0.20" },
|
{ name = "prometheus-client", specifier = ">=0.20" },
|
||||||
{ name = "sentry-sdk", specifier = ">=2" },
|
{ name = "sentry-sdk", specifier = ">=2" },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue