1. 引言

Milvus 作为一款高性能的 开源向量数据库,被广泛应用于 AI 搜索、推荐系统、计算机视觉、自然语言处理(NLP) 等领域。为了确保 Milvus 在生产环境中的稳定运行,需要对其进行 实时监控与运维,防止 查询延迟、存储瓶颈、节点崩溃 等问题影响业务。
Prometheus + Grafana 是业界主流的开源监控解决方案,可用于 收集 Milvus 指标、分析查询性能、监控系统健康状态,并通过 可视化仪表盘 提供实时告警和故障排查能力。本篇文章将介绍 如何使用 Prometheus + Grafana 监控 Milvus 集群,并提供完整的 安装、配置、使用指南,帮助开发者构建 高效的 Milvus 监控体系


2. 为什么需要 Milvus 监控?

生产环境 中,Milvus 需要处理 亿级向量数据高并发查询,如果没有有效的监控手段,可能会面临以下问题:

2.1 关键监控指标

监控维度 关键指标 问题排查
系统资源 CPU、内存、磁盘、网络 监控资源占用,防止系统崩溃
查询性能 QPS、查询延迟 识别慢查询,优化索引策略
数据存储 向量数量、存储大小 监测数据增长,优化存储方案
节点状态 QueryNode、DataNode 负载 发现节点故障,进行自动恢复
日志分析 WAL 日志、错误日志 识别异常行为,及时修复

通过 Prometheus + Grafana,可以 实时监测 Milvus 运行状态,并在发生异常时 触发告警,保障业务稳定运行。


3. Milvus 监控架构(Prometheus + Grafana)

3.1 监控架构概览

+-------------------------------------+
|  用户查询 (Query)                   |
+-------------------------------------+
          |
+----------------------------+
|  Milvus 集群 (Proxy / QueryNode / DataNode)  |
+----------------------------+
          |
+----------------------------+
|  Milvus Exporter (提供监控数据)  |
+----------------------------+
          |
+----------------------------+
|  Prometheus (存储指标数据)  |
+----------------------------+
          |
+----------------------------+
|  Grafana (可视化仪表盘)     |
+----------------------------+
  • Milvus Exporter:提供 Milvus 内部状态的监控数据(HTTP API)
  • Prometheus:定期抓取 Milvus Exporter 提供的指标,存储到时间序列数据库。
  • Grafana:基于 Prometheus 数据,提供 可视化监控面板,并设置告警规则。

4. 安装与配置 Prometheus + Grafana 监控 Milvus

4.1 安装 Milvus

如果还未安装 Milvus,可以使用 Docker 方式部署:

docker run -d --name milvus-standalone \
  -p 19530:19530 \
  milvusdb/milvus:latest

4.2 安装 Prometheus

Prometheus 负责 收集和存储 Milvus 监控指标

(1)下载 Prometheus 并解压

wget https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz
tar -xvzf prometheus-2.41.0.linux-amd64.tar.gz
cd prometheus-2.41.0.linux-amd64

(2)配置 Prometheus 抓取 Milvus 监控数据

编辑 prometheus.yml

global:
  scrape_interval: 15s  # 每 15 秒抓取一次数据

scrape_configs:
  - job_name: "milvus"
    static_configs:
      - targets: ["localhost:9091"]  # Milvus Exporter 地址

(3)启动 Prometheus

./prometheus --config.file=prometheus.yml

验证 Prometheus 是否运行:

http://localhost:9090

4.3 安装 Milvus Exporter

Milvus 提供 Exporter 用于向 Prometheus 暴露监控数据。

(1)下载 Milvus Exporter

git clone https://github.com/milvus-io/milvus-exporter.git
cd milvus-exporter

(2)配置 Milvus Exporter

修改 config.yaml

milvus_addr: "localhost:19530"
listen_port: 9091  # 监控数据端口

(3)运行 Milvus Exporter

python3 main.py

检查 Exporter 是否运行:

curl http://localhost:9091/metrics

4.4 安装 Grafana

Grafana 负责 可视化 Prometheus 数据

(1)安装 Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana

访问 **http://localhost:3000**,默认账号密码:

Username: admin
Password: admin

(2)配置数据源

  • 进入 Grafana 管理界面,点击 Configuration > Data Sources

  • 添加数据源,选择 Prometheus,并填入:

    URL: http://localhost:9090
    

4.5 创建 Milvus 监控仪表盘

Grafana 中导入 Milvus 监控面板(Dashboard),可以使用官方 Dashboard ID 15109

https://grafana.com/grafana/dashboards/15109

关键监控项:

  • 查询性能:QPS(Queries Per Second)、查询延迟(Latency)。
  • 存储情况:向量数据大小、索引占用情况。
  • 系统资源:CPU / 内存 / 磁盘使用率。
  • 集群状态:Proxy、QueryNode、DataNode 负载情况。

5. 设置告警(Alert)

Grafana > Alerting > Create Alert Rule 中,设置 告警规则,例如:

示例 1:查询延迟过高

Metric: milvus_query_latency_seconds
Condition: 当查询延迟 > 500ms 持续 1 分钟
Action: 发送 Email / Slack / PagerDuty 告警

示例 2:存储容量不足

Metric: milvus_storage_used_bytes
Condition: 当存储空间使用超过 80% 持续 5 分钟
Action: 发送告警通知

6. 总结

监控内容 Prometheus + Grafana 提供的功能
查询性能 实时监控 QPS、查询延迟
存储管理 监测数据量、索引存储占用
系统健康状态 监控 CPU、内存、磁盘占用
节点负载均衡 观察 QueryNode / DataNode 负载
故障告警 发生异常时触发 Email/Slack/PagerDuty 告警

生产环境推荐方案

  • Prometheus 采集 Milvus 指标,存储时间序列数据
  • Grafana 可视化 Milvus 查询性能、存储、节点状态
  • 设置告警规则,自动发现异常并通知运维团队

🚀 **通过 Prometheus + Grafana 监控 Milvus,可以确保 AI 搜索系统高效、稳定运行!**🚀


📌 有什么问题和经验想分享?欢迎在评论区交流、点赞、收藏、关注! 🎯

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