Linux 安装 Prometheus、Grafana、Alertmanager、Node Exporter,搭建主机监控告警平台(附安装包)
文章目录
- 1. 简介:一套开源的主机监控告警方案
- 2. 准备工作
- 3. 安装
- 3.1 目录规划
- 3.2 安装 Node Exporter(每台主机,含监控中心)
- 3.3 安装 Prometheus(监控中心)
- 3.4 安装 Grafana(可视化)
- 3.5 安装 Alertmanager(告警通知)
- 4. 配置对接与告警
- 4.1 配置 Prometheus 抓取 Node Exporter
- 4.2 Grafana 接入 Prometheus 数据源、调整语言
- 4.3 Grafana 导入主机监控仪表盘
- 4.4 编写 Prometheus 告警规则
- 4.5 Grafana 可视化告警(可选)
- 4.6 配置 Alertmanager 邮件通知
- 4.7 把 Prometheus 告警指向 Alertmanager
- 5. 使用与运维

1. 简介:一套开源的主机监控告警方案
服务器运维最基础也最重要的一件事,是实时掌握每台主机与系统的健康状态:CPU 是否长期打满、内存是否吃紧、磁盘是否快写满、网络流量是否异常。这些指标过去分散在各台机器上,逐一登录查看既费时又容易遗漏。Prometheus、Grafana、Alertmanager、Node Exporter 这四个开源项目组合起来,是业界最主流、部署最轻量的主机监控方案——四者各司其职,几分钟内即可搭起一个覆盖 CPU、内存、磁盘、网络等指标的监控告警平台。
四个组件分工明确,各管一段:
- Node Exporter(采集):部署在每台要监控的 Linux 主机上,读取内核暴露的
/proc、/sys等伪文件系统,把上百项硬件与系统指标聚合成标准格式,在 9100 端口暴露。 - Prometheus(存储与告警):监控中心,按固定周期"拉取"各主机的指标,存入本地时序数据库,用 PromQL 查询,并在告警规则满足时触发告警。
- Alertmanager(告警通知):接收 Prometheus 触发的告警,完成去重、分组、静默与路由,再把通知投递到邮件、Webhook 等接收方。
- Grafana(可视化):把 Prometheus 里的指标画成图表、仪表盘,一屏看清整个服务器集群的运转状况。
四者的数据流关系如下:
node_exporter(每台主机,:9100)
| 采集 CPU / 内存 / 磁盘 / 网络等指标
| Prometheus 定时拉取(pull)
v
Prometheus(监控中心,:9090)
| 存储时序数据、评估告警规则
+--------------> Grafana(:3000,可视化查询)
+--------------> Alertmanager(:9093,邮件 / Webhook 等告警通知)四个组件各有鲜明的技术特点:
- Prometheus:多维数据模型(时间序列由指标名 + 一组键值标签定义)、强大的 PromQL 查询语言、单节点自治无需外部存储、HTTP 拉取模型、原生告警规则评估。它诞生于 2012 年的 SoundCloud,用 Go 语言编写,2018 年成为继 Kubernetes 之后第二个从 CNCF(云原生计算基金会)毕业的项目,如今在 GitHub 上拥有约 6.5 万颗星标,是云原生监控领域的事实标准。
- Grafana:支持 170 余种数据源(Prometheus、Loki、MySQL、PostgreSQL 等)、灵活的仪表盘与模板变量、指标与日志联动、原生可视化告警。它 2013 年由瑞典开发者 Torkel Ödegaard 创建,现拥有约 7.6 万颗星标,全球用户超 3500 万,是观测领域的标杆。
- Alertmanager:Prometheus 官方维护的告警管理组件,负责告警去重、分组、静默与路由,支持邮件、PagerDuty、Slack、Webhook 等接收器,并可组建多实例 gossip 集群实现高可用,是云原生告警链路中"把原始告警变成可操作通知"的关键一环。
- Node Exporter:Prometheus 官方维护的主机指标采集器,单二进制、零配置、开箱即用,采用可插拔采集器架构,覆盖 CPU、内存、磁盘、文件系统、网络、进程、systemd 服务等系统级指标,几乎所有 Linux 发行版都将其打包进官方软件源。
2. 准备工作
2.1 Linux 机器
可以是 Debian、Ubuntu、CentOS、openEuler、Anolis OS、Rocky、AlmaLinux、SUSE 等,随意。
一台作为监控平台机器(我这里以 192.168.10.29 为例)
另一台作为被监控机器(我这里以 192.168.10.37 为例)
2.2 SSH/SFTP 连接工具
这里使用 Tabby 进行 SSH 连接(输入命令)和 SFTP 连接(上传文件)。
关于 Tabby 的下载、安装和使用,请参考:
《Windows 下载、安装 Tabby,开源终端模拟器 SSH、串口、多标签页管理(附安装包tabby-1.0.235-setup-x64.exe)》
- 下载Tabby:
- 笔记文档:
- 对应视频教程:
2.3 下载监控告警平台整合包
整合包及中文文档:https://hanshuixin.org/go/225T(内含 4个安装包、README 中英对照、发布说明中英对照和开源协议)。
本整合包内含 Prometheus、Grafana、Alertmanager、Node Exporter 四个软件的安装包与中文文档,目录结构如下:
Linux 安装 Prometheus、Grafana、Alertmanager、Node Exporter,搭建主机监控告警平台:CPU、内存、磁盘、网络(附安装包).zip
└── Linux 安装 Prometheus、Grafana、Alertmanager、Node Exporter,搭建主机监控告警平台:CPU、内存、磁盘、网络(附安装包)
├── Linux 安装 Prometheus、Grafana、Alertmanager、Node Exporter,搭建主机监控告警平台:CPU、内存、磁盘、网络(附安装包).pdf
├── prometheus-v3.13.2_Linux
│ ├── prometheus-3.13.2.linux-amd64.tar.gz
│ ├── README/
│ │ ├── README.md
│ │ └── README-中文版.md
│ ├── 发布说明/
│ │ ├── RELEASE-NOTES.md
│ │ └── RELEASE-NOTES-中文版.md
│ └── LICENSE
├── grafana-v13.1.3_Linux
│ ├── grafana-13.1.3.linux-amd64.tar.gz
│ ├── README/
│ │ ├── README.md
│ │ └── README-中文版.md
│ ├── 发布说明/
│ │ ├── RELEASE-NOTES.md
│ │ └── RELEASE-NOTES-中文版.md
│ ├── 源码/
│ │ └── grafana-v13.1.3-源码.zip
│ └── LICENSE
├── alertmanager-v0.33.1_Linux
│ ├── alertmanager-0.33.1.linux-amd64.tar.gz
│ ├── README/
│ │ ├── README.md
│ │ └── README-中文版.md
│ ├── 发布说明/
│ │ ├── RELEASE-NOTES.md
│ │ └── RELEASE-NOTES-中文版.md
│ └── LICENSE
└── node_exporter-v1.12.1_Linux
├── node_exporter-1.12.1.linux-amd64.tar.gz
├── README/
│ ├── README.md
│ └── README-中文版.md
├── 发布说明/
│ ├── RELEASE-NOTES.md
│ └── RELEASE-NOTES-中文版.md
└── LICENSE四个安装包均为官方发布的 Linux x86_64 预编译二进制包,不绑定特定发行版,解压即可运行,适用于主流的 x86_64(amd64)架构发行版。
也可以选择单独下载这4个软件:
- Prometheus:https://hanshuixin.org/resource/software_integrated_package/Linux/Prometheus
- Grafana:https://hanshuixin.org/resource/software_integrated_package/Linux/Grafana
- Alertmanager:https://hanshuixin.org/resource/software_integrated_package/Linux/Alertmanager
- Node Exporter:https://hanshuixin.org/resource/software_integrated_package/Linux/Node%20Exporter
3. 安装
四者的部署关系是:Node Exporter 装在每台要监控的主机上;Prometheus、Grafana 和 Alertmanager 只需各装一台(作为监控中心)。本文演示环境为两台主机:监控中心(Prometheus、Grafana、Alertmanager)部署在 192.168.10.29,被监控主机部署在 192.168.10.37。为让监控平台主机自身的状态也纳入监控,Node Exporter 会同时部署在这两台机器上。
四款软件统一安装到规范的 /opt 目录:安装包上传到 /opt 后原地解压,再把解压出的目录直接改名为不带版本号的固定名称(详见 3.1 节),最后注册为 systemd 服务。
3.1 目录规划
四款软件都是免安装的预编译二进制包,解压即用。为便于统一管理与引用,遵循以下约定:
- 统一安装到
/opt:/opt是 FHS(文件系统层次结构标准)约定的"可选软件"目录,专门放置这类手工安装、独立于发行版包管理器的软件。 - 安装包上传到
/opt后原地解压:解压出的目录自带版本号(如/opt/prometheus-3.13.2.linux-amd64)。 - 解压后直接改名为不带版本号的固定名称:例如
mv /opt/prometheus-3.13.2.linux-amd64 /opt/prometheus。这样 systemd 服务、日常命令、访问路径一律引用/opt/prometheus这个简洁固定的路径。
四个软件安装完成后,/opt 目录结构如下:
/opt/
├── prometheus/ # 由 prometheus-3.13.2.linux-amd64 改名而来
├── grafana/ # 由 grafana-13.1.3 改名而来
├── alertmanager/ # 由 alertmanager-0.33.1.linux-amd64 改名而来
└── node_exporter/ # 由 node_exporter-1.12.1.linux-amd64 改名而来说明:
/opt默认属主为 root,上传、解压与改名都需要sudo权限(或先用普通账号上传到临时目录,再sudo mv到/opt)。
3.2 安装 Node Exporter(每台主机,含监控中心)
Node Exporter 部署在每台要监控的 Linux 主机上。为了让监控平台主机自身(192.168.10.29)的 CPU、内存、磁盘、网络也纳入监控,需要在这台机器上也安装 Node Exporter。因此本文在 192.168.10.29 与 192.168.10.37 两台机器上都执行以下安装步骤。
将整合包中的 ./node_exporter-v1.12.1_Linux/node_exporter-1.12.1.linux-amd64.tar.gz 分别上传到这两台机器的 /opt/ 目录
在每台机器上执行:
# 进入 /opt 目录
cd /opt
# 解压 Node Exporter 二进制包(内含 node_exporter 可执行文件与 LICENSE)
sudo tar -xzf node_exporter-1.12.1.linux-amd64.tar.gz
# 改名为不带版本号的固定名称
sudo mv node_exporter-1.12.1.linux-amd64 node_exporter创建无登录权限的专用用户,并让该用户拥有软件目录:
# 创建无登录权限的专用系统用户 node_exporter
sudo useradd --system --no-create-home --shell /sbin/nologin node_exporter
# 将软件目录属主改为 node_exporter
sudo chown -R node_exporter:node_exporter /opt/node_exporter创建服务文件 /etc/systemd/system/node_exporter.service:
# 创建(或编辑)systemd 服务文件
vim /etc/systemd/system/node_exporter.service写入以下内容:
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
Group=node_exporter
WorkingDirectory=/opt/node_exporter
ExecStart=/opt/node_exporter/node_exporter \
--web.listen-address=0.0.0.0:9100 \
--collector.systemd
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target# 设置开机自启
sudo systemctl enable node_exporter
# 启动服务
sudo systemctl start node_exporter
# 查看服务运行状态
sudo systemctl status node_exporter默认监听 9100 端口
启动后访问对应主机的 http://<主机IP>:9100/metrics 即可看到该主机的指标输出:
如果看到下图所示内容,说明安装成功了,指标数据采集到了

