OpenTelemetry
Open WebUI 支持通过 OpenTelemetry(OTel)协议(OTLP)导出分布式追踪和指标。这使你可以与现代可观测性技术栈(例如 Grafana LGTM〔Loki、Grafana、Tempo、Mimir〕)以及 Jaeger、Tempo 和 Prometheus 集成,从而实时监控请求、数据库/Redis 查询、响应时间等。
额外依赖
如果你是从源码或通过 pip 运行 Open WebUI(也就是不使用官方 Docker 镜像),OpenTelemetry 依赖项可能不会默认安装。你可能需要手动安装它们:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp🚀 使用 Docker Compose 快速开始
启用可观测性的最快方式是下载示例 Compose 文件并启动一个本地 Grafana LGTM 栈与 Open WebUI:
curl -fsSLO https://docs.openwebui.com/docker-compose.otel.yaml
docker compose -f docker-compose.otel.yaml up -ddocker-compose.otel.yaml 文件会配置以下组件:
| 服务 | 端口 | 描述 |
|---|---|---|
| lgtm | 3000(UI)、4317(OTLP/gRPC)、4318(HTTP) | Grafana LGTM(Loki + Grafana + Tempo + Mimir)栈 |
| open-webui | 8088 → 8080 | 启用了 OTEL 导出的 Open WebUI |
启动后:
- Open WebUI 可以在 http://localhost:8088 访问
- Grafana 可以在 http://localhost:3000 访问,默认账号
admin/admin - Open WebUI 在 Compose 网络内通过
http://lgtm:4317发送 OTLP 数据
⚙️ 环境变量
你可以使用下面这些环境变量(与 Compose 文件中的配置一致)在 Open WebUI 中配置 OpenTelemetry:
| 变量 | 默认值 | 描述 |
|---|---|---|
ENABLE_OTEL | 在 Compose 中为 true | OpenTelemetry 的总开关 |
ENABLE_OTEL_TRACES | 在 Compose 中为 true | 启用分布式追踪导出 |
ENABLE_OTEL_METRICS | 在 Compose 中为 true | 启用 FastAPI HTTP 指标导出 |
ENABLE_OTEL_LOGS | 在 Compose 中为 true | 启用 OpenTelemetry 日志导出 |
OTEL_EXPORTER_OTLP_ENDPOINT | 在 Compose 中为 http://lgtm:4317 | 用于追踪的 OTLP 端点 |
OTEL_METRICS_EXPORTER_OTLP_ENDPOINT | 在 Compose 中为 http://lgtm:4317 | 用于指标的 OTLP 端点 |
OTEL_LOGS_EXPORTER_OTLP_ENDPOINT | 在 Compose 中为 http://lgtm:4317 | 用于日志的 OTLP 端点 |
OTEL_EXPORTER_OTLP_INSECURE | 在 Compose 中为 true | 使用不安全连接(无 TLS)连接 OTLP |
OTEL_SERVICE_NAME | open-webui | 服务名称(会显示在追踪和指标中) |
OTEL_METRICS_EXPORT_INTERVAL_MILLIS | 10000 | 指标导出间隔(毫秒)(10 秒约等于 6 次/分钟;60000 约 1 次/分钟) |
OTEL_BASIC_AUTH_USERNAME / OTEL_BASIC_AUTH_PASSWORD | (为空) | 如果收集器需要,可配置基本认证凭据 |
提示
你可以根据需要在 .env 文件或 Compose 文件中覆盖默认值。
open-webui:
environment:
- ENABLE_OTEL=true
- ENABLE_OTEL_TRACES=true
- ENABLE_OTEL_METRICS=true
- ENABLE_OTEL_LOGS=true
- OTEL_EXPORTER_OTLP_INSECURE=true # OTLP 使用不安全连接;生产环境中你可能希望移除这一项
- OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
- OTEL_METRICS_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
- OTEL_LOGS_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
- OTEL_SERVICE_NAME=open-webui
# 如有需要,可在此设置 OTEL_BASIC_AUTH_USERNAME/PASSWORD📊 数据收集
分布式追踪
Open WebUI 后端自动检测:
- FastAPI(路由)
- SQLAlchemy(数据库查询)
- Redis
- requests、httpx、aiohttp(外部调用)
每个追踪跨度都会包含丰富的数据,例如:
db.instance,db.statement,redis.argshttp.url,http.method,http.status_code- 异常时的错误详情 (
error.message,error.kind)