Skip to main content

可观测性

MimirQ 基于可观测性三支柱(Metrics、Logs、Traces)构建完整的生产监控体系,帮助运维团队快速定位性能瓶颈和异常根因。

三支柱概览

Prometheus 指标

MimirQ 在 /metrics 端点暴露 Prometheus 格式指标,核心指标如下:

指标名类型说明
mimirq_http_requests_totalCounterHTTP 请求总数(按 method/path/status 分组)
mimirq_http_request_duration_secondsHistogram请求延迟分布
mimirq_rag_query_duration_secondsHistogramRAG 查询端到端耗时
mimirq_rag_retrieval_duration_secondsHistogram检索阶段耗时
mimirq_llm_tokens_totalCounterLLM token 消耗(按 model/direction 分组)
mimirq_task_queue_depthGauge异步任务队列当前深度
mimirq_task_processing_duration_secondsHistogram任务处理耗时
mimirq_db_pool_connectionsGauge数据库连接池使用量(按 state 分组)
mimirq_milvus_search_duration_secondsHistogramMilvus 向量检索耗时
mimirq_embedding_batch_duration_secondsHistogramEmbedding 批量推理耗时

Grafana Dashboard

导入预置 Dashboard:

# 方式一:通过 Grafana UI 导入
# Dashboards → Import → 上传 JSON 文件
cp deploy/grafana/mimirq-overview.json /var/lib/grafana/dashboards/

# 方式二:通过 Provisioning 自动加载
# grafana/provisioning/dashboards/mimirq.yaml 已包含配置
tip

Dashboard 包含 4 个核心面板:请求概览、RAG 管线性能、任务队列状态、资源使用率。可按需在 deploy/grafana/ 目录下自定义。

结构化日志

MimirQ 使用 JSON 格式输出日志,便于 Loki、ELK 等系统采集和查询。

{
"timestamp": "2026-04-02T10:15:30.123Z",
"level": "INFO",
"logger": "mimirq.rag.engine",
"message": "RAG query completed",
"request_id": "req-a1b2c3d4",
"user_id": "u-1001",
"duration_ms": 1280,
"retrieval_count": 12,
"model": "gpt-4o"
}

关键日志字段:

字段说明
request_id请求追踪 ID,与 Trace ID 关联
user_id操作用户
duration_ms操作耗时(毫秒)
dataset_id数据集 ID(数据操作时)
error_code错误码(仅错误日志)
info

日志级别通过环境变量 LOG_LEVEL 控制,支持 DEBUG / INFO / WARNING / ERROR,默认为 INFO

告警规则

以下为推荐的 Prometheus 告警规则:

groups:
- name: mimirq-alerts
rules:
- alert: HighErrorRate
expr: |
rate(mimirq_http_requests_total{status=~"5.."}[5m])
/ rate(mimirq_http_requests_total[5m]) > 0.05
for: 3m
labels:
severity: critical
annotations:
summary: "MimirQ 5xx 错误率超过 5%"

- alert: TaskQueueBacklog
expr: mimirq_task_queue_depth > 500
for: 5m
labels:
severity: warning
annotations:
summary: "任务队列积压超过 500"

- alert: HighRAGLatency
expr: |
histogram_quantile(0.95, rate(mimirq_rag_query_duration_seconds_bucket[5m])) > 10
for: 5m
labels:
severity: warning
annotations:
summary: "RAG P95 延迟超过 10 秒"

- alert: DBConnectionPoolExhausted
expr: |
mimirq_db_pool_connections{state="used"}
/ mimirq_db_pool_connections{state="total"} > 0.9
for: 2m
labels:
severity: critical
annotations:
summary: "数据库连接池使用率超过 90%"

分布式追踪

MimirQ 通过 OpenTelemetry SDK 上报 Trace 数据,支持 Jaeger 和 OTLP 兼容的后端。

# 环境变量配置
OTEL_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4317
OTEL_SERVICE_NAME=mimirq-api

追踪覆盖的关键 Span:

Span 名称说明
http.requestHTTP 请求入口
rag.queryRAG 查询完整流程
rag.retrieval向量检索 + 重排
rag.generationLLM 生成阶段
task.process异步任务处理
db.query数据库查询
warning

生产环境建议设置采样率(OTEL_TRACES_SAMPLER_ARG=0.1),避免 Trace 数据量过大影响性能。


相关链接