3.3 安装 Prometheus(监控中心)
这里用 192.168.10.29 这台机器作为监控平台机器
将整合包中的 ./prometheus-v3.13.2_Linux/prometheus-3.13.2.linux-amd64.tar.gz 上传到 192.168.10.29 的 /opt/ 目录
在 192.168.10.29 机器上执行:
# 进入 /opt 目录
cd /opt
# 解压 Prometheus 二进制包(内含 prometheus 与 promtool 两个可执行文件)
sudo tar -xzf prometheus-3.13.2.linux-amd64.tar.gz
# 改名为不带版本号的固定名称
sudo mv prometheus-3.13.2.linux-amd64 prometheus创建专用用户,并让该用户拥有软件目录:
# 创建无登录权限的专用系统用户 prometheus
sudo useradd --system --no-create-home --shell /sbin/nologin prometheus
# 将软件目录属主改为 prometheus
sudo chown -R prometheus:prometheus /opt/prometheus创建服务文件 /etc/systemd/system/prometheus.service:
vim /etc/systemd/system/prometheus.service写入以下内容:
[Unit]
Description=Prometheus Monitoring
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
WorkingDirectory=/opt/prometheus
ExecStart=/opt/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus.yml \
--web.listen-address=0.0.0.0:9090 \
--storage.tsdb.retention.time=1y \
--storage.tsdb.path=/opt/prometheus/data
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
MemoryLimit=1G
[Install]
WantedBy=multi-user.target# 设置开机自启
sudo systemctl enable prometheus
# 启动服务
sudo systemctl start prometheus
# 查看服务运行状态
sudo systemctl status prometheus启动后访问 http://192.168.10.29:9090 即可打开 Prometheus 的 Web 界面。

3.4 安装 Grafana(可视化)
这里用 192.168.10.29 这台机器作为监控平台机器
将整合包中的 ./grafana-v13.1.3_Linux/grafana-13.1.3.linux-amd64.tar.gz 上传到 192.168.10.29 的 /opt/ 目录
在 192.168.10.29 机器上执行:
# 进入 /opt 目录
cd /opt
# 解压 Grafana 二进制包(内含 bin、conf 等目录)
sudo tar -xzf grafana-13.1.3.linux-amd64.tar.gz
# 改名为不带版本号的固定名称
sudo mv grafana-13.1.3 grafana创建专用用户,并让该用户拥有软件目录:
# 创建无登录权限的专用系统用户 grafana
sudo useradd --system --no-create-home --shell /sbin/nologin grafana
# 将软件目录属主改为 grafana
sudo chown -R grafana:grafana /opt/grafana创建服务文件 /etc/systemd/system/grafana.service:
vim /etc/systemd/system/grafana.service写入以下内容:
[Unit]
Description=Grafana Server
After=network.target
[Service]
Type=simple
User=grafana
Group=grafana
ExecStart=/opt/grafana/bin/grafana server --homepath=/opt/grafana
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target# 设置开机自启
sudo systemctl enable grafana
# 启动服务
sudo systemctl start grafana
# 查看服务运行状态
sudo systemctl status grafana启动后浏览器访问 http://192.168.10.29:3000,使用默认账号 / 密码 admin / admin 登录,首次登录会提示修改密码。

