Milvus+Prometheus+Grafana部署
2025 年云原生运维实战文档 X 篇原创计划第 16 篇|Milvus 最佳实战「2025」系列第 2 篇
大家好,我是知黑守白,一名专注AI技术的布道者。
本文将手把手带你从零开始,搭建一套完整的 Milvus 监控体系。无论你是运维新手还是资深工程师,都能从中获得实用的技术干货。我不仅会讲解每个组件的部署细节,还会分享生产环境中的最佳实践和踩坑经验。
1. 技术架构全景图
在开始我们的监控体系搭建之前,先来认识一下今天的主要"演员"们。就像组建一支专业的运维团队一样,每个组件都有自己独特的职责和价值。
1.1 核心主角:向量数据库 Milvus
Milvus v2.5.13 - 我们今天的绝对主角
你可能会疑惑:"为什么不选择最新的 v2.6.0 呢?" 这里有个重要的生产环境选型原则:稳定性永远比新特性更重要。v2.5.13 经过了大量生产环境的验证,在稳定性和兼容性方面表现出色,是当前最适合生产部署的版本。
1.2 监控大脑:Prometheus
Prometheus v3.4.1 - 我们的监控指挥中心
如果说 Milvus 是我们的"数据引擎",那么 Prometheus 就是无处不在的"健康卫士"。它不仅能实时收集各种指标数据,还具备强大的查询能力和灵活的告警规则配置。选择 v3.4.1 是因为这个版本在性能和功能上都有显著提升。
1.3 可视化专家:Grafana
Grafana v11.6.3 - 数据可视化的艺术大师
Grafana 将枯燥的监控数据转化为直观美观的图表和仪表盘。v11.6.3 版本不仅界面更加现代化,还提供了更丰富的图表类型和更强大的数据处理能力。
1.4 告警管家:Alertmanager
Alertmanager v0.28.1 - 智能告警调度中心
Alertmanager 负责接收 Prometheus 发送的告警信息,并根据预设规则进行分组、抑制、静默和路由,最终通过邮件、微信、钉钉等方式通知相关人员。它就像一个智能的告警管家,确保重要问题能及时传达给正确的人。
2. 环境准备与安全配置
在正式开始部署之前,我们需要做好充分的准备工作。安全性是生产环境的第一要务,因此本文将为所有 Prometheus 相关组件配置身份认证,这需要我们提前生成经过 bcrypt 加密的密码。
2.1 密码加密方案选择
为了保障系统安全,我们需要生成 bcrypt 哈希密码。以下是三种常用的生成方法,各有优劣:
方案一:Python 脚本生成(推荐指数:⭐⭐⭐⭐)
优势:完全可控,安全性最高 劣势:需要安装 Python 依赖
首先安装 bcrypt 库:
- Debian/Ubuntu 系统:
apt install python3-bcrypt
- 通用方式:
pip install bcrypt
import getpass import bcrypt
password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())!
print(hashed_password.decode())
保存脚本为gen-pass.py
然后运行:
$ python3 gen-pass.py
按提示输入原始密码(admin),会生成加密后的密码。
password:
$2b$12$jajAqtz72Nwr4aCSmHBt3.bcQsaRHAXd2eeVH.hn7ViS87KVdDU7K
重要提醒:请妥善保存生成的哈希密码,后续配置中会多次使用!
方案二:在线加密工具(推荐指数:⭐⭐)
优势:操作简单,无需本地环境
劣势:存在安全风险,不建议生产环境使用
可以使用 Bcrypt Hash Generator 在线工具,但请注意这种方式存在密码泄露风险。
方案三:Docker 容器生成(推荐指数:⭐⭐⭐⭐⭐)
优势:简单便捷,安全可控,无需安装依赖
劣势:需要 Docker 环境
本文推荐使用这种方式!我们使用封装好的 Docker 镜像来生成演示密码 admin
:
$ docker run --rm registry.gitlab.com/epicdocker/bcrypt:latest hash admin 12
> $2a$12$agZouh6t/ox4xZG8/SARbuEorguwoO0NjlLJ06woLk8HAsQg4wD5i
3. 部署核心组件 Milvus
准备工作完成后,现在开始搭建我们监控体系的核心——Milvus 向量数据库!我们选择 Docker 方式部署 Standalone 版本,这不仅简化了部署流程,还便于后续的维护和升级。
为什么选择 Standalone 版本?
对于大多数应用场景,Standalone 版本已经能够满足需求,而且具有以下优势:
- 部署简单:一键启动,无需复杂的集群配置
- 资源占用少:适合中小规模应用和学习环境
- 维护成本低:单节点故障排查更直接
- 扩展性好:后续可以平滑升级到集群版
进阶提示:掌握了 Standalone 版本的监控方案后,集群版的监控配置只是在此基础上的扩展,核心原理完全一致。
3.1 获取部署文件
第一步:创建工作目录
为 Milvus 创建专用的工作目录,这样便于后续的管理和维护:
mkdir -p /data/containers/milvus
第二步:下载官方配置文件
从 Milvus 官方 GitHub 仓库获取标准的 Docker Compose 配置文件:
cd /data/containers/milvus
wget https://github.com/milvus-io/milvus/releases/download/v2.5.13/milvus-standalone-docker-compose.yml -O docker-compose.yml
技术细节:这个配置文件包含了 Milvus Standalone 版本运行所需的所有组件,包括 etcd(元数据存储)、MinIO(对象存储)和 Milvus 主服务。
3.2 安全配置优化
安全警告:官方默认配置没有启用身份认证,这在生产环境中是极其危险的!就像把银行金库的门敞开一样,任何人都可以随意访问你的数据。
为什么必须启用认证?
在生产环境中,未启用认证的 Milvus 实例面临以下风险:
- 数据泄露:任何人都可以查询和下载向量数据
- 恶意操作:攻击者可能删除或篡改重要数据
- 合规问题:不符合企业安全规范和法规要求
认证配置说明
启用身份验证后,Milvus 会自动创建默认管理员账户:
- 用户名:
root
- 默认密码:
Milvus
生产环境最佳实践:
- 启用认证后立即修改默认密码
- 创建具有最小权限的业务账户
- 定期轮换密码
- 启用访问日志审计
现在让我们为 Milvus 启用安全认证。编辑 docker-compose.yml
文件,在 Milvus 容器的环境变量中添加认证配置:
......
environment:
......
common.security.authorizationEnabled: true
3.3 启动 Milvus 服务
配置完成后,现在可以启动 Milvus 服务了。Docker Compose 会自动拉取所需的镜像并启动所有相关组件:
docker compose up -d
3.4 服务状态验证
启动命令执行后,我们需要逐一验证各个组件是否正常运行。这个验证过程至关重要,确保后续的监控配置能够正常工作。
第一步:检查容器运行状态
使用以下命令查看所有容器的运行状态:
$ docker compose ps
WARN[0000] /data/containers/milvus/docker-compose.yml: `version` is obsolete
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
milvus-etcd quay.io/coreos/etcd:v3.5.18 "etcd -advertise-cli…" etcd 11 seconds ago Up 9 seconds (health: starting) 2379-2380/tcp
milvus-minio minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent…" minio 11 seconds ago Up 9 seconds (health: starting) 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp
milvus-standalone milvusdb/milvus:v2.5.13 "/tini -- milvus run…" standalone 11 seconds ago Up 9 seconds (health: starting) 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp
第二步:Web UI 功能验证
从 Milvus v2.5.0 开始,官方提供了功能强大的 Web 管理界面,这是一个重大的用户体验提升。通过 Web UI,我们可以:
- 实时监控:查看系统状态、连接数、查询性能等关键指标
- 数据管理:浏览数据库、集合、分区等数据结构
- 查询测试:直接在界面中执行向量搜索和查询
- 系统配置:查看和调整系统参数
通过这个 Web UI,你可以:
- 实时查看系统运行状态
- 监控各组件的健康指标
- 管理数据库和集合
- 查看详细的系统配置
赶紧打开浏览器,输入下面的地址来欣赏一下这个"美貌与智慧并存"的管理界面:
http://${MILVUS_IP}:9091/webui
3.5 监控接口验证
在配置 Prometheus 监控之前,我们需要确认 Milvus 的监控指标接口是否正常工作。Milvus 内置了完整的 Prometheus 监控指标,这为后续的监控配置提供了数据基础。
命令行验证监控指标接口:
curl http://<your-server-ip>:9091/metrics
或者在浏览器中访问:
http://<your-server-ip>:9091/metrics
监控指标说明:
Milvus 提供了丰富的监控指标,包括:
- 系统指标:CPU、内存、磁盘使用情况
- 业务指标:查询 QPS、响应时间、错误率
- 存储指标:数据量、索引状态、分片信息
- 网络指标:连接数、流量统计
技术优势:Standalone 版本将所有组件的监控指标统一到一个端点,大大简化了监控配置的复杂度。
4. 部署告警管理系统
4.1 Alertmanager 部署配置
Alertmanager 简介
Alertmanager 是 Prometheus 生态系统中的告警管理组件,负责处理由 Prometheus 服务器发送的告警。它具有以下核心功能:
- 告警去重:避免重复告警造成的干扰
- 告警分组:将相关告警合并处理
- 告警路由:根据规则将告警发送给不同的接收者
- 告警抑制:在特定条件下暂停某些告警
第一步:创建工作目录
mkdir -p /data/containers/alertmanager
cd /data/containers/alertmanager
第二步:创建 Docker Compose 配置
创建 docker-compose.yml
文件:
name: 'alertmanager' services: alertmanager: #restart: always image:prom/alertmanager:v0.28.1 container_name:alertmanager environment: -TZ=Asia/Shanghai command: -'--config.file=/etc/alertmanager/alertmanager.yml' -'--web.config.file=/etc/alertmanager/web.yml' ports: #- "127.0.0.1:9093:9093" -"9093:9093" volumes: -./alertmanager.yml:/etc/alertmanager/alertmanager.yml -./web.yml:/etc/alertmanager/web.yml
networks:
default:
name:alertmanager
第三步:创建 Alertmanager 主配置文件
创建 alertmanager.yml
配置文件(从官方镜像中复制的默认配置,未作任何修改,生产环境需要根据需求修改):
route:
group_by:['alertname']
group_wait:30s
group_interval:5m
repeat_interval:1h
receiver:'web.hook'
receivers:
-name:'web.hook'
webhook_configs:
-url:'http://127.0.0.1:5001/'
inhibit_rules:
-source_match:
severity:'critical'
target_match:
severity:'warning'
equal:['alertname','dev','instance']
配置参数说明:
group_by
:告警分组字段,相同 alertname 的告警会被分组group_wait
:分组等待时间,收到告警后等待 30 秒再发送group_interval
:分组间隔时间,同一分组的后续告警间隔 5 分钟发送repeat_interval
:重复发送间隔,1 小时后重复发送未解决的告警receivers
:告警接收者配置,这里配置为 webhook 方式
第四步:创建 Web 认证配置
创建 web.yml
文件,启用 HTTP Basic 认证:
basic_auth_users:
admin: $2a$12$agZouh6t/ox4xZG8/SARbuEorguwoO0NjlLJ06woLk8HAsQg4wD5i
安全提示:这里的密码使用准备阶段用工具生成的密码。
4.2 启动 Alertmanager 服务
启动服务:
docker compose up -d
4.3 服务状态验证
第一步:检查容器运行状态
docker compose ps
正常运行状态示例:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
alertmanager prom/alertmanager:v0.28.1 "/bin/alertmanager -…" alertmanager 3 seconds ago Up 2 seconds 0.0.0.0:9093->9093/tcp
第二步:Web 界面验证
在浏览器中访问 Alertmanager 管理界面:
http://<your-server-ip>:9093
登录验证:
- 用户名:
admin
- 密码:
admin
登录成功后,你将看到 Alertmanager 的主界面。此时还没有告警信息,这是正常的,因为我们还没有配置 Prometheus 的告警规则。
5. 部署监控核心组件
5.1 Prometheus 监控服务部署
第一步:创建工作目录
# 创建 Prometheus 主目录
mkdir -p /data/containers/prometheus
cd /data/containers/prometheus创建告警规则目录
mkdir -p rules
第二步:创建 Docker Compose 配置
创建 docker-compose.yml
文件:
name: 'prometheus'
services:
prometheus:
#restart: always
image:prom/prometheus:v3.4.1
container_name:prometheus
user:root
environment:
-TZ=Asia/Shanghai
command:
-'--config.file=/etc/prometheus/prometheus.yml'
-'--web.config.file=/etc/prometheus/web.yml'
ports:
-"9090:9090"
volumes:
-./prometheus-data:/prometheus
-./rules:/etc/prometheus/rules
-./prometheus.yml:/etc/prometheus/prometheus.yml
-./web.yml:/etc/prometheus/web.yml
networks:
default:
name:prom
第三步:创建 Prometheus 主配置文件
创建 prometheus.yml
配置文件:
# 全局配置
global:
scrape_interval:15s # 数据采集间隔
evaluation_interval:15s# 规则评估间隔Alertmanager 配置
alerting:
alertmanagers:
-static_configs:
-targets:["192.168.9.121:9093"]
## 增加认证配置
basic_auth:
username:"admin"
password:"OpsXLabs2025!"
scheme:http告警规则文件配置
rule_files:
-"/etc/prometheus/rules/*.yml"监控目标配置
scrape_configs:
Prometheus 自监控
-job_name:"prometheus"
basic_auth:
username:admin
password:OpsXLabs2025!
static_configs:
-targets:["localhost:9090"]
labels:
app:"prometheus"
第四步:创建 Web 认证配置
创建 web.yml
文件:
basic_auth_users:
admin: $2a$12$agZouh6t/ox4xZG8/SARbuEorguwoO0NjlLJ06woLk8HAsQg4wD5i
5.2 启动 Prometheus 服务
启动服务:
docker compose up -d
5.3 服务状态验证
第一步:检查容器运行状态
docker compose ps
正常运行状态示例:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
prometheus prom/prometheus:v3.4.1 "/bin/prometheus --c…" prometheus 5 seconds ago Up 4 seconds 0.0.0.0:9090->9090/tcp
第二步:Web 界面验证
在浏览器中访问 Prometheus 管理界面:
http://<your-server-ip>:9090
登录验证:
- 用户名:
admin
- 密码:
admin
登录成功后,你将看到 Prometheus 的主界面。在 「Status → Target Health」 页面可以查看当前的监控目标状态。
6. 部署系统监控组件
6.1 Node Exporter 部署配置
Node Exporter 简介
Node Exporter 是 Prometheus 生态系统中的系统监控组件,专门负责收集服务器硬件和操作系统的监控指标。它提供了完整的系统监控能力:
- 硬件监控:CPU 使用率、内存使用情况、磁盘 I/O 性能
- 网络监控:网络接口流量、连接状态、错误统计
- 系统监控:进程状态、文件系统使用率、系统负载
- 性能监控:上下文切换、中断统计、系统调用
监控架构完整性
一个完整的监控系统需要多个维度的数据:
- 应用层监控:Milvus 业务指标(查询性能、数据量等)
- 系统层监控:服务器资源使用情况(CPU、内存、磁盘)
- 网络层监控:网络连接和流量状态
第一步:创建工作目录
mkdir -p /data/containers/node_exporter
cd /data/containers/node_exporter
第二步:创建 Docker Compose 配置
创建 docker-compose.yml
文件:
services:
node_exporter:
image:prom/node-exporter:v1.9.1
container_name:node_exporter
restart:unless-stopped
cap_add:
-SYS_TIME
environment:
-TZ=Asia/Shanghai
command:
-'--path.rootfs=/host'
network_mode:host
pid:host
volumes:
-'/:/host:ro,rslave'
6.2 启动 Node Exporter 服务
启动服务:
docker compose up -d
6.3 服务状态验证
第一步:检查容器运行状态
docker compose ps
正常运行状态示例:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
node_exporter prom/node-exporter:v1.9.1 "/bin/node_exporter …" node_exporter 4 seconds ago Up 2 seconds
第二步:Web 界面验证
在浏览器中访问 Node Exporter 状态页面:
http://<your-server-ip>:9100
第三步:监控指标验证
验证监控指标接口是否正常:
curl http://<your-server-ip>:9100/metrics
技术说明:Node Exporter 通过
/metrics
端点暴露系统监控指标,Prometheus 会定期从这个端点拉取数据。
7. 配置监控目标集成
7.1 更新 Prometheus 监控配置
现在我们需要将 Milvus 和 Node Exporter 添加到 Prometheus 的监控目标列表中,让 Prometheus 能够定期从这些服务拉取监控数据。
配置原理说明
Prometheus 采用 Pull 模式进行数据采集:
- 服务发现:Prometheus 根据配置文件中的
scrape_configs
发现监控目标 - 数据拉取:按照设定的时间间隔(scrape_interval)主动拉取监控数据
- 数据存储:将拉取到的时序数据存储在本地时序数据库中
- 规则评估:根据告警规则评估是否需要触发告警
修改 Prometheus 配置
编辑 /data/containers/prometheus/prometheus.yml
文件,在 scrape_configs
部分添加以下监控目标:
scrape_configs:
.....(原有内容保留不变)增加 Node 监控配置
-job_name:"node"
static_configs:
-targets:["192.168.9.121:9100"]
labels:
app:"node-exporter"
node:"milvus-node"增加 Milvus 服务监控配置
-job_name:"milvus-standalone"
static_configs:
-targets:["192.168.9.121:9091"]
labels:
app:"milvus-standalone"
job:"milvus"
配置说明:
job_name
:监控任务名称,用于在 Prometheus 中标识不同的监控目标targets
:监控目标的地址和端口labels
:自定义标签,用于在查询和告警中进行分组和过滤
7.2 创建 Milvus 告警规则
告警规则的重要性
告警规则是监控系统的核心组件,它能够:
- 主动发现问题:在问题发生时立即通知运维人员
- 预防故障扩散:通过早期预警避免小问题演变成大故障
- 提供决策依据:基于历史告警数据优化系统架构
创建告警规则文件(以 Milvus 服务状态监控为例)
在 /data/containers/prometheus/rules/
目录下创建 milvus_alert_rules.yml
文件:
groups:
-name:alert_rules
rules:Alert for server down
-alert:MilvusServerDown
expr:up{job="milvus-standalone"}==
for:1m
labels:
severity:page
service:milvus
environment:production
annotations:
summary:"Milvus 实例 {{ $labels.instance }} 宕机"
description:"Milvus 服务不可用!"
告警规则说明:
expr
:告警触发条件,使用 PromQL 查询语言for
:持续时间,条件满足多长时间后触发告警labels
:告警标签,用于分类和路由annotations
:告警描述信息
7.3 重启 Prometheus 服务
重启服务使配置生效:
cd /data/containers/prometheus
docker compose stop
docker compose start
7.4 配置验证
第一步:验证监控目标
在 Prometheus Web 界面中,导航到 「Status → Target health」页面,确认新添加的监控目标状态:
- prometheus:Prometheus 自监控,状态应为 UP
- node:系统监控,状态应为 UP
- milvus-standalone:Milvus 服务监控,状态应为 UP
第二步:验证告警规则
在 Prometheus Web 界面中,导航到 Alerts 页面,确认告警规则已正确加载,在 Alerts 页面可以查看当前的告警状态:
8. 部署可视化大屏
8.1 Grafana 可视化平台部署
Grafana 简介
Grafana 是业界领先的开源可视化和监控平台,它能够:
- 数据可视化:将 Prometheus 的时序数据转换为直观的图表和仪表板
- 多数据源支持:支持 Prometheus、InfluxDB、MySQL 等多种数据源
- 告警管理:提供灵活的告警规则和通知机制
- 用户管理:支持多用户、多组织的权限管理
- 插件生态:丰富的插件生态系统,支持扩展功能
为什么选择 Grafana?
- 专业性:专为监控和可视化设计,功能强大且易用
- 美观性:提供现代化的 UI 界面和丰富的图表类型
- 灵活性:支持自定义仪表板和复杂的查询表达式
- 社区支持:活跃的开源社区和丰富的模板资源
第一步:创建工作目录
mkdir -p /data/containers/grafana
cd /data/containers/grafana
第二步:创建 Docker Compose 配置
创建 docker-compose.yml
文件:
services:
grafana:
image:grafana/grafana-enterprise:11.6.3-ubuntu
#image: grafana/grafana-enterprise
container_name:grafana
restart:unless-stopped
user:'0'
volumes:
-./data:/var/lib/grafana
ports:
-'3000:3000'
networks:
default:
name:grafana
8.2 启动 Grafana 服务
启动服务:
docker compose up -d
8.3 服务状态验证
第一步:检查容器运行状态
$ docker compose ps
正常运行状态示例:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
grafana grafana/grafana-enterprise:11.6.3-ubuntu "/run.sh" grafana 30 seconds ago Up 29 seconds 0.0.0.0:3000->3000/tcp
第二步:Web 界面验证
在浏览器中访问 Grafana Web 界面:
http://服务器IP:3000
登录信息:
- 用户名:
admin
- 密码:
admin
第三步:首次登录配置
首次登录后,建议:
- 修改管理员密码为更复杂的密码
- 配置用户权限和组织设置
- 检查插件安装状态
9. 配置监控可视化仪表板
9.1 配置 Prometheus 数据源
数据源的重要性
Grafana 需要连接到 Prometheus 才能获取监控数据。数据源配置是构建监控仪表板的基础步骤。
第一步:进入数据源配置
在 Grafana 主界面中,导航到:
- 路径:Connections → Data sources → Add data source
- 选择类型:Prometheus
第二步:配置数据源参数
根据实际环境配置以下参数:
基本配置:
- Name:
prometheus121
(建议使用描述性名称) - URL:
http://服务器IP:9090
(替换为实际的 Prometheus 地址) - Access:Server (default)
认证配置:
- Authentication:Basic authentication
- User:
admin
- Password:
admin123
(与 Prometheus web.yml 中配置的密码一致)
高级配置:
- Scrape interval:15s(与 Prometheus 配置保持一致)
- Query timeout:60s
- HTTP Method:POST
第三步:测试数据源连接
点击页面底部的 Save & test 按钮,验证连接:
- 成功提示:"Data source is working"
- 失败排查:检查 URL、认证信息、网络连通性
9.2 配置系统监控仪表板
Node Exporter 仪表板选择
Grafana 社区提供了丰富的 Node Exporter 仪表板模板,我们可以直接导入使用。这些模板经过社区验证,功能完善且美观。
第一步:选择合适的仪表板
访问 Grafana Dashboards 官网,搜索 "Node Exporter":
推荐仪表板:
- ID 1860:Node Exporter Full(最受欢迎,功能全面)
- ID 16098:Node Exporter Dashboard(本文示例,支持 JOB 分组)
- ID 11074:Node Exporter for Prometheus(简洁版本)
第二步:导入仪表板
在 Grafana 中导航到:Dashboards → New → Import
方式一:使用仪表板 ID
直接输入仪表板 ID(本文使用 16098):
方式二:上传 JSON 文件
从官网下载 JSON 文件后上传。
第三步:配置仪表板参数
导入时需要配置:
- Name:Node Exporter Dashboard(可自定义)
- Folder:选择存放文件夹
- Data source:选择之前配置的
prometheus121
第四步:验证仪表板效果
导入成功后,仪表板将显示系统监控数据:
- 系统概览:CPU、内存、磁盘、网络使用情况
- 详细指标:负载、进程、文件系统等
- 历史趋势:时间序列图表展示
仪表板功能说明:
- 实时监控:显示当前系统状态
- 时间范围选择:可查看历史数据
- 告警状态:集成告警规则显示
- 多实例支持:支持监控多台服务器
9.3 配置 Milvus 专用仪表板
Milvus 官方仪表板
Milvus 官方提供了专门的 Grafana 仪表板模板,针对 Milvus 的各个组件进行了优化,能够全面展示 Milvus 的运行状态和性能指标。
第一步:下载官方仪表板文件
根据 Milvus Standalone v2.5 版本下载对应的仪表板文件:
# 下载 Milvus Standalone v2.5 仪表板
wget https://raw.githubusercontent.com/milvus-io/web-content/refs/heads/master/v2.5.x/assets/standalone-monitoring/grafana/dashboards/milvus-standalone-dashboard.json
重要说明:
- Milvus 官方文档默认展示集群版配置
- Milvus Standalone 版本需要使用专门的配置文件
- 不同版本的 Milvus 对应不同的仪表板文件
第二步:导入仪表板到 Grafana
在 Grafana 中导航到:Dashboards → New → Import
选择 Upload dashboard JSON file:
上传下载的 JSON 文件,然后点击 Import:
第三步:配置仪表板参数
导入时配置以下参数:
- Name:Milvus Standalone Dashboard
- Folder:选择合适的文件夹
第四步:验证仪表板功能
导入成功后,可以看到仪表板概览:
Milvus 监控指标分类
Milvus 仪表板包含以下主要监控指标:
- Runtime:运行时状态和资源使用
- Root Coordinator:根协调器性能指标
- Data Coordinator:数据协调器状态
- Index Coordinator:索引协调器监控
- Query Coordinator:查询协调器性能
- Proxy:代理服务监控
- Data Node:数据节点状态
- Index Node:索引节点性能
- Query Node:查询节点监控
第五步:查看详细监控指标
Runtime 指标详情:
展示 Milvus 运行时的核心指标,包括:
- CPU 和内存使用率
- 协程数量和状态
- 垃圾回收统计
- 系统调用统计
Root Coordinator 指标详情:
展示根协调器的性能指标,包括:
- 请求处理速率
- 响应时间分布
- 错误率统计
- 连接状态监控
监控数据说明:
- 某些指标可能因环境和使用情况而无数据显示
- 建议根据实际业务场景调整监控阈值
- 可以自定义添加业务相关的监控面板
10. 监控告警系统验证
10.1 告警系统架构说明
告警实现方案对比
监控告警有两种主要实现方案:
方案 | 优势 | 劣势 | 适用场景 |
---|---|---|---|
Grafana 告警 | 配置简单,界面友好 | 功能相对有限 | 小型项目,简单告警 |
Prometheus + Alertmanager | 功能强大,灵活性高 | 配置复杂 | 企业级项目,复杂告警 |
本文选择方案:Prometheus + Alertmanager
告警流程:
- Prometheus 根据告警规则评估指标数据
- 触发告警 时将告警发送给 Alertmanager
- Alertmanager 处理告警(去重、分组、路由)
- 发送通知 到指定的接收方(邮件、钉钉、微信等)
10.2 告警功能测试
测试目标
验证之前配置的 Milvus 服务可用性告警规则是否正常工作。
第一步:模拟服务故障
停止 Milvus 服务来模拟服务故障:
# 进入 Milvus 部署目录
cd /data/containers/milvus停止 Milvus 服务
docker compose stop
验证服务已停止
docker compose ps
第二步:观察告警状态变化
PENDING 状态(告警触发初期):
访问 Prometheus Web 界面(http://服务器IP:9090),导航到 Status → Rules 或 Alerts 页面。
服务刚停止时,告警状态为 PENDING(等待确认期):
FIRING 状态(告警正式触发):
等待 1 分钟后(根据告警规则中的 for: 1m
配置),告警状态变为 FIRING:
告警状态说明:
- INACTIVE:告警规则未触发
- PENDING:告警条件满足,但未达到持续时间要求
- FIRING:告警正式触发,已发送到 Alertmanager
第三步:验证 Alertmanager 接收
访问 Alertmanager Web 界面(http://服务器IP:9093),查看告警接收情况:
Alertmanager 功能验证:
- 告警接收:确认从 Prometheus 接收到告警
- 告警分组:相同类型的告警会被分组显示
- 告警状态:显示告警的当前状态和持续时间
第四步:恢复服务验证
# 重新启动 Milvus 服务
cd /data/containers/milvus
docker compose start等待几分钟后检查告警状态
告警应该自动解除
注意事项:
- 本文未配置具体的告警通知方式(邮件、钉钉、微信等)
- 生产环境建议配置多种通知渠道
- 可以根据业务需求调整告警阈值和持续时间
写在最后
至此,我们已经成功搭建并验证了 Milvus Standalone 版本的监控、告警与可视化展示一体化解决方案。本文详细阐述了从环境准备、核心组件部署(Milvus、Prometheus、Alertmanager、Node Exporter)到 Grafana 可视化配置的全流程。通过本实践,您不仅掌握了各组件的部署细节,更理解了如何构建一个高效、可靠的 Milvus 监控体系。
受限于篇幅,本文在监控资源方面未深入探讨 etcd 和 Minio 的监控,告警通知方式也仅限于基础验证。未来,我们将以专题短文的形式,继续分享这些进阶内容,包括更丰富的告警通知集成(如邮件、钉钉、微信)、更细致的性能调优以及生产环境下的高可用实践。敬请持续关注,共同探索 Milvus 智能运维的更多可能性!
感谢大家的阅读和支持,期待下一次的"开盲盒"分享!
免责声明
- 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
- 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境。由此引发的任何问题,作者概不负责!