前言
在复杂的服务器与应用架构中,为实现对系统运行状态的全面掌控,需要一套覆盖基础设施、中间件、应用服务的完整监控方案,基于 Prometheus 与 Grafana 构建的全栈指标监控体系,通过统一采集、存储、查询与可视化各类运行指标,能够实时监控 CPU、内存、服务性能等关键数据,并支持异常告警与直观图表展示,从而实现全方位、可视化、可预警的系统监控,保障服务稳定可靠运行。
一、拆分所需要用到的工具作用
1.什么叫Prometheus?
a.它就是专门收集各种数据的工具,并且它把这些数据存起来,出问题还能报警
服务器 CPU 多少
内存用了多少
硬盘满没满
网络卡不卡
MySQL 查询慢不慢
接口访问量 QPS
容器崩没崩
应用有没有报错
2.什么叫Grafana
a. 把Prometheus 存数据的 数字 转换为折线图、柱状图、仪表盘
CPU 曲线
内存趋势
接口访问量
系统负载
各种清晰明了的面板
3.全栈指标监控体系
a.一种全方位的监控器,只要你所能用的数据、服务器、应用都可以检测
机器监控
容器监控
数据库监控
应用接口监控
业务指标监控
4.什么叫 Node Exporter
主机数据采集插件
安装在服务器上,帮Prometheus收集主机的CPU、内存、登录等指标
5.什么叫Alertmanager
类似告警通知员
当触发“异常登录”“CPU突增”时,发送告警(此次使用邮件告警)
二、实验前准备
此时实验我准备的是Ubuntu24.04操作系统,并且我们需要root权限,端口是默认的22
IP:172.16.11.52,我使用的是NAT,根据自身情况设置
三、实验目的
掌握 Prometheus + Grafana 全栈监控体系的架构与工作原理
学会部署指标采集组件、监控服务与可视化平台,实现服务器、应用等运行指标的统一采集与存储
能够通过 Grafana 搭建监控看板,实现指标可视化展示,并配置异常告警规则
四、实验步骤
1.环境准备
# 进入root模式
sudo -i
# 替换为清华源
# 备份原有源,防止出错
cp /etc/apt/sources.list /etc/apt/sources.list.bak
tee /etc/apt/sources.list <<EOF
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
EOF
# 更新软件缓存,让清华源生效
apt update
# 关闭防火墙
# 临时关闭防火墙
systemctl stop ufw
# 永久关闭防火墙(重启服务器也不会生效)
systemctl disable ufw2. 安装+验证 Node Exporter
a.操作步骤
# 基础依赖
apt install -y apt-transport-https software-properties-common wget gpg
# 安装 Node Exporter
apt install -y prometheus-node-exporter
# 设置 Node Exporter 开机自启
systemctl enable --now prometheus-node-exporter
# 验证 Node Exporter 是否安装成功
systemctl status prometheus-node-exporterb.结果图
Node Exporter:看到running代表成功

3.安装+配置 Prometheus
a.操作命令
# 安装 Prometheus
apt install -y prometheus
# 设置开机自启
systemctl enable --now prometheus
# 配置 Prometheus
nano /etc/prometheus/prometheus.yml
# 根据以下内容更改
global:
scrape_interval: 15s # 每15秒采集一次数据
scrape_configs:
# 采集虚拟机(主机)数据(Node Exporter)
- job_name: 'node'
static_configs:
- targets: ['172.16.11.52:9100'] # 固定你的虚拟机IP
# 采集Prometheus自身数据(监控自身是否正常运行)
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090'] # 固定值,无需修改
# 重启Prometheus
systemctl restart prometheus
# 验证 Prometheus
systemctl status prometheusb. 结果图
更改的内容

登录浏览器的web页面输入
http://172.16.11.52:9090,能看到Prometheus的web界面,点击顶部Status->Targets,UP就代表成功了

4.安装 Grafana
a.操作命令
# 导入Grafana密钥
wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg
# 添加清华源的Grafana仓库
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/ stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
# 安装 Grafana
apt update && sudo apt install -y grafana
# 启动 Grafana 并设置开机自启
systemctl enable --now grafana-server
# 验证 Grafana 是否安装成功
systemctl status grafana-serverb.结果图
浏览器访问你的
ip+端口初次登陆的用户和密码都为admin,输入以后会让你改密码

