
使用Prometheus(普罗米修斯)和Grafana实现云端监控
在日常运维中配备一个监控还是非常有必要,市面上监控程序有很多,我会挑几个来演示,本次我们来使用企业级的Grafana
+Prometheus
,相信大部分人还是搞不定的,跟着我的文章走,应该没问题
Grafana安装
Grafana是什么
Grafana是一个通用的可视化工具。对于Grafana而言,Prometheus这类为其提供 数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, tdengine,Prometheus, Elasticsearch, CloudWatch的支持。对于Grafana管理员而言,只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。
相对于Prometheus,Grafana的搭建还是比较简单的
安装必要的依赖包
sudo apt-get update
sudo apt-get install -y apt-transport-https software-properties-common wget gpg
导入 Grafana GPG 密钥
为了验证下载的软件包的真实性,需要导入 Grafana 的 GPG 密钥。
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
wget -q -O - ...
: 下载 GPG 密钥。gpg --dearmor
: 将密钥从 ASCII 格式转换为 OpenPGP 二进制格式。sudo tee ...
: 将密钥写入指定的文件
添加 Grafana APT 仓库
将Grafana 的 APT 仓库添加到你的系统源列表中。这里我们添加的是稳定版 (stable) 仓库。
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
[signed-by=...]
: 指定用于验证此仓库中软件包签名的 GPG 密钥文件。https://apt.grafana.com
: Grafana 的 APT 仓库地址。stable main
: 指定使用稳定版仓库。
更新 APT 缓存并安装 Grafana
添加仓库后,更新本地的包列表,然后安装 Grafana。
sudo apt-get update
sudo apt-get install grafana
这将安装 Grafana 的开源 (OSS) 版本。如果你需要企业版 (Enterprise),可以使用 sudo apt-get install grafana-enterprise
。企业版包含所有开源版功能,并增加了需要许可证才能激活的额外功能。
启动并启用 Grafana 服务
安装完成后,Grafana 服务不会自动启动。你需要手动启动它,并设置为开机自启。
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
验证 Grafana 服务状态
检查 Grafana 服务是否正在运行
sudo systemctl status grafana-server
其他问题
首次登录
默认的用户名是
admin
。默认的密码也是
admin
。首次登录后,系统会强制要求你修改默认密码。
其他有用的信息:
配置文件: Grafana 的主配置文件位于
/etc/grafana/grafana.ini
。日志文件: 默认日志文件位于
/var/log/grafana/grafana.log
。数据目录: Grafana 的 SQLite3 数据库(默认)、插件等数据默认存储在
/var/lib/grafana/
。卸载 Grafana: 如果需要卸载,可以运行
sudo apt-get remove grafana
并可选地删除配置文件和数据目录。
如果你是按照我的教程来的话你就可以在浏览器打开网页了,他默认端口是3000
本次教程演示地址为:http://192.168.111.10:3000/login
进去后,界面全是英文,英文不好的估计是有点恼火,当然我们可以切换成中文
到此我们Grafana也就安装完成了.
安装Prometheus
Prometheus是什么
prometheus是由谷歌研发的一款开源的监控软件,它通过安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上
创建 Prometheus 系统用户和组
出于安全考虑,最好为 Prometheus 创建一个专门的系统用户和组,并禁止其登录 Shell。
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
创建必要的目录
创建用于存放 Prometheus 配置文件和数据的目录。
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
下载 Prometheus 二进制文件
我们得去他的开源仓库看,我们找到对应版本复制链接
截至到2025-04-28稳定版LTS
我们可以新建一个临时目录/tmp
mkdir tmp
cd tmp/
wget https://github.com/prometheus/prometheus/releases/download/v2.53.4/prometheus-2.53.4.linux-amd64.tar.gz
解压并移动文件
tar xvf prometheus-2.53.4.linux-amd64.tar.gz
cd prometheus-2.53.4.linux-amd64/
移动核心二进制文件 prometheus
(服务器) 和 promtool
(配置检查工具) 到 /usr/local/bin
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
移动配置文件目录 (consoles
和 console_libraries
) 到 /etc/prometheus
sudo mv consoles /etc/prometheus
sudo mv console_libraries /etc/prometheus
创建 Prometheus 配置文件
sudo nano /etc/prometheus/prometheus.yml
将以下内容粘贴到文件中,各位在粘贴yml一定要注意格式:
global:
scrape_interval: 15s # 每 15 秒抓取一次 targets
# 抓取配置
scrape_configs:
# 'prometheus' 这个 job 负责抓取 Prometheus 服务自身的指标
- job_name: 'prometheus'
# metrics_path 默认为 /metrics
# scheme 默认为 http
static_configs:
- targets: ['localhost:9090'] # Prometheus 默认监听 9090 端口
设置目录和文件权限
将配置目录、数据目录和二进制文件的所有权交给之前创建的 prometheus
用户和组。
sudo chown prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/*
sudo chown prometheus:prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
创建 Systemd 服务文件
为了方便管理 Prometheus 服务(启动、停止、重启、开机自启),创建一个 systemd
服务文件。
sudo nano /etc/systemd/system/prometheus.service
粘贴以下内容:
[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.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.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090
Restart=always
[Install]
WantedBy=multi-user.target
User
和Group
: 指定运行服务的用户和组。ExecStart
: 定义启动命令和参数。--config.file
: 指定配置文件路径。--storage.tsdb.path
: 指定数据存储路径。--web.console.templates
和--web.console.libraries
: 指定 Web UI 模板路径。--web.listen-address=0.0.0.0:9090
: 使 Prometheus 在所有网络接口的 9090 端口上监听。如果只想本机访问,可以改为127.0.0.1:9090
。
Restart=always
: 服务意外退出时总是尝试重启。
启动并启用 Prometheus 服务
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
验证 Prometheus 服务状态
sudo systemctl status prometheus
当其显示这个页面我们也就安装好了,现在我们访问一下。
本教程url为:http://192.168.111.10:9090/
估计各位看起来也是一脸懵逼,搭建到这里我们算是完成了一大半,我们还需要安装exporter并配置到Prometheus,这样我们才会有数据。下面我举一个例子,各种exporter安装起来都大同小异。
安装Exporter
本教程以node_exporter
为例
创建 node_exporter
系统用户和组
为 node_exporter
创建一个专门的、无登录权限的系统用户和组:
sudo groupadd --system node_exporter
sudo useradd -s /sbin/nologin --system -g node_exporter node_exporter
下载 node_exporter
二进制文件
我们得去下载他的二进制程序
截止到2025-04-28最新版本为:
我们还是去临时目录/tmp
cd tmp/
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
解压并移动文件
tar xvf node_exporter-1.9.1.linux-amd64.tar.gz
cd node_exporter-1.9.1.linux-amd64/
移动 node_exporter
二进制文件到 /usr/local/bin
sudo mv node_exporter /usr/local/bin/
设置文件权限
将二进制文件的所有权交给之前创建的 node_exporter
用户和组
v
创建 Systemd 服务文件
为 node_exporter 创建 systemd 服务文件,方便管理。
sudo nano /etc/systemd/system/node_exporter.service
粘贴下面内容:
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
# 显式指定监听地址和端口(默认是 :9100)
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=always
[Install]
WantedBy=multi-user.target
--web.listen-address=:9100
: 让 node_exporter
在所有网络接口的 9100 端口监听。如果你只想让本机(比如同机部署的 Prometheus)访问,可以用 --web.listen-address=127.0.0.1:9100
。对于 node_exporter
,通常让它监听在所有接口更方便,因为 Prometheus 可能部署在不同机器上。但如果 Prometheus 和 node_exporter
在同一台机器,监听 127.0.0.1:9100
更安全。我们这里假设 Prometheus 就在本机。
启动并启用 node_exporter
服务
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
验证 node_exporter
服务状态
sudo systemctl status node_exporter
如果是这个样子我们现在就可以访问它的 metrics 端点:
本教程url为:http://192.168.111.10:9100/metrics
你应该像我一样能看到大量的文本格式的主机指标输出。
到这里我们node_exporter
客户端算是安装好了,我们现在要去配置Prometheus服务端
配置Prometheus连接node_exporter
编辑 Prometheus 配置文件
sudo nano /etc/prometheus/prometheus.yml
粘贴下面的内容并保存:
global:
scrape_interval: 15s # 每 15 秒抓取一次 targets
# 抓取配置
scrape_configs:
# 'prometheus' 这个 job 负责抓取 Prometheus 服务自身的指标
- job_name: 'prometheus'
# metrics_path 默认为 /metrics
# scheme 默认为 http
static_configs:
- targets: ['localhost:9090'] # Prometheus 默认监听 9090 端口
# 新增 job:抓取本机上的 node_exporter
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # node_exporter 监听的地址 (如果是 127.0.0.1:9100 就用这个)
注意缩进,注意缩进,注意缩进
我建议是你复制我的内容去这个网站格式化一下
检查 Prometheus 配置语法
sudo /usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
出现success那就没有问题
Prometheus 重新加载配置
sudo systemctl restart prometheus
Prometheus UI 中验证
打开 Prometheus 的 Web UI (
http://<你的服务器IP>:9090
)。导航到
Status
->Targets
。你应该能看到两个 Job:
prometheus
和node_exporter
。并且node_exporter
job 下的 Endpoint (localhost:9100
) 状态应该是UP
(可能需要等一小会儿,最多等一个scrape_interval
的时间)。
现在,你的 Prometheus 就可以收集并存储这台 Debian 主机的详细系统指标了。我们开始在 Grafana 中配置使用这些指标来创建仪表盘。
使用Grafana可视化Prometheus数据
添加Prometheus数据源
在箭头这里配置我们的Prometheus服务器地址
测试一下然后点击保存,请确保连接成功.
配置面板
我们这个在这里去找我们想要的面板
这里我随便找一个,请注意一定要找对应的exporter,点击我箭头的地方复制id
选择我们的Prometheus数据源点击Import
我们可视化就配置完毕,刚开始没有数据是正常的,等几分钟。
给大家看看我之前的效果看起来还是挺炫酷的
删除临时文件
我们tmp文件里面还有我们的各种安装包我们要进行删除
cd ..
cd ..
rm -rf tmp