跳转到内容

外部指标服务器:InfluxDB 与 Graphite ​

内置图表够用来看「现在」,但保留不了太久的历史,也不会主动告警。PVE 自带一个推送功能,能把节点、客户机、存储的指标定期发给外部的 InfluxDB 或 Graphite,这篇讲怎么配。

为什么需要它 ​

  • 想要保留几个月甚至几年的历史数据,做容量规划。
  • 想要在指标异常时收到通知,而不是自己盯着图表看。
  • 已经有一套 InfluxDB/Graphite + Grafana 的监控栈,想把 PVE 也接进去。

开始之前 ​

  • 需要一个已经在运行的 InfluxDB 或 Graphite 服务器,这篇不讲怎么部署它们。
  • 需要 Sysadmin 权限来添加指标服务器配置。
  • 配置保存在 /etc/pve/status.cfg,属于集群级配置,对所有节点生效。

操作步骤 ​

数据中心 → Metric Server → 添加,选 InfluxDB 或 Graphite。

Graphite ​

字段默认值说明
Server—Graphite 服务器地址
Port2003
Pathproxmox指标前缀
ProtocolUDP也可以选 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 的权限
TimeoutHTTP 超时,默认 1 秒
Max Body Size单次批量上报的最大字节数,默认 25000000

InfluxDB 1.8.x 也能用 HTTP 方式

1.8.x 提供了向前兼容的 v2 端点,Token 字段可以填 user:password 形式,Organization 留空即可。

检查结果 ​

  1. 保存配置后,去 InfluxDB/Graphite 那一端确认收到了数据点(用它们自己的查询工具或界面确认,而不是只看 PVE 这边「保存成功」)。
  2. 确认 pvestatd 状态正常,没有因为发送超时而报错:
sh
# 宿主机 shell
systemctl status pvestatd
journalctl -u pvestatd -n 50 --no-pager
  1. 用 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 监控。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。