零成本监控方案:手把手教你用 Prometheus + Grafana 搭建服务器可视化仪表盘
零成本监控方案:手把手教你用 Prometheus + Grafana 搭建服务器可视化仪表盘
手头有几台 VPS 或者家里的 NAS、软路由,平时是不是总觉得心里没底?CPU 占用多少?内存是不是快爆了?带宽跑满了没?
虽然服务商提供了基础的控制台,但那个刷新速度和展示维度,说实话,真的不够用。对于爱折腾的小伙伴来说,一套实时、精准、酷炫的监控系统绝对是刚需。
今天就来聊聊监控界的“三剑客”:Prometheus + Grafana + Node Exporter。这套组合拳不仅开源免费,而且功能强大,是运维圈和极客圈公认的标准搭配。别被这些名词吓跑,只要跟着步骤走,小白也能轻松搞定。
为什么选择这套组合?
在开始动手之前,先简单介绍一下这三个角色,大家就能明白它们是如何分工协作的:
-
Node Exporter(数据采集员):它是一个轻量级的代理,需要安装在你想要被监控的服务器上。它的任务很简单,就是负责“挖数据”,比如 CPU 使用率、内存剩余量、磁盘 I/O、网络流量等,然后把这些数据暴露给 Prometheus 抓取。
-
Prometheus(数据仓库与时序库):这是系统的核心大脑。它定期去 pull(拉取)Node Exporter 暴露的数据,并把它们存储在自己的时序数据库里。它自带报警功能,但默认的界面比较简陋,主要还是用来存数据的。
系统架构示意图:Node Exporter 采集数据,Prometheus 存储数据,Grafana 展示数据
- Grafana(颜值担当可视化面板):这是我们在前端看到的界面。它连接到 Prometheus 的数据库,把枯燥的数字绘制成各种花花绿绿的图表、仪表盘。Grafana 支持高度定制,只要模板选得好,监控界面也能做得像科幻电影一样。
准备工作
- 一台服务器作为监控端:建议配置稍微高一点点(比如 1C2G 以上),用来跑 Prometheus 和 Grafana。如果是云服务器,注意放行安全组端口(9090 用于 Prometheus,3000 用于 Grafana)。
- N 台被监控端:可以是 Linux VPS、树莓派等,只要能安装 Node Exporter 即可。
- 环境:本文以常见的 Linux 系统(如 CentOS/Ubuntu)为例,为了方便演示,我们推荐使用 Docker 进行部署,这样能省去很多配置环境变量的麻烦。
第一步:在被监控端安装 Node Exporter
首先,我们需要让服务器愿意“吐”出数据。登录到你需要监控的服务器上。
Grafana 监控面板效果图:展示 CPU、内存、磁盘和网络等关键指标
如果你有 Docker,一条命令搞定:
docker run -d \
--name=node_exporter \
--restart=unless-stopped \
-p 9100:9100 \
prom/node-exporter
这就启动了。你可以直接在浏览器访问 http://被监控服务器IP:9100,如果能看到一堆纯文本的数据,说明采集员已经上班了。
小贴士:为了安全和方便,建议大家在防火墙里把 9100 端口配置为只允许监控端服务器访问,不要对全网开放,避免数据泄露。
第二步:部署 Prometheus 数据中心
回到我们的“监控端”服务器,先创建一个工作目录,方便管理配置文件。
mkdir -p /opt/prometheus
cd /opt/prometheus
``n
我们需要手动写一个配置文件 `prometheus.yml`,告诉 Prometheus 去哪里抓数据。新建文件并写入以下内容:
```yaml
global:
scrape_interval: 15s # 每15秒抓取一次数据
scrape_configs:
- job_name: 'node_exporter' # 任务名称
static_configs:
# 替换下面的 IP 为你刚才安装 Node Exporter 的服务器 IP
- targets: ['被监控服务器IP:9100']
保存后,用 Docker 启动 Prometheus。注意要把配置文件挂载进去:
docker run -d \
--name=prometheus \
--restart=unless-stopped \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
访问 http://监控端IP:9090,进入 Prometheus 的原生界面。点击菜单栏的“Status -> Targets”,如果你的状态显示为“UP”,恭喜你,数据已经成功流入时序库了!
第三步:部署 Grafana 并展示数据
数据有了,现在要给它画个妆。同样在监控端服务器上运行:
docker run -d \
--name=grafana \
--restart=unless-stopped \
-p 3000:3000 \
grafana/grafana
等几十秒让服务启动完成,然后访问 http://监控端IP:3000。
- 默认账号:
admin - 默认密码:
admin
首次登录会提示修改密码,改个你记得住的就行。
1. 添加数据源
进入主界面后,左侧齿轮图标 -> Data sources -> Add data source。
选择 Prometheus。
在 URL 处填入:http://prometheus:9090(注意,因为 Grafana 和 Prometheus 都在同一个 Docker 网络或者本机上,这里用容器名或者 localhost 都可以,如果是不同机器则填 IP)。
点击底部的 Save & Test,如果显示 Data source is working,就搞定了。
2.导入专业仪表盘
自己手动从零一个一个画图太累了,Grafana 社区有大量现成的大盘模板可以直接用。
点击左侧 + (Create) -> Import。
在 Grafana.com Dashboard ID 处输入一个神奇的数字:1860(这是 Node Exporter Full 这个非常经典的仪表盘 ID,包含了几乎所有关键的系统指标)。
点击 Load,然后在数据源下拉菜单里选择刚才添加的 Prometheus,最后点击 Import。
见证奇迹的时刻到了!此刻你应该能看到一个充满科技感的监控面板,CPU、内存、磁盘、网络负载一目了然。
进阶技巧与常见问题
如何监控多台服务器?
很简单,修改你监控端上的 /opt/prometheus/prometheus.yml 文件。在 targets 列表里追加新的 IP 地址即可(注意 YAML 的缩进格式):
- job_name: 'node_exporter'
static_configs:
- targets:
- '服务器A_IP:9100'
- '服务器B_IP:9100'
- '服务器C_IP:9100'
修改完后 restart 一下 Prometheus 容器,过一会儿 Grafana 面板里就能通过下拉菜单切换查看不同服务器的数据了。
报警怎么搞?
Grafana 自带非常强大的 Alerting 功能。你可以在任意一个面板上点击编辑,设置比如“CPU > 90% 且持续 5 分钟”,然后配置通知渠道(比如发邮件、钉钉、企业微信甚至 Telegram)。一旦触发条件,它就会立刻通知你,再也不用半夜起来手动查日志了。
遇到 Grafana 图表无数据?
这通常是时区问题。Grafana 默认使用 UTC 时间,如果你的服务器是北京时间,需要在面板设置里把 Time zone 改为 Browser 或者 Local Browser Time,这样时间轴才能对上。
总结一下
搭建这套系统并不需要你是 Linux 专家,利用 Docker 的便捷性,半小时内就能搭建出一套企业级的基础监控框架。
- 成本低:不需要购买昂贵的 SaaS 服务。
- 可控性高:数据都在自己手里,安全。
- 可玩性强:仪表盘样式千变万化,看着心情都好。
别再让你的服务器在黑暗中裸奔了,赶紧动手试试吧!有问题欢迎在评论区交流。
评论已关闭