为 Grafana 设置新密码:

点击 Submit 即可,登录成功之后如下图所示:

3.5 安装 Alertmanager(告警通知)
这里用 192.168.10.29 这台机器作为监控平台机器
将整合包中的 ./alertmanager-v0.33.1_Linux/alertmanager-0.33.1.linux-amd64.tar.gz 上传到 192.168.10.29 的 /opt/ 目录
在 192.168.10.29 机器上执行:
# 进入 /opt 目录
cd /opt
# 解压 Alertmanager 二进制包(内含 alertmanager 与 amtool 两个可执行文件)
sudo tar -xzf alertmanager-0.33.1.linux-amd64.tar.gz
# 改名为不带版本号的固定名称
sudo mv alertmanager-0.33.1.linux-amd64 alertmanager创建专用用户,并让该用户拥有软件目录:
# 创建无登录权限的专用系统用户 alertmanager
sudo useradd --system --no-create-home --shell /sbin/nologin alertmanager
# 将软件目录属主改为 alertmanager
sudo chown -R alertmanager:alertmanager /opt/alertmanager创建服务文件 /etc/systemd/system/alertmanager.service:
vim /etc/systemd/system/alertmanager.service写入以下内容:
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
User=alertmanager
Group=alertmanager
WorkingDirectory=/opt/alertmanager
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--web.listen-address=0.0.0.0:9093
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target# 设置开机自启
sudo systemctl enable alertmanager
# 启动服务
sudo systemctl start alertmanager
# 查看服务运行状态
sudo systemctl status alertmanager启动后访问 http://192.168.10.29:9093 即可打开 Alertmanager 的 Web 界面。

