mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-08-06 10:42:39 +00:00
feat: add different sinks for otel traces and metrics
This commit is contained in:
parent
86f617a197
commit
26150a998d
2 changed files with 15 additions and 9 deletions
|
@ -13,15 +13,20 @@ from llama_stack.distribution.utils.config_dirs import RUNTIME_BASE_DIR
|
||||||
|
|
||||||
|
|
||||||
class TelemetrySink(str, Enum):
|
class TelemetrySink(str, Enum):
|
||||||
OTEL = "otel"
|
OTEL_TRACE = "otel_trace"
|
||||||
|
OTEL_METRIC = "otel_metric"
|
||||||
SQLITE = "sqlite"
|
SQLITE = "sqlite"
|
||||||
CONSOLE = "console"
|
CONSOLE = "console"
|
||||||
|
|
||||||
|
|
||||||
class TelemetryConfig(BaseModel):
|
class TelemetryConfig(BaseModel):
|
||||||
otel_endpoint: str = Field(
|
otel_trace_endpoint: str = Field(
|
||||||
default="http://localhost:4318/v1/traces",
|
default="http://localhost:4318/v1/traces",
|
||||||
description="The OpenTelemetry collector endpoint URL",
|
description="The OpenTelemetry collector endpoint URL for traces",
|
||||||
|
)
|
||||||
|
otel_metric_endpoint: str = Field(
|
||||||
|
default="http://localhost:4318/v1/metrics",
|
||||||
|
description="The OpenTelemetry collector endpoint URL for metrics",
|
||||||
)
|
)
|
||||||
service_name: str = Field(
|
service_name: str = Field(
|
||||||
default="llama-stack",
|
default="llama-stack",
|
||||||
|
|
|
@ -91,15 +91,16 @@ class TelemetryAdapter(TelemetryDatasetMixin, Telemetry):
|
||||||
provider = TracerProvider(resource=resource)
|
provider = TracerProvider(resource=resource)
|
||||||
trace.set_tracer_provider(provider)
|
trace.set_tracer_provider(provider)
|
||||||
_TRACER_PROVIDER = provider
|
_TRACER_PROVIDER = provider
|
||||||
if TelemetrySink.OTEL in self.config.sinks:
|
if TelemetrySink.OTEL_TRACE in self.config.sinks:
|
||||||
otlp_exporter = OTLPSpanExporter(
|
span_exporter = OTLPSpanExporter(
|
||||||
endpoint=self.config.otel_endpoint,
|
endpoint=self.config.otel_trace_endpoint,
|
||||||
)
|
)
|
||||||
span_processor = BatchSpanProcessor(otlp_exporter)
|
span_processor = BatchSpanProcessor(span_exporter)
|
||||||
trace.get_tracer_provider().add_span_processor(span_processor)
|
trace.get_tracer_provider().add_span_processor(span_processor)
|
||||||
|
if TelemetrySink.OTEL_METRIC in self.config.sinks:
|
||||||
metric_reader = PeriodicExportingMetricReader(
|
metric_reader = PeriodicExportingMetricReader(
|
||||||
OTLPMetricExporter(
|
OTLPMetricExporter(
|
||||||
endpoint=self.config.otel_endpoint,
|
endpoint=self.config.otel_metric_endpoint,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
metric_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
|
metric_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
|
||||||
|
@ -109,7 +110,7 @@ class TelemetryAdapter(TelemetryDatasetMixin, Telemetry):
|
||||||
if TelemetrySink.CONSOLE in self.config.sinks:
|
if TelemetrySink.CONSOLE in self.config.sinks:
|
||||||
trace.get_tracer_provider().add_span_processor(ConsoleSpanProcessor())
|
trace.get_tracer_provider().add_span_processor(ConsoleSpanProcessor())
|
||||||
|
|
||||||
if TelemetrySink.OTEL in self.config.sinks:
|
if TelemetrySink.OTEL_METRIC in self.config.sinks:
|
||||||
self.meter = metrics.get_meter(__name__)
|
self.meter = metrics.get_meter(__name__)
|
||||||
if TelemetrySink.SQLITE in self.config.sinks:
|
if TelemetrySink.SQLITE in self.config.sinks:
|
||||||
self.trace_store = SQLiteTraceStore(self.config.sqlite_db_path)
|
self.trace_store = SQLiteTraceStore(self.config.sqlite_db_path)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue