Prometheus + Grafana实现服务器监控
本文档详细介绍了在Ubuntu系统上部署Prometheus监控系统的完整流程。主要内容包括: 环境说明:适用于Ubuntu 20.04/22.04离线部署,采用二进制安装包,使用systemd管理服务。核心组件包括Prometheus+Grafana+Blackbox Exporter作为监控端,Node Exporter作为被监控端代理。 监控端部署步骤: 开放必要端口(9090/3000/9
目录
一、环境说明
适用环境:
- Ubuntu 20.04 / 22.04
- 离线部署(离线安装包在我上传的文件里)
- tar.gz 二进制安装
- systemd 管理服务
组件:
| 角色 | 组件 |
|---|---|
| 监控端 | Prometheus + Grafana + Blackbox Exporter |
| 被监控端 | Node Exporter |
组件说明:Prometheus 是整个监控体系的核心服务器和时序数据库。它的主要作用有三个,分别是主动拉取数据、存储与计算、触发告警,可以当做是后端服务器。而Grafana负责数据可视化,也就是前端页面。Node Exporter 是一个专门安装在 Linux 或 Windows 服务器(物理机、虚拟机)上的轻量级代理程序,负责采集硬件信息,转发给Prometheus,类似与一个系统里的采集前置。 Blackbox Exporter用于做黑盒监控,只用于监控网站能不能打开、接口响应快不快、端口通不通。
二、监控端部署
1. 开放防火墙端口
Prometheus
sudo ufw allow 9090/tcp
Grafana
sudo ufw allow 3000/tcp
Blackbox Exporter
sudo ufw allow 9115/tcp
查看状态
sudo ufw status
2. 安装 Prometheus
解压
tar xvf prometheus-*.linux-amd64.tar.gz
进入目录
cd prometheus-*.linux-amd64
创建用户
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
创建目录
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
复制程序
sudo cp prometheus promtool /usr/local/bin/
复制配置文件
sudo cp prometheus.yml /etc/prometheus/
复制 Web 文件
sudo cp -r consoles console_libraries /etc/prometheus/
修改权限
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
3. 安装 Blackbox Exporter
解压
tar xvf blackbox_exporter-*.linux-amd64.tar.gz
进入目录
cd blackbox_exporter-*.linux-amd64
创建用户
sudo useradd --no-create-home --shell /usr/sbin/nologin blackbox
复制程序
sudo cp blackbox_exporter /usr/local/bin/
创建目录
sudo mkdir -p /etc/prometheus
复制配置
sudo cp blackbox.yml /etc/prometheus/
4. 安装 Grafana
解压
tar -zxvf grafana-*.linux-amd64.tar.gz
移动目录
sudo mv grafana-v11.1.0 /usr/local/grafana
创建用户
sudo useradd -r -s /usr/sbin/nologin grafana
修改权限
sudo chown -R grafana:grafana /usr/local/grafana
5. 创建 Prometheus 服务
创建文件:
sudo nano /etc/systemd/system/prometheus.service
内容:
[Unit]
Description=Prometheus Server
After=network.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.listen-address=:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
6. 配置 Prometheus
编辑:
sudo nano /etc/prometheus/prometheus.yml
内容(这边的百度和谷歌都可以直接替换成自己服务的API):
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'linux_servers'
file_sd_configs:
- files:
- '/etc/prometheus/targets/*.json'
refresh_interval: 1m
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://www.baidu.com
- https://www.google.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9115
7. 配置 Targets
创建目录
sudo mkdir -p /etc/prometheus/targets
创建配置
sudo nano /etc/prometheus/targets/linux_servers.json
内容(这个的ip修改成被监控端的ip):
[
{
"targets": [
"192.168.1.1:9100"
],
"labels": {
"os": "linux"
}
}
]
8. 创建 Blackbox 服务
创建:
sudo nano /etc/systemd/system/blackbox_exporter.service
内容:
[Unit]
Description=Blackbox Exporter
After=network.target
[Service]
User=blackbox
Group=blackbox
Type=simple
ExecStart=/usr/local/bin/blackbox_exporter \
--config.file=/etc/prometheus/blackbox.yml \
--web.listen-address=:9115
Restart=on-failure
[Install]
WantedBy=multi-user.target
9. 创建 Grafana 服务
创建:
sudo nano /etc/systemd/system/grafana.service
内容:
[Unit]
Description=Grafana
After=network.target
[Service]
Type=simple
User=grafana
Group=grafana
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana server \
--homepath=/usr/local/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target
10. 启动服务
重新加载 systemd
sudo systemctl daemon-reload
设置开机自启
sudo systemctl enable prometheus
sudo systemctl enable blackbox_exporter
sudo systemctl enable grafana
启动服务
sudo systemctl start prometheus
sudo systemctl start blackbox_exporter
sudo systemctl start grafana
查看状态
sudo systemctl status prometheus
sudo systemctl status blackbox_exporter
sudo systemctl status grafana
三、被监控端部署
1. 开放防火墙
sudo ufw allow 9100/tcp
2. 安装 Node Exporter
解压
tar xvf node_exporter-*.linux-amd64.tar.gz
进入目录
cd node_exporter-*.linux-amd64
创建用户
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
复制程序
sudo cp node_exporter /usr/local/bin/
3. 创建 Node Exporter 服务
创建:
sudo nano /etc/systemd/system/node_exporter.service
内容:
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
4. 启动 Node Exporter
重新加载
sudo systemctl daemon-reload
设置开机自启
sudo systemctl enable node_exporter
启动
sudo systemctl start node_exporter
查看状态
sudo systemctl status node_exporter
四、验证
Prometheus
http://监控端IP:9090
页面如下会显示监控的服务器和端口:
Grafana
http://监控端IP:3000
默认账号密码:
admin
admin

Node Exporter
http://被监控端IP:9100/metrics
五、Grafana 配置
添加数据源
路径:
Connections
-> Data Sources
-> Prometheus
URL:
http://localhost:9090

点击:
Save & Test
导入 Dashboard
由于内网无法访问:
grafana.com
所以需要:
离线导入 JSON
推荐 Dashboard:
Node Exporter Full
ID:
1860
下载地址:
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
Grafana 导入:
Dashboards
-> Import
-> Upload JSON file
六、常用排查命令
查看端口
ss -lntp
查看 Prometheus 日志
journalctl -u prometheus -f
查看 Grafana 日志
journalctl -u grafana -f
查看 Node Exporter 日志
journalctl -u node_exporter -f
检查 Prometheus 配置
promtool check config /etc/prometheus/prometheus.yml
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)