4. 配置对接与告警
四个软件装好后,还需要两步"接线":第一步是让 Prometheus 抓取各主机的 Node Exporter、让 Grafana 连接 Prometheus 读取数据;第二步是打通告警链路,让 Prometheus 评估规则触发告警后,推送给 Alertmanager 去重、分组并通知到邮件。下面按顺序配置。
4.1 配置 Prometheus 抓取 Node Exporter
编辑 Prometheus 的 prometheus.yml,在 scrape_configs 下增加一个 node job,把各主机的 9100 端口列入 targets。参照实际环境,每台主机单独写一个配置项,并用 instance 标签给主机起一个易识别的别名(便于在 Grafana 里按名称切换主机):
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/prometheus/prometheus.yml /opt/prometheus/prometheus.yml.backup_202608241511
# 编辑 Prometheus 配置文件
vim /opt/prometheus/prometheus.yml修改说明:在 scrape_configs 下增加 prometheus 自身与 node 两个 job;node job 里把每台主机拆成独立的 - targets 配置项,分别标注 instance(主机别名)与 env(环境):
# 其他配置项
scrape_configs:
# 其他配置项
# 各 Linux 主机的 Node Exporter(含监控中心自身)
- job_name: "node"
static_configs:
# 监控中心主机
- targets: ["192.168.10.29:9100"]
labels:
# 实例名称:监控主机
instance: "monitor"
# 环境标识:测试环境
env: "test"
# 被监控主机
- targets: ["192.168.10.37:9100"]
labels:
# 实例名称:测试主机1
instance: "test-1"
# 环境标识:测试环境
env: "test"说明:targets 里填每台主机的 IP 与 9100 端口;instance 是给主机起的别名,建议改成能体现用途的名字(如 db-1、web-1)。保存后用 promtool 校验并热加载,无需重启进程:
# 校验配置,如果没有报错再继续下一步,否则按报错提示修改配置文件
/opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
# 热加载,无需重启即可生效配置文件的修改
sudo systemctl reload prometheus之后打开 Prometheus 界面 http://192.168.10.29:9090 的 Status → Target health,即可看到各主机抓取状态(UP 表示正常)。

4.2 Grafana 接入 Prometheus 数据源、调整语言
调整语言为中文

浏览器登录 Grafana http://192.168.10.29:3000 ,进入【连接(Connections)→ 数据源(Data sources)→ Add data source】,选择 Prometheus,在 URL 一栏填入 Prometheus 的地址(本文填 http://192.168.10.29:9090),保存并测试(Save & test)通过即可。

选择Prometheus数据源:

Connection > Prometheus server URL 填写:http://localhost:9090

