Prometheus+Grafana监控中转流量与负载
核心答案
使用 Prometheus + Grafana 可以实时监控中转服务器(如 VPN 网关、代理节点)的网卡进出流量和系统负载(CPU、内存、磁盘 IO)。
部署方式为:在被监控服务器上运行 Node Exporter 采集指标,Prometheus 定期拉取,Grafana 连接 Prometheus 数据源并导入预置仪表盘即可展示。
整个过程不需要编程基础,按下文步骤操作即可在 30 分钟内完成。
为什么需要监控中转流量与负载
中转服务器承担着数据转发任务,流量突变或负载飙升直接影响整体网络质量。
通过 Prometheus+Grafana 组合,你可以:
- 实时查看接收/发送流量曲线,判断是否接近带宽上限。
- 监控CPU 使用率、内存占用、磁盘 I/O,提前发现资源瓶颈。
- 设置告警规则,在流量异常或负载过重时第一时间收到通知。
环境准备
- 一台基于 Linux(Ubuntu 20.04 / CentOS 7+)的中转服务器,已开启 SSH。
- 准备一台(或同机部署)用于运行 Prometheus 和 Grafana 的机器,建议内存 ≥2GB。
- 确保服务器出站防火墙允许 Prometheus 所在机器访问 Node Exporter 的 9100 端口。
如果对服务器选型不确定,像 泽御云 提供的云服务器就支持弹性带宽和独立 IP,适合放置中转服务与监控系统。
步骤一:安装 Node Exporter
在所有需要监控的中转服务器上执行:
# 下载 Node Exporter(以最新版 1.7.0 为例,实际请到官方 GitHub 确认)
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
# 解压并移动
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
创建 systemd 服务,确保开机自启:
sudo cat > /etc/systemd/system/node_exporter.service <
验证是否运行:curl http://localhost:9100/metrics 应有大量指标输出。
步骤二:部署 Prometheus
在计划运行 Prometheus 的机器上操作:
# 下载 Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz
tar xvf prometheus-2.51.0.linux-amd64.tar.gz
sudo mv prometheus-2.51.0.linux-amd64 /etc/prometheus
编辑 Prometheus 配置文件 /etc/prometheus/prometheus.yml:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['中转服务器IP:9100'] # 可添加多个
配置中可添加多个中转服务器 IP,用逗号分隔。
然后启动 Prometheus:
sudo /etc/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml &
建议同样写成 systemd 服务,此处从简。
访问 http://本机IP:9090/targets 确认 node 任务状态为 UP。
步骤三:安装 Grafana 并导入仪表盘
- 安装 Grafana(以 Ubuntu 为例):
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
- 浏览器访问
http://本机IP:3000,默认账号密码admin/admin。 - 添加数据源:Configuration → Data Sources → Add data source → 选择 Prometheus,URL 填
http://localhost:9090(如果在本机),点击 Save & Test。 - 导入仪表盘:官方推荐 Node Exporter Full(ID 1860)或 Linux Hosts Metrics(ID 11074)。点击左侧 + → Import → 输入 ID → Load → 选择数据源 → Import。
现在就能看到中转服务器的总网络流量、CPU、内存、磁盘等图表。
如需重点查看流量,可自定义 Panel,选择指标 node_network_receive_bytes_total 和 node_network_transmit_bytes_total。
避坑指南
- 防火墙 / 安全组:必须放开 Node Exporter 的 9100 端口(TCP),Prometheus 的 9090 端口,Grafana 的 3000 端口。
- 数据持久化:Prometheus 默认数据存储在
data/目录,重启不会丢失;建议定期备份或配置远程存储。 - 时间同步:所有服务器需保持时间一致(使用 NTP),否则指标时间戳偏差会导致图表为空。
- 流量单位:Grafana 默认显示字节(Bytes),可在 Panel 设置中改为 bits 或自动单位。
常见问题解答
Q1:Grafana 图表显示“No data”怎么办?
先检查 Prometheus Targets 是否全部 UP。如果目标状态正常,确认 Grafana 数据源 URL 是否正确(建议用 IP 而非 localhost)。也可以直接在 Prometheus 查询栏中测试指标,比如输入 node_network_receive_bytes_total 看是否有数据。
Q2:如何监控特定网卡(如 eth0)的流量?
在 Grafana 面板编辑查询时,添加过滤条件 device=~"eth0" 即可只显示指定网卡。
Q3:Node Exporter 是否需要 root 权限?
无需 root,使用 nobody 用户运行即可。如果需要采集磁盘统计等高级指标,可添加 --collector.diskstats 等参数。
Q4:能否监控多台中转服务器?
可以。在 prometheus.yml 的 targets 列表中添加多台服务器 IP:9100,每台都会显示在 Grafana 中(可通过标签区分)。
结语
通过以上步骤,你已经可以直观地掌握中转服务器的流量与负载趋势。
这套方案完全开源、扩展性强,后续还可增加告警(Alertmanager)和长期存储(Thanos)。
如果部署中遇到网络或权限问题,建议优先检查防火墙规则和 systemd 服务状态。
对于需要稳定运行的监控系统,选择合规的云服务商(如具备 IDC/ISP 资质的 泽御云)能有效减少环境层面的故障。