遥测
Llama Stack 遥测系统提供全面的跟踪、指标和日志记录功能。它支持多种接收器类型,包括 OpenTelemetry、SQLite 和控制台输出。
事件
遥测系统支持三种主要类型的事件
非结构化日志事件: 带有严重性级别的自由格式日志消息
unstructured_log_event = UnstructuredLogEvent(
message="This is a log message", severity=LogSeverity.INFO
)
指标事件: 带有单位的数值测量
metric_event = MetricEvent(metric="my_metric", value=10, unit="count")
结构化日志事件: 系统事件,例如 span 开始/结束。可扩展以添加更多结构化日志类型。
structured_log_event = SpanStartPayload(name="my_span", parent_span_id="parent_span_id")
跨度和跟踪
跨度 (Spans): 表示带有时间和层级关系的操作
跟踪 (Traces): 相关 span 的集合,形成完整的请求流
接收器
OpenTelemetry: 将事件发送到 OpenTelemetry Collector。这对于在 Jaeger 等工具中可视化跟踪很有用。
SQLite: 将事件存储在本地 SQLite 数据库中。如果您想稍后通过 Llama Stack API 查询事件,则需要此选项。
控制台: 将事件打印到控制台。
提供者
Meta 参考提供者
目前,仅实现了 Meta 参考提供者。它可以配置为将事件发送到三种接收器类型
OpenTelemetry Collector
SQLite
控制台
配置
这是一个将遥测信号发送到所有三种接收器类型的示例。您的配置可能只使用其中一种。
telemetry:
- provider_id: meta-reference
provider_type: inline::meta-reference
config:
sinks: ['console', 'sqlite', 'otel_trace', 'otel_metric']
otel_trace_endpoint: "https://:4318/v1/traces"
otel_metric_endpoint: "https://:4318/v1/metrics"
sqlite_db_path: "/path/to/telemetry.db"
使用 Jaeger 可视化跟踪
otel
接收器与任何兼容 OpenTelemetry collector 的服务一起工作,跟踪和指标有两个独立的端点。让我们使用 Jaeger 可视化这些数据。
使用以下命令启动一个 Jaeger 实例,其 OTLP HTTP 端点为 4318,Jaeger UI 为 16686
$ docker run --pull always --rm --name jaeger \
-p 16686:16686 -p 4318:4318 \
jaegertracing/jaeger:2.1.0
Jaeger 实例运行后,您可以通过访问 https://:16686/ 来可视化跟踪。
查询存储在 SQLite 中的跟踪
sqlite
接收器允许您在没有外部系统的情况下查询跟踪。以下是一些示例查询。请参阅 Llama Stack 构建 AI 应用程序 中的笔记本,获取有关如何查询跟踪和空间的更多示例。