5.配置 Grafana 连接 Prometheus
先保证有
Prometheus这个插件,没有去插件商场下载点击左侧菜单栏 Connection -> 点击 Data Sources -> 点击 Prometheus图标

写上URL,然后保存,其他默认不变

点击页面最下方
Save & Test,出现Successfully queried the Prometheus API,说明连接成功

6.导入主机监控面板
a. 点击左侧菜单栏 Dashboards -> Import

b.输入面板ID:1860(可自行选择),点击 Load

c.点击以后会跳转到,再次倒入就行

d. 结果图

7.配置告警规则
a.操作命令
邮件警告
# 安装 Alertmanager
apt install -y prometheus-alertmanager
# 设置开机自启
systemctl enable --now prometheus-alertmanager
# 配置 Alertmanager
# 1.获取邮箱授权码(以QQ邮箱为例)
登录QQ邮箱→设置→账户→开启“IMAP/SMTP服务”→获取授权码(保存好,后面要用)
# 2.编辑Alertmanager配置文件
nano /etc/prometheus/alertmanager.yml
# 3.删除原有内容,复制以下内容
global:
resolve_timeout: 5m # 告警恢复后,5分钟内停止通知
route:
group_by: ['alertname'] # 按告警名称分组
group_wait: 10s # 同一组告警,等待10秒再发送(避免频繁告警)
group_interval: 10s # 同一组告警,间隔10秒发送一次
repeat_interval: 1h # 同一告警,每1小时重复发送一次(避免刷屏)
receiver: 'email_notify' # 默认告警接收者
receivers:
- name: 'email_notify'
email_configs:
- to: '你的接收邮箱@qq.com' # 替换成你要收告警的邮箱
from: '你的发送邮箱@qq.com' # 替换成你的QQ邮箱(和授权码对应)
smarthost: 'smtp.qq.com:587' # QQ邮箱SMTP服务器(固定)
auth_username: '你的发送邮箱@qq.com' # 替换成你的QQ邮箱
auth_password: '你的邮箱授权码' # 替换成刚才获取的授权码
require_tls: true # 开启加密(固定)
# 4. 重启Alertmanager
systemctl restart prometheus-alertmanager配置 Prometheus 关联 Alertmanager
nano /etc/prometheus/prometheus.yml
# global 下面,添加以下内容
alerting:
alertmanagers:
- static_configs:
- targets: ['172.16.11.52:9093'] # 固定虚拟机IP,Alertmanager默认端口9093
rule_files:
- "alert.rules" # 告警规则文件(后面创建,固定名称)
# 创建告警规则文件
nano /etc/prometheus/alert.rules
# 配置核心告警规则,复制以下内容,粘贴到alert.rules文件中
groups:
- name: "虚拟机监控告警"
rules:
# CPU使用率告警
- alert: CPU使用率过高
expr: 100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) > 80
for: 1m
labels:
severity: critical
annotations:
summary: "CPU使用率过高"
description: "CPU使用率持续1分钟超过80%,当前值为 {{ $value }}%"
# 内存使用率告警
- alert: 内存使用率过高
expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 85
for: 1m
labels:
severity: warning
annotations:
summary: "内存使用率过高"
description: "内存使用率持续1分钟超过85%,当前值为 {{ $value }}%"
#给文件授权
chown prometheus:prometheus /etc/prometheus/alert.rules
#重启Prometheus
systemctl restart prometheusb.结果图
邮件结果:

Prometheus上

总结:
查看文件哪里有问题,可以使用
promtool check config 文件路径+文件名踩的坑
配置文件格式特别严,空格、缩进错一点就启动失败
告警规则里不能随便用
round这类函数,容易报错文件权限不对,Prometheus 读不了配置也会崩
邮箱要开 SMTP,用授权码,不能直接填登录密码
搭建好这个服务器以后,不用24小时人工检测了,只要出现异常就会通过邮件提醒,解放时间和精力