外观
外部指标服务器:InfluxDB 与 Graphite
内置图表够用来看「现在」,但保留不了太久的历史,也不会主动告警。PVE 自带一个推送功能,能把节点、客户机、存储的指标定期发给外部的 InfluxDB 或 Graphite,这篇讲怎么配。
为什么需要它
- 想要保留几个月甚至几年的历史数据,做容量规划。
- 想要在指标异常时收到通知,而不是自己盯着图表看。
- 已经有一套 InfluxDB/Graphite + Grafana 的监控栈,想把 PVE 也接进去。
开始之前
- 需要一个已经在运行的 InfluxDB 或 Graphite 服务器,这篇不讲怎么部署它们。
- 需要
Sysadmin权限来添加指标服务器配置。 - 配置保存在
/etc/pve/status.cfg,属于集群级配置,对所有节点生效。
操作步骤
数据中心 → Metric Server → 添加,选 InfluxDB 或 Graphite。
Graphite
| 字段 | 默认值 | 说明 |
|---|---|---|
| Server | — | Graphite 服务器地址 |
| Port | 2003 | |
| Path | proxmox | 指标前缀 |
| Protocol | UDP | 也可以选 TCP,但 TCP 需要设置合理的超时,避免网络问题卡住 pvestatd |
| MTU | 标准 1500 | 网络用巨型帧的话相应调整 |
InfluxDB
**UDP 方式(默认):**InfluxDB 一侧要开启 UDP 监听(例如 [[udp]],绑定地址 0.0.0.0:8089,对应数据库 proxmox)。
HTTP(S) 方式(InfluxDB 2.x API):
| 字段 | 说明 |
|---|---|
influxdbproto | 设为 http 或 https |
| Organization / Bucket | 都默认 proxmox,对应 InfluxDB 2.x 的组织和存储桶 |
| Token | 必填,v2 API 只支持带认证的访问,需要有写入目标 bucket 的权限 |
| Timeout | HTTP 超时,默认 1 秒 |
| Max Body Size | 单次批量上报的最大字节数,默认 25000000 |
InfluxDB 1.8.x 也能用 HTTP 方式
1.8.x 提供了向前兼容的 v2 端点,Token 字段可以填 user:password 形式,Organization 留空即可。
检查结果
- 保存配置后,去 InfluxDB/Graphite 那一端确认收到了数据点(用它们自己的查询工具或界面确认,而不是只看 PVE 这边「保存成功」)。
- 确认
pvestatd状态正常,没有因为发送超时而报错:
sh
# 宿主机 shell
systemctl status pvestatd
journalctl -u pvestatd -n 50 --no-pager- 用 Grafana(或对应工具)接上这个数据源,画一张最基本的 CPU/内存图,确认端到端链路通畅。
常见问题
UDP 模式下数据时有时无,PVE 这边没有任何报错。 UDP 本身不保证送达,丢包不会被 PVE 感知也不会报错。网络不稳定或跨网段传输时,优先改用 TCP(Graphite)或 HTTP(S)(InfluxDB),换取可靠的传输反馈。
InfluxDB 2.x 一直写入失败。 检查 Token 的权限范围是否覆盖了目标 Organization 和 Bucket 的写入权限,以及 influxdbproto 是否正确设为 http/https。
数据点的时间戳和实际时间对不上。 检查宿主机和 InfluxDB/Graphite 服务器的时钟是否都做了 NTP 同步,时钟漂移会导致图表上的数据错位。
想同时接 Prometheus 生态。 PVE 内置的这套是「推送」模式,Prometheus 习惯的是「拉取」模式,两者思路不同,接 Prometheus 需要额外的导出器,见Prometheus + Grafana 监控。