
2025 年云原生运维实战文档 X 篇原创计划第 15 篇|Milvus 最佳实战「2025」系列第 1 篇
大家好,我是术哥,一名专注于云原生、AI技术的布道者。作为 KubeSphere Ambassador 和 Milvus 北辰使者,我很荣幸能在「运维有术」与大家分享经验。
还在为复杂的向量数据库运维而头疼吗?还在为监控指标查询、故障排查而翻遍各种文档吗?传统的运维方式面临着这样的困境:
那怎么解决?这篇"基于 MCP 的 Milvus 运维新范式"指南正是为你准备的!
MCP(Model Context Protocol) 作为近两个月最火的技术之一,正在重新定义运维领域的工作方式。各大服务商、中间件厂商纷纷推出适配自家产品的 MCP Server,这不仅仅是技术的升级,更是运维范式的革命。
Vibe Coding = “氛围编程”或者叫“沉浸式编程” Vibe Ops = “氛围运维”或者叫“沉浸式运维” MCP 是 Milvus 运维新范式的核心技术,它通过自然语言直接操作 Milvus,无需记忆复杂命令。MCP 不仅让运维变得更简单,还让故障诊断变得更高效。
核心价值:让你用最自然的对话方式获得企业级运维能力
本文将带你体验这场运维革命,看看在大模型的数据基石——向量数据库 Milvus 的运维、监控场景中,MCP 如何带来颠覆性的新范式。从传统的"人找工具"到现在的"工具找人",从复杂的命令行操作到自然的对话交互,这就是 2025 年运维的未来!
文章末尾有演示视频,请看完再走!
在开始我们的"运维革命"之前,先来认识一下今天的主要"演员"们。就像搭建一个智能家居系统需要各种设备协同工作一样,我们的 MCP 运维新范式也需要几个关键组件的完美配合。
向量数据库:Milvus v2.5.13
你可能会问:"为什么不用最新的 v2.6.0 呢?" 这就像买车一样,最新款虽然功能更炫酷,但成熟稳定的版本往往更适合生产环境。考虑到其他组件的兼容性和生产可用性,我们选择了久经考验的 v2.5.13 作为今天的主角。
监控组件:Prometheus v3.4.1
如果说 Milvus 是我们的"数据大脑",那么 Prometheus 就是贴心的"健康管家"。它时刻关注着 Milvus 的一举一动,就像私人医生一样,随时准备告诉我们系统的健康状况。
MCP Server 双剑合璧
这两个 MCP Server 就像是我们和系统之间的"智能翻译官",把我们的自然语言需求翻译成系统能理解的指令。再也不用记那些复杂的命令行了!
大模型及API-Key
我使用的是基石智算CoresHub提供的 QwQ-32B 和 DeepSeek-R1 模型。就像选择不同的专家顾问一样,你可以根据自己的需求和预算选择合适的大模型服务商。
通过以下链接 https://account.coreshub.cn/signup?invite=ejNRQjJqd2g=,登录基石智算(CoresHub)并注册账户。
进入大模型服务管理页面,在左侧导航栏中选择「 API 密钥管理」-「创建API 密钥」,复制生成的密钥(保存备用)。
好了,"演员"介绍完毕,现在开始搭建我们的"舞台"!今天我们选择用 Docker 来部署 Milvus Standalone 版本。为什么选择 Standalone?因为简单!我们先从单机版入手,掌握核心原理后,集群版也就是举一反三的事情了。
小贴士:集群版的部署思路完全一样,只是配置稍微复杂一些。后续我会推出完整的集群版实战指南,记得关注哦!
首先,我们需要给 Milvus 准备一个"家":
mkdir -p /data/containers/milvus
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 的身份认证。这在生产环境中是大忌!就像你不会把家门钥匙给陌生人一样,我们需要给 Milvus 加上一把"安全锁"。
启用身份验证后,访问 Milvus 就需要"通行证"了。系统会自动创建一个管理员账户:
rootMilvus生产环境警告:本文为了演示方便,MinIO 的密码没有修改。在真实的生产环境中,请务必修改所有默认密码!安全无小事!
现在让我们给 Milvus 穿上"安全马甲",编辑 docker-compose.yml,在 Milvus 容器配置中增加认证开关:
......
environment:
......
common.security.authorizationEnabled: true
配置完成后,就到了激动人心的"点火"时刻!就像启动一台精密的机器一样,我们用一条简单的命令就能让整个 Milvus 生态系统运转起来:
温馨提示:本文使用的是演示配置,生产环境请根据实际需求参考官方文档进行性能调优。
docker compose up -d
启动命令执行后,我们需要确认所有"演员"都已就位。这就像演出前的最后彩排,每个角色都要检查一遍:
$ 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
这里要给 Milvus 团队点个大大的赞!从 v2.5.0 开始,他们贴心地提供了一个颜值超高的图形化管理界面 Milvus Web UI。这就像给专业的数据库穿上了时尚的外衣,让复杂的系统管理变得赏心悦目。
通过这个 Web UI,你可以:
赶紧打开浏览器,输入下面的地址来欣赏一下这个"美貌与智慧并存"的管理界面:
http://${MILVUS_IP}:9091/webui
Milvus 不仅颜值高,还很"贴心"——自带了完整的监控指标接口!这就像买车送导航一样,开箱即用。
技术小贴士:Docker 部署的 Standalone 版本所有监控指标都通过一个统一入口提供,简单高效!
让我们来看看 Milvus 的"体检报告":
http://<component-host>:9091/metrics
恭喜!Milvus 已经成功"入住"我们的服务器了。现在我们需要给它配备一个专业的"健康顾问"——Prometheus。如果说 Milvus 是我们的核心业务系统,那么 Prometheus 就是那个 24 小时不眠不休的"监控卫士"。
让我们开始搭建这个"监控指挥中心":
mkdir -p /data/containers/prometheus
就像搬新家要先整理储物间一样,我们需要给 Prometheus 准备一个专门存放监控数据的"仓库":
cd /data/containers/prometheus
mkdir prometheus-data
chown 65534:65534 prometheus-data
权限小知识:这里的
65534:65534是 Prometheus 容器内部使用的用户 ID,确保容器能正常读写数据目录。
创建 docker-compose.yml 配置文件:
name: 'prometheus'
services:
prometheus:
#restart: always
image:prom/prometheus
container_name:prometheus
environment:
-TZ=Asia/Shanghai
ports:
-"9090:9090"
volumes:
-./prometheus-data:/prometheus
-./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
default:
name:prom
接下来创建 Prometheus 的配置文件 prometheus.yml。这就像给新员工准备工作手册一样,告诉 Prometheus 应该监控哪些目标、多久检查一次等等:
# my global config
global:
scrape_interval:15s# Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval:15s# Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
-static_configs:
-targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
-job_name:"prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
-targets:["localhost:9090"]
# The label name is added as a label `label_name=<label_value>` to any timeseries scraped from this config.
labels:
app:"prometheus"
万事俱备,只欠"点火"!现在让我们唤醒这位"监控卫士":
docker compose up -d
启动后,我们需要确认 Prometheus 是否已经"上岗"并开始工作:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
prometheus prom/prometheus "/bin/prometheus --c…" prometheus 11 seconds ago Up 10 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
是时候欣赏一下 Prometheus 的"工作台"了!打开浏览器,输入下面的地址:
http://${PROMETHEUS_IP}:9090
如果看到了 Prometheus 的经典界面,恭喜你!监控系统已经成功"入驻"。
现在 Prometheus 虽然启动了,但它还不知道要监控谁。就像新来的保安需要一份"巡逻清单"一样,我们需要告诉 Prometheus 去监控 Milvus 和服务器节点。
Milvus 服务启动后已经提供了适配 Prometheus 的 metrics 指标,稍后我们在 Prometheus 服务配置文件中增加。
想要全面了解 Milvus 的运行状况,光监控应用本身是不够的,我们还需要监控"地基"——服务器的硬件资源。Node-Exporter 就是这样一个"硬件侦探",专门负责收集 CPU、内存、磁盘、网络等系统指标。
监控哲学:应用监控 + 系统监控 = 完整的运维视角
让我们开始安装这个"硬件侦探":
mkdir -p /data/containers/node_exporter
创建 docker-compose.yml 配置文件:
services:
node_exporter:
image:quay.io/prometheus/node-exporter:latest
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'
"硬件侦探"的装备准备完毕,现在让它开始工作:
docker compose up -d
让我们确认这位"硬件侦探"是否已经开始"巡逻":
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
node_exporter quay.io/prometheus/node-exporter:latest "/bin/node_exporter …" node_exporter About a minute ago Up About a minute
使用以下 URL 访问 Node Exporter 是否正常:
http://${Node_Exporter_IP}:9100
监控小贴士:监控数据采集使用的URL 是
http://${Node_Exporter_IP}:9100/metrics
现在我们需要更新 Prometheus 的配置文件,把 Milvus 和 Node-Exporter 加入到监控清单中。这就像给保安更新巡逻路线一样重要!
在 Prometheus 配置中增加 Milvus 服务和 Node的监控配置
prometheus.yml,在 scrape_configs 配置小节中增加以下内容:.....
scrape_configs:
.....(原有内容保留不变)
# 增加 Node 监控配置
-job_name:"node"
static_configs:
-targets:["192.168.9.121:9100"]
labels:
app:"node-exporter"
job:"node"
node:"milvus-node"
# 增加 Milvus 服务监控配置
-job_name:"milvus"
static_configs:
-targets:["192.168.9.121:9091"]
labels:
app:"milvus-standalone"
job:"milvus"
docker compose stop
docker compose start
太棒了!监控系统已经搭建完成,现在我们要迎来今天的另一个"主角"——MCP Server!如果说前面的 Milvus 和 Prometheus 是"演员",那么 MCP Server 就是那个能让"演员"和"导演"(大语言模型)无缝沟通的"翻译官"。
首先安装 Milvus 的 MCP Server,它就像是 Milvus 的"代言人",专门负责把 Milvus 的各种功能"翻译"成大模型能理解的语言。
我们使用 Milvus 官方出品的 mcp-server-milvus。这个"翻译官"支持两种"沟通方式":
选择建议:我们采用 SSE Mode,因为它更适合 Web 环境,响应更及时!
cd /srv/mcp-servers
git clone https://github.com/zilliztech/mcp-server-milvus.git
cd mcp-server-milvus
cd src/mcp_server_milvus
cp example.env .env
MILVUS_URI="http://192.168.3.121:19530" # MILVUS 服务IP地址和端口号
MILVUS_TOKEN="root:Milvus" # Milvus 用户名和密码
MILVUS_DB="default" # 需要访问的 Milvus 数据库
cd mcp-server-milvus
uv run src/mcp_server_milvus/server.py --sse --port 8000
$ uv run src/mcp_server_milvus/server.py --sse --port 8000
Built mcp-server-milvus @ file:///Users/opsxlabs/mcp-servers/mcp-server-milvus
Uninstalled 3 packages in 16ms
Installed 12 packages in 9ms
[06/16/25 20:53:16] INFO Starting MCP server 'Milvus' with server.py:846
transport 'sse' on
http://0.0.0.0:8000/sse
INFO: Started server process [15269]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
接下来安装 Prometheus 的 MCP Server。如果说 Milvus MCP Server 是"数据翻译官",那么 Prometheus MCP Server 就是"监控翻译官",专门负责把监控数据"提取"给大模型。
使用社区用户贡献的 prometheus-mcp-server。
cd ~/mcp-servers
git clone https://github.com/pab1it0/prometheus-mcp-server.git
该代码默认不支持 SSE 的方式启动,正好我也想演示一下 stdio 的调用方式,所以就不修改源码,直接使用 stdio 的方式调用。
恭喜!我们的"翻译官团队"已经就位。现在需要一个"指挥中心"来统一调度这些翻译官,这就是 MCP 客户端的作用。
CheryStudio 就像是我们的"智能指挥中心",它不仅支持 MCP 协议,还提供了友好的图形界面。通过它,我们可以像指挥交响乐团一样,让各个 MCP Server 协同工作。
为什么选择 CheryStudio?
本文使用 CheryStudio 作为测试工具,支持两种方式添加 MCP Server:
本文为了保持跟其他 MCP 客户端工具配置的一致性,采用了 JSON 配置文件的方式。
Step1:添加 Milvus-mcp-server
{
"mcpServers": {
"milvus-sse": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse"
}
}
}
Step2:添加 prometheus-mcp-server
在对话窗口选择 MCP 服务器,即可。
激动人心的时刻到了!现在我们要亲自体验一下这个"运维新范式"的魅力。准备好见证奇迹了吗?
让我们先来测试一下 Milvus 的管理功能。通过自然语言,我们就能像和朋友聊天一样操作数据库!
问题1:列出 Milvus Collections
在 CheryStudio 中,我们可以用最自然的方式询问:
我的Milvus数据库中有哪些集合?
看!不需要记忆复杂的 API 调用,不需要查阅文档,就像和同事聊天一样简单。
问题2:创建 Collection
创建数据库集合也变得如此简单,只需要用自然语言描述你的需求:
在 Milvus 中创建一个新的 collection 名字为 'rag_test',其中包含title(string), content(string), vector(128 dimensions)
运维新范式的魅力:以前需要查阅 API 文档、编写代码的复杂操作,现在只需要一句话!
一起看看视频效果!
运维有术
现在让我们体验一下智能监控的威力。通过 Prometheus MCP Server,我们可以用自然语言查询各种监控指标。
7.2.1 巡检 Milvus 节点状态
查询milvus节点,instance为 192.168.9.121:9100的cpu、内存、磁盘分区/data使用率,给出巡检报告
7.2.2 巡检 Milvus 服务状态
查看 Milvus 服务关于milvus_rootcoord的监控指标,出具巡检报告
这就是未来的运维方式:告别复杂的 PromQL 查询语句,告别繁琐的监控面板切换,一句话搞定所有监控需求!
一起看看视频效果!
运维有术
通过今天的实践,我们见证了 MCP 给运维领域带来的革命性变化。从复杂的 API 调用到自然语言交互,从繁琐的监控查询到智能化的状态巡检,这不仅仅是技术的进步,更是运维思维的升级。
实战心得与未来展望:
在这次基于 MCP 的 Milvus 智能运维探索中,我们积累了一些宝贵的实战经验,也发现了一些值得深入思考的问题,希望能给大家带来启发:
小结: 本文的探索只是冰山一角,旨在抛砖引玉,为大家打开智能运维的新世界大门。MCP 的潜力远不止于此,更多激动人心的功能和应用场景,正等待着各位运维大咖、技术极客们去发掘、去实验!让我们一起,拥抱智能运维的未来!
未来已来:当 AI 成为运维工程师的得力助手,我们的工作将变得更加高效、智能、有趣!
获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、大数据、AI 大模型、Milvus 向量库等实战技能。
免责声明
Get 本文实战视频(请注意,文档视频异步发行,请先关注)
版权声明