适用版本:PVE 6/7/8 全系列
示例环境:Ubuntu 22.04 + Graphite 1.3 + Carbon-cache
前言
你是否知道,PVE 内置的 pvestatd 服务每 30 秒就会采集一次 CPU、内存、磁盘、网络等核心指标?遗憾的是,这些宝贵的数据默认只静静地躺在日志文件中。
只需在 Web 界面中轻点几下,开启「Metric Server → Graphite」开关,这些数据便能实时、低开销地推送到 Graphite 时序数据库。此后,无论是使用 Graphite 自带的 Web 界面还是更强大的 Grafana,你都能轻松构建出集群健康度的可视化大屏。整个过程无需安装任何额外代理或插件,几乎是零成本。
1. 架构 30 秒速览
+----------------+ UDP/TCP 2003/2004 +------------------+
| PVE Node 1-8 | ---------------------------> | Graphite/Carbon |
| pvestatd | 明文文本行 | carbon-cache |
+----------------+ +------------------+
↑
Grafana/Web 直接查询
- 传输协议:TCP/UDP 均可,端口 2003(TCP)、2004(UDP)
- 数据格式:
metric_path value timestamp\n 形式的纯文本行
- 无需认证:建议在内网环境使用,若需跨公网,请配置 VPN 或防火墙白名单策略。
2. 准备 Graphite 接收端
2.1 一键容器/主机安装(Ubuntu 示例)
apt update && apt install -y graphite-web graphite-carbon
# 安装过程提示「是否删除数据库」选 No,保留默认 SQLite 即可
2.2 打开监听端口
编辑 /etc/carbon/carbon.conf,找到以下两行,去掉注释并将地址改为 0.0.0.0 以监听所有接口:
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2003
UDP_RECEIVER_INTERFACE = 0.0.0.0
UDP_RECEIVER_PORT = 2004
保存后,重启 Carbon 服务使配置生效:
systemctl restart carbon-cache
使用以下命令检查端口是否已成功监听:
ss -tunlp | grep 2003
2.3 验证 Graphite Web 能打开
在浏览器中访问 http://<你的Graphite服务器IP>,如果能看到「Graphite Browser」页面即表示安装成功。初期使用,默认的 SQLite 数据库完全足够。
3. PVE 侧 3 步连线
- 登录任意 PVE 节点的 Web UI → 左侧导航栏点击
Datacenter → 选择 Metric Server → 点击 Add → 选择 Graphite。
- 填写配置信息:
- Protocol:
TCP(推荐,具备丢包重传机制)或 UDP(无连接,性能更高)
- Server:
192.168.10.30(替换为你的 Graphite 服务器实际 IP 地址)
- Port:
2003(如果选择 UDP 协议,则对应填写 2004)
- 点击
Create 创建,随后重启 PVE 的统计服务以使配置生效。
systemctl restart pvestatd
4. 30 秒验证:指标真的到了吗?
- 打开 Graphite Web 界面 (
http://<Graphite-IP>),进入 Tree 标签页。此时,左侧目录树中应该会出现一个名为 pve 的目录。
- 依次展开
pve -> <你的节点名> -> qemu -> <虚拟机ID> -> cpu。
- 点击
cpu.user 等指标,Graphite 右侧会立即生成对应的趋势图。看到图表,就证明数据已经成功入库!
5. Grafana 锦上添花(可选)
为了获得更美观、更专业的监控视图,可以集成 Grafana。
- 添加数据源:在 Grafana 中,进入
Configuration -> Data Sources,点击 Add data source,选择 Graphite。
- URL:
http://192.168.10.30(你的 Graphite 地址)
- Access:
Server (default)
- 导入仪表板:Grafana 社区有现成的优秀模板。点击侧边栏
Dashboards -> Import,在 Import via grafana.com 框中输入 Dashboard ID 6819(这是一个为 Proxmox 和 Graphite 定制的详细仪表板)。
- 完成导入:选择你刚创建的 Graphite 数据源,点击
Import。打开这个仪表板,你会发现 CPU、内存、网络流量、磁盘 IOPS 等所有关键指标都已清晰呈现。
6. 常见踩坑清单
| 现象 |
原因&解决 |
Graphite 树状目录无 pve |
carbon-cache 服务未重启成功,或防火墙/安全组规则拦截了 2003/2004 端口。检查服务状态与网络连通性。 |
| 图表中出现数据断点 |
如果使用 UDP 协议,可能是网络丢包所致。建议切换至 TCP 协议,或确保在高质量的内网环境中使用 UDP。 |
| 指标路径太长,在 Graphite Web 中显示不全 |
可以尝试在 URL 后添加 ?width=1200 参数来增加浏览器渲染宽度,或直接使用 Grafana 进行查询和展示。 |
| 多节点集群如何配置 |
只需在任意一个 PVE 节点上配置一次 Metric Server,配置将对整个集群生效。为确保稳定性,推荐使用内网 IP 地址。 |
7. 小结
PVE 的 Metric Server 功能强大却常被忽视。启用 Graphite 支持后,你无需部署任何外部采集器,就能将宿主机、虚拟机乃至容器(LXC)的性能指标秒级入库,为你的虚拟化平台装上“眼睛”。
配合 Grafana 丰富的社区模板,短短几分钟就能搭建起专业级的监控大屏。在此基础上,你还可以进一步探索:
- 基于
system_uptime 指标设置节点存活告警。
- 利用
df.* 相关指标进行磁盘容量预测与预警。
- 如果对性能有更高要求,可以将后端存储从 Graphite 更换为 VictoriaMetrics 等更高压缩比的时序数据库。
动手试试吧,立即前往 Datacenter -> Metric Server,点击「Add」按钮,开启你的 集群 监控之旅。如果你在配置过程中有其他心得或问题,也欢迎到 云栈社区 的运维板块与大家交流讨论。
|