一、部署目标
本文记录在Ubuntu服务器上部署Prometheus、Node Exporter和Grafana的完整过程。
部署完成后,可以通过Grafana查看服务器的CPU、内存、磁盘和网络等基础资源指标。
最终实现以下效果:
- Prometheus能够正常采集指标。
- Node Exporter能够正常暴露Linux主机指标。
- Grafana可以正常登录。
- Grafana已经配置Prometheus数据源。
- Grafana已经导入服务器监控看板。
二、环境说明
本次使用的服务器系统和软件版本如下:
操作系统:Ubuntu 24.04.1 LTS
Prometheus:3.5.0
Node Exporter:1.9.1
Grafana:13.1.1
测试环境使用了公网端口映射:
Grafana:3000 → 56121
Prometheus:9090 → 36206
Node Exporter:9100 → 38912
上述端口映射仅用于测试、截图和远程验证。
正式环境不建议直接将Prometheus和Node Exporter端口暴露在公网。Prometheus通常只需要允许Grafana或内部管理网络访问,Node Exporter则只需要允许Prometheus服务器访问。
三、三个组件的作用
Prometheus
Prometheus负责按照设定的时间间隔采集指标,并保存时序数据。
Node Exporter
Node Exporter负责采集Linux主机指标,包括:
- CPU。
- 内存。
- 磁盘。
- 网络。
- 文件系统。
- 系统负载。
Grafana
Grafana负责连接Prometheus,并将Prometheus中的指标转换成图表和监控看板。
整体监控链路如下:
Linux服务器 → Node Exporter → Prometheus → Grafana
Node Exporter先暴露主机指标,Prometheus负责采集和保存,Grafana再从Prometheus查询数据并进行展示。
四、安装方式说明
本次安装过程中,从GitHub直接下载Prometheus和Node Exporter的速度较慢,因此采用本地下载安装包,再上传到服务器的方式。
这种方式有以下优点:
- 固定软件版本,便于复现。
- 减少服务器临时网络波动的影响。
- 可以提前检查安装包是否完整。
- 适合批量部署多台服务器。
Grafana使用.deb安装包部署。如果服务器下载速度较慢,也可以在本地下载对应版本,再上传到Ubuntu服务器安装。
上传安装包前,应确认:
- 软件版本与系统架构匹配。
- 下载文件完整。
- 安装包来源可靠。
- 服务器剩余磁盘空间充足。
五、验证服务启动状态
安装完成后,可以使用以下命令检查三个服务:
sudo systemctl is-active prometheus node_exporter grafana-server
检查端口监听情况:
sudo ss -lntp | grep -E ':3000|:9090|:9100'
正常情况下,服务状态应分别显示:
prometheus: active
node_exporter: active
grafana-server: active
如果某个服务没有正常运行,可以单独查看状态:
sudo systemctl status prometheus --no-pager
sudo systemctl status node_exporter --no-pager
sudo systemctl status grafana-server --no-pager
检查Prometheus是否已经准备完成:
curl http://127.0.0.1:9090/-/ready
如果返回:
Prometheus Server is Ready.
说明Prometheus已经可以接收请求。
六、检查Prometheus采集目标
打开Prometheus的Targets页面,查看Prometheus自身和Node Exporter是否处于UP状态。
如果配置了Web访问地址,通常可以进入:
http://服务器IP:9090/targets
如果目标状态不是UP,可以按以下顺序排查:
- 检查对应服务是否已经启动。
- 检查目标端口是否正在监听。
- 检查Prometheus配置文件中的targets地址。
- 检查防火墙、安全组和端口映射。
- 检查Node Exporter的指标地址是否可以访问。
- 修改配置后使用
promtool重新校验。
检查Node Exporter端口:
sudo ss -lntp | grep ':9100'
从本机请求Node Exporter指标:
curl http://127.0.0.1:9100/metrics
如果能够返回大量指标内容,说明Node Exporter本身可以正常提供数据。
七、登录Grafana
在浏览器中打开Grafana访问地址:
http://服务器IP:3000
如果使用了公网端口映射,则需要替换为实际映射端口。
进入登录页面后,输入管理员账号和密码。
登录成功后进入Grafana首页:
首次登录后,应立即修改默认密码。生产环境不要继续使用默认账号和密码,也不要让Grafana管理端口对所有公网地址开放。
八、配置Prometheus数据源
登录Grafana后,依次进入:
Connections → Data sources
点击添加数据源,选择Prometheus。
如果Grafana和Prometheus运行在同一台服务器上,并且是直接安装在主机系统中,可以将URL填写为:
http://localhost:9090
填写完成后,点击 Save & test,检查Grafana是否能够连接Prometheus。
需要注意,如果Grafana运行在Docker容器中,localhost指向的是Grafana容器自身,而不是宿主机。此时应根据实际网络配置填写Prometheus服务名或宿主机地址。
九、导入监控看板
进入Grafana的Dashboard导入页面:
Dashboards → New → Import
可以通过以下方式导入:
- 输入Dashboard ID。
- 上传本地JSON文件。
- 粘贴Dashboard JSON内容。
如果已有本地看板JSON,建议优先使用本地文件,方便备份、迁移和版本管理。
导入过程中,按照页面提示选择已经配置好的Prometheus数据源。
导入完成后,可以查看以下基础指标:
- CPU使用率。
- 内存使用率。
- 磁盘容量和使用率。
- 网络流量。
- 系统负载。
- 文件系统状态。
导入完成后,建议检查看板中的job、instance等标签是否与Prometheus配置一致。如果指标名称或标签不匹配,面板可能显示为空。
十、常见问题
问题一:Grafana看板没有数据
先直接查询Prometheus:
curl "http://127.0.0.1:9090/api/v1/query?query=up"
如果Prometheus无法查询到数据,应优先排查:
- Prometheus服务状态。
- Node Exporter服务状态。
- Prometheus Targets状态。
- Prometheus配置文件。
- 指标标签和任务名称。
只有Prometheus已经采集到数据后,Grafana才有内容可以展示。
问题二:Prometheus Targets显示DOWN
检查Node Exporter:
sudo systemctl status node_exporter --no-pager
检查9100端口:
sudo ss -lntp | grep ':9100'
检查指标接口:
curl http://127.0.0.1:9100/metrics
如果本机可以访问,但Prometheus仍然显示DOWN,应检查Prometheus配置中的目标地址,以及服务器之间的网络访问规则。
问题三:公网端口无法访问
可以按以下顺序检查:
- 端口映射是否正确。
- 服务是否监听了目标端口。
- 服务监听地址是否允许外部访问。
- 系统防火墙是否放行端口。
- 云平台安全组是否放行端口。
- 访问时使用的端口是否与映射端口一致。
检查本机监听情况:
sudo ss -lntp | grep -E ':3000|:9090|:9100'
如果端口只监听127.0.0.1,公网请求通常无法直接访问。正式环境不建议简单地将所有服务监听到公网,而应通过防火墙、反向代理或内部网络限制访问范围。
问题四:Grafana和Prometheus在Docker中运行
如果Grafana和Prometheus都通过Docker部署,应使用Docker网络中的服务名访问Prometheus,例如:
http://prometheus:9090
此时不要直接套用主机安装方式中的http://localhost:9090,因为容器中的localhost指向当前Grafana容器。
十一、后续扩展
完成基础监控后,可以继续接入其他组件:
- Blackbox Exporter:监控网站、端口和HTTP接口可用性。
- Nginx Exporter:采集Nginx连接数和请求指标。
- cAdvisor:监控Docker容器资源使用情况。
- MySQL Exporter:采集MySQL运行指标。
- Alertmanager:处理Prometheus告警并发送通知。
扩展组件时,应按照“先确认采集,再配置查询,最后制作看板”的顺序进行,避免在数据尚未进入Prometheus时直接修改Grafana面板。
十二、总结
本次完成了Prometheus、Node Exporter和Grafana的基础搭建。
部署完成后:
- Node Exporter负责暴露Linux主机指标。
- Prometheus负责采集和保存指标。
- Grafana负责查询和展示监控数据。
遇到看板无数据时,应先检查Prometheus Targets和PromQL查询,再检查Grafana数据源和面板配置。
完成基础环境后,可以继续接入网站探测、Nginx、Docker、MySQL和告警通知功能,逐步形成适合小型网站服务器的完整监控体系。
-
广告合作
-
QQ群号:4114653