4.3 Grafana 导入主机监控仪表盘
Grafana 官方与社区提供了现成的主机监控仪表盘,无需从零绘制,导入 Dashboard ID 即可:
- Node Exporter Full(ID 1860):最完整的 Node Exporter 仪表盘,覆盖 CPU、内存、磁盘、网络、系统负载等全面指标
导入路径:仪表盘(Dashboards)→ 新建 → 导入(Import)→ 输入 ID(1860) → Import。

导入 Node Exporter Full(ID 1860):


点击查看 Node Exporter Full(ID 1860) 仪表盘

被监控主机 【test-1】 的指标面板:

被监控主机 【monitor】 的指标面板:

4.4 编写 Prometheus 告警规则
先编辑规则文件 /opt/prometheus/rules.yml,覆盖主机离线、磁盘、内存、CPU 四类常见异常:
# 编辑(新建)告警规则文件
vim /opt/prometheus/rules.yml写入以下内容:
groups:
- name: node-alerts
rules:
# 主机离线
- alert: 主机离线
expr: up{job="node"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: 主机离线
description: "{{ $labels.instance }} Node Exporter 无法访问,已持续 2 分钟"
# 磁盘空间不足(根分区剩余低于 5GB)
- alert: 磁盘空间不足
expr: node_filesystem_avail_bytes{mountpoint="/"} < 5 * 1024 * 1024 * 1024
for: 10m
labels:
severity: warning
annotations:
summary: 磁盘空间不足
description: "{{ $labels.instance }} 根分区剩余空间低于 5GB,已持续 10 分钟"
# 内存使用率过高
- alert: 内存使用率过高
expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 85
for: 10m
labels:
severity: warning
annotations:
summary: 内存使用率过高
description: "{{ $labels.instance }} 内存使用率超过 85%,已持续 10 分钟"
# CPU 使用率过高
- alert: CPU使用率过高
expr: 100 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 > 85
for: 10m
labels:
severity: warning
annotations:
summary: CPU使用率过高
description: "{{ $labels.instance }} CPU 使用率超过 85%,已持续 10 分钟"然后在 prometheus.yml 中引入规则文件:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/prometheus/prometheus.yml /opt/prometheus/prometheus.yml.backup_202608241607
# 编辑 Prometheus 配置文件
vim /opt/prometheus/prometheus.yml在 rule_files 下加入 rules.yml:
rule_files:
- "rules.yml"# 校验 Prometheus 配置(会同时校验主配置文件和规则配置文件)
/opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
# 热加载配置
sudo systemctl reload prometheus规则中的 for 表示"条件持续满足多久才触发",可避免瞬时抖动误报;
labels.severity 标注严重级别,便于后续按级别路由;
annotations 中用 {{ $labels.instance }} 引用标签生成可读描述。
告警状态可在 Prometheus 界面 http://192.168.10.29:9090 的 Alerts 页查看(inactive / pending / firing)。

4.5 Grafana 可视化告警(可选)
Grafana 13 也内置了告警能力,适合在图表上直接定义阈值告警:在面板编辑中进入「告警(Alert)」页签,编写阈值表达式、设置评估周期,再配置联系点(Contact point,支持邮箱、Slack、钉钉、企业微信、Webhook 等)与通知策略(Notification policy),即可形成"看图即告警"的闭环。对于纯主机指标,推荐以 Prometheus 规则为主、Grafana 告警为辅,两者可并存。
该方式这里不做演示。
4.6 配置 Alertmanager 邮件通知
Alertmanager 的行为全部由 alertmanager.yml 配置文件驱动,最常用的场景是"故障时发邮件通知"。配置由 global(SMTP 发信参数)、route(分组与发送节奏)、receivers(收件人)三部分组成:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/alertmanager/alertmanager.yml /opt/alertmanager/alertmanager.yml.backup_202608241634
# 编辑 Alertmanager 配置文件
vim /opt/alertmanager/alertmanager.yml删除所有原有配置内容,写入以下内容(SMTP 参数按实际邮箱服务商填写):
global:
smtp_smarthost: 'smtp.126.com:465' # SMTP 服务器(以 126 邮箱为例)
smtp_from: '你的发件人邮箱地址' # 发件人邮箱,如:xxxxxx@126.com
smtp_auth_username: '你的发件人邮箱地址' # SMTP 认证用户名(通常是邮箱账号),如:xxxxxx@126.com
smtp_auth_password: '你的客户端授权码' # 客户端授权码(不是登录密码)
smtp_require_tls: false # 465 端口 SSL/TLS 直连
route:
receiver: email # 默认接收器
group_by: ['alertname', 'instance'] # 相同标签的告警合并为一组
group_wait: 5m # 首次告警后等待多久发送
group_interval: 15m # 同组新增告警的发送间隔
repeat_interval: 1h # 告警持续时的重复提醒间隔
receivers:
- name: email
email_configs:
- to: '收件人邮箱' # 收件人邮箱,如:xxxxxx@qq.com
send_resolved: true # 恢复时补发"已恢复"通知配置要点:
- SMTP 授权码:
smtp_auth_password通常是邮箱服务商(126、QQ、163 等)后台生成的「客户端授权码」,而非登录密码,用登录密码会认证失败 - 端口与加密:
465端口是 SSL/TLS 直连,配合smtp_require_tls: false;若用587端口需 STARTTLS,应改为smtp_require_tls: true - 分组节奏:
group_wait聚合首波告警、group_interval控制同组增量、repeat_interval控制重复提醒,三者配合避免刷屏
修改配置后先用 amtool 校验语法,再热加载:
# 校验 Alertmanager 配置语法
/opt/alertmanager/amtool check-config /opt/alertmanager/alertmanager.yml
# 重启 alertmanager 服务
sudo systemctl restart alertmanager在 Alertmanager Web 界面 http://192.168.10.29:9093 查看告警触发状态
暂无被触发的告警:

检查配置生效情况:

4.7 把 Prometheus 告警指向 Alertmanager
Alertmanager 本身不产生告警,需要 Prometheus 推送。在 prometheus.yml 中通过 alerting 字段注册 Alertmanager 地址:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/prometheus/prometheus.yml /opt/prometheus/prometheus.yml.backup_202608241652
# 编辑 Prometheus 配置文件
vim /opt/prometheus/prometheus.yml在配置中加入以下 alerting 段(地址填 Alertmanager 所在机器):
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.10.29:9093保存后校验并热加载 Prometheus:
# 校验 Prometheus 配置
/opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
# 热加载配置
sudo systemctl reload prometheus至此告警链路打通:Prometheus 评估 4.4 节的规则触发告警 → 推送给 Alertmanager → 按 route 去重分组 → 通过 SMTP 发到运维邮箱。告警与通知情况可在 Alertmanager 界面 http://192.168.10.29:9093 查看。
5. 使用与运维
5.1 各服务访问地址
部署完成后,各组件通过以下地址访问。注意:下表中的 IP 为本文演示环境,请把 192.168.10.29 换成你自己的监控中心 IP、把 192.168.10.37 换成你的被监控主机 IP。
| 组件 | 访问地址 | 说明 |
|---|---|---|
| Grafana | http://192.168.10.29:3000 | 可视化仪表盘(默认账号/密码: admin / admin) |
| Prometheus | http://192.168.10.29:9090 | Web 界面:查询、告警、抓取目标 |
| Prometheus 指标 | http://192.168.10.29:9090/metrics | Prometheus 自身监控指标 |
| Alertmanager | http://192.168.10.29:9093 | 告警与通知记录界面 |
| Node Exporter(监控中心) | http://192.168.10.29:9100/metrics | 监控中心主机指标 |
| Node Exporter(被监控主机) | http://192.168.10.37:9100/metrics | 被监控主机指标 |
Grafana 中导入的常用仪表盘:Node Exporter Overview(ID 23333) 作为总览首页、Node Exporter Full(ID 1860) 查看逐项细节、Prometheus 2.0 Overview(ID 3662) 观察 Prometheus 自身运行状态。
5.2 服务状态查看
四个软件都以 systemd 服务运行,日常用以下命令查看状态与日志:
# 查看各服务运行状态
sudo systemctl status node_exporter
sudo systemctl status prometheus
sudo systemctl status grafana
sudo systemctl status alertmanager
# 实时查看服务日志
sudo journalctl -u node_exporter -f
sudo journalctl -u prometheus -f
sudo journalctl -u grafana -f
sudo journalctl -u alertmanager -f页面侧的状态入口:
- 抓取目标:Prometheus 界面 http://192.168.10.29:9090 Status → Target health 查看各主机抓取状态(
UP为正常)、抓取耗时与最近错误 - 告警状态:
- Prometheus 界面 http://192.168.10.29:9090 Alerts 查看规则当前状态(inactive / pending / firing);
- Alertmanager 界面 http://192.168.10.29:9093 查看已触发告警与通知记录
- 采集自检:
- 确认两台主机的 Node Exporter 正常输出
curl http://192.168.10.29:9100/metricscurl http://192.168.10.37:9100/metrics
- 确认 Prometheus 自身指标正常
curl http://192.168.10.29:9090/metrics
- 确认两台主机的 Node Exporter 正常输出
5.3 常见场景的配置修改
日常运维中最常见的配置改动,操作步骤统一为「备份配置文件 → 编辑配置文件 → 校验语法 → 热加载」。
场景一:新增被监控主机
编辑 /opt/prometheus/prometheus.yml,在 node job 的 static_configs 下为新增主机追加一个 - targets 配置项,并标注 instance 别名与 env:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/prometheus/prometheus.yml /opt/prometheus/prometheus.yml.backup_202608241445
# 编辑 Prometheus 配置文件
vim /opt/prometheus/prometheus.yml新增一个 - targets 配置项(以新增 192.168.10.xx 主机为例):
scrape_configs:
- job_name: "node"
static_configs:
# 其他主机
# 新加的被监控主机
- targets: ["192.168.10.xx:9100"]
labels:
instance: "new-host"
env: "prod"保存后校验并热加载:
# 校验 Prometheus 配置
/opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
# 热加载配置
sudo systemctl reload prometheus场景二:调整告警阈值
编辑 /opt/prometheus/rules.yml,修改对应规则的 expr 阈值(如把磁盘剩余从 5GB 改为 10GB)与 for 持续时间:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/prometheus/rules.yml /opt/prometheus/rules.yml.backup_202608241445
# 编辑告警规则文件
vim /opt/prometheus/rules.yml修改规则的 expr 阈值与 for 持续时间:
- alert: 磁盘空间不足
expr: node_filesystem_avail_bytes{mountpoint="/"} < 10 * 1024 * 1024 * 1024
for: 10m保存后校验并热加载:
# 校验告警规则
/opt/prometheus/promtool check rules /opt/prometheus/rules.yml
# 热加载配置
sudo systemctl reload prometheus场景三:更换告警通知邮箱
编辑 /opt/alertmanager/alertmanager.yml,修改 smtp_from、smtp_auth_username、smtp_auth_password 及 receivers 中的收件邮箱:
# 修改配置文件之前先备份配置文件,方便修改失败时回滚
cp /opt/alertmanager/alertmanager.yml /opt/alertmanager/alertmanager.yml.backup_202608241445
# 编辑 Alertmanager 配置文件
vim /opt/alertmanager/alertmanager.yml修改 SMTP 发信参数与收件邮箱:
receivers:
- name: email
email_configs:
- to: 'new-ops@example.com'
send_resolved: true保存后校验并热加载:
# 校验 Alertmanager 配置
/opt/alertmanager/amtool check-config /opt/alertmanager/alertmanager.yml
# 重启 alertmanager 服务
sudo systemctl restart alertmanager