当前位置: 首页 > news >正文

Alertmanager 安装与配置指南

Alertmanager 支持二进制包、容器及源码三种安装方式,官方推荐使用 Docker 容器运行。本文将基于 Docker 方式部署 Alertmanager,并完成与 Prometheus 的集成。



一、部署 Alertmanager(Docker 方式)

1. 创建配置目录

mkdir -p /etc/prometheus/alertmanager

2. 编写 Alertmanager 配置文件

vim /etc/prometheus/alertmanager/config.yml

配置内容如下:

global:
#  resolve_timeout: 5m
route:group_by: ['project','environment','alertname','ip','severity']receiver: alertmonitor #对应下面receivers中的namecontinue: falsegroup_wait: 30sgroup_interval: 3mrepeat_interval: 24hroutes: - receiver: 'alertmonitor'match:severity: 'critical'repeat_interval: 15m- receiver: 'alertmonitor'match:severity: 'warning'repeat_interval: 30m- receiver: 'alertmonitor'match:severity: 'info'repeat_interval: 6h  # 每天最多通知一次
receivers:
- name: abcdockerwebhook_configs:- send_resolved: true#告警推送通知的api接口,如钉钉、飞书等url: 'http://172.xx.177.xx:18080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=https://open.feishu.cn/open-apis/bot/v2/hook/becxxxxxxxxx'
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'env', 'instance']# 新增:确保严重级别告警抑制天级别告警- source_match:severity: 'critical'target_match:severity: 'info'equal: ['alertname', 'env', 'instance']- source_match:severity: 'warning'target_match:severity: 'info'equal: ['alertname', 'env', 'instance']
templates:- /etc/prometheus/alertmanager/template/*.tmpl #告警模板路径

参数说明:
  • resolve_timeout:若在该时间内未收到新的告警,则标记为已恢复(resolved)。
  • follow_redirects:是否遵循 HTTP 3xx 重定向。
  • group_wait:首次触发告警后,等待此时间以合并同组内的新告警。
  • group_interval:相同告警组再次发送通知的最小间隔。
  • repeat_interval:重复发送同一告警的最小间隔。
  • continue: false:匹配到第一个子路由后即停止后续匹配。
  • templates:指定自定义告警模板路径。


二、编写告警通知模板(可选)

为提升告警信息的可读性,可自定义通知模板。

mkdir -p /etc/prometheus/alertmanager/template
vim /etc/prometheus/alertmanager/template/WeChat.tmpl

模板内容如下(适用于飞书/Webhook 等通用文本通知):

{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********【告警通知】**********
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.description }}
故障时间: {{ $alert.StartsAt.Local }}
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 -}}
**********【恢复通知】**********
告警类型: {{ $alert.Labels.alertname }}
告警级别: {{ $alert.Labels.severity }}
{{- end }}
=====================
告警主题: {{ $alert.Annotations.summary }}
告警详情: {{ $alert.Annotations.description }}
故障时间: {{ $alert.StartsAt.Local }}
恢复时间: {{ $alert.EndsAt.Local }}
{{ if gt (len $alert.Labels.instance) 0 -}}故障实例: {{ $alert.Labels.instance }}{{- end -}}
{{- end }}
{{- end }}
{{- end }}

⚠️ 注意:虽然本例命名为 WeChat.tmpl,但实际通过 Webhook 发送至飞书机器人,模板内容为纯文本格式,适用于大多数通知通道。



三、启动 Alertmanager 容器

docker run -d \-p 9103:9093 \--name alertmanager \-v /etc/prometheus/alertmanager:/etc/alertmanager \-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \docker.io/prom/alertmanager:latest \--config.file=/etc/alertmanager/config.yml

启动成功后,可通过 http://<服务器IP>:9103 访问 Alertmanager Web UI


在这里插入图片描述


四、配置 Prometheus 告警规则

1. 创建规则目录

建议将告警规则与 Prometheus 配置放在同一目录下:

mkdir -p /etc/prometheus/rules

2. 添加 Node Exporter 告警规则

vim /etc/prometheus/rules/node_exporter.yaml

示例规则如下:

groups:
- name: 主机状态-监控告警rules:- alert: 主机宕机expr: up == 0for: 1mlabels:severity: criticalannotations:summary: "{{ $labels.instance }}: 服务器宕机"description: "{{ $labels.instance }}: 目标不可达超过1分钟"- alert: CPU使用率过高expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 60for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} CPU使用率过高"description: "{{ $labels.instance }} CPU使用率超过60%(当前值:{{ $value | printf "%.2f" }}%)"- alert: 内存使用率过高expr: (1 - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes) * 100 > 80for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} 内存使用率过高"description: "{{ $labels.instance }} 内存使用率超过80%(当前值:{{ $value | printf "%.2f" }}%)"- alert: 磁盘IO负载过高expr: avg by(instance) (irate(node_disk_io_time_seconds_total[1m])) * 100 < 60for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} 磁盘IO响应延迟"description: "{{ $labels.instance }} 磁盘IO利用率异常(当前值:{{ $value | printf "%.2f" }}%)"- alert: 网络流入带宽过高expr: sum by(instance) (rate(node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr.*|lo.*'}[5m])) / 1024 / 1024 > 100for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} 网络流入带宽过高"description: "{{ $labels.instance }} 入向带宽持续高于100MB/s(当前值:{{ $value | printf "%.2f" }} MB/s)"- alert: 网络流出带宽过高expr: sum by(instance) (rate(node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr.*|lo.*'}[5m])) / 1024 / 1024 > 100for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} 网络流出带宽过高"description: "{{ $labels.instance }} 出向带宽持续高于100MB/s(当前值:{{ $value | printf "%.2f" }} MB/s)"- alert: TCP连接数过高expr: node_netstat_Tcp_CurrEstab > 1000for: 1mlabels:severity: warningannotations:summary: "{{ $labels.instance }} TCP连接数过高"description: "{{ $labels.instance }} 当前ESTABLISHED连接数超过1000(当前值:{{ $value }})"- alert: 磁盘空间不足expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80for: 1mlabels:severity: criticalannotations:summary: "{{ $labels.instance }} {{ $labels.mountpoint }} 磁盘空间不足"description: "{{ $labels.instance }} {{ $labels.mountpoint }} 使用率超过80%(当前值:{{ $value | printf "%.2f" }}%)"

✅ 提示:后续新增告警规则,只需在 /etc/prometheus/rules/ 目录下添加新的 .yaml 文件即可,Prometheus 会自动加载。



五、集成 Alertmanager 到 Prometheus

1. 重新启动 Prometheus 容器(挂载配置目录)

docker run -d \-p 9090:9090 \--restart=always \--name prometheus \-v /data/prometheus:/data/prometheus \-v /etc/prometheus:/etc/prometheus \registry.cn-beijing.aliyuncs.com/xx/prometheus:v2.18.1 \--config.file=/etc/prometheus/prometheus.yml \--storage.tsdb.path=/data/prometheus \--web.enable-admin-api \--web.enable-lifecycle \--storage.tsdb.retention.time=30d

2. 修改 Prometheus 配置文件

编辑 /etc/prometheus/prometheus.yml,添加以下内容:

# 加载告警规则
rule_files:- '/etc/prometheus/rules/*.yaml'# 配置 Alertmanager 地址
alerting:alertmanagers:- static_configs:- targets: ['10.0.24.13:9103']  # 替换为实际 Alertmanager 地址

保存后,可通过 Prometheus 的 /-/reload 接口热加载配置(需启用 --web.enable-lifecycle):

curl -X POST http://localhost:9090/-/reload


六、验证与调试

  1. 访问 Prometheus Web UI(http://<IP>:9090/alerts),确认告警规则已加载。
  2. 访问 Alertmanager Web UI(http://<IP>:9103),查看告警是否正确接收与分发。
  3. 模拟故障(如停用 Node Exporter),观察是否触发告警并收到飞书通知。


结语

通过以上步骤,您已成功部署并集成了 Alertmanager 与 Prometheus,实现了主机资源监控与自动化告警能力。后续可根据业务需求扩展通知渠道(如邮件、钉钉、企业微信)、优化告警规则,构建更完善的可观测性体系。


http://www.dtcms.com/a/586502.html

相关文章:

  • 数字孪生平台:让航天装备管理更智能、更可靠
  • 南阳网站排名优化价格已有网站怎么修改
  • 图片网站怎么做优化桂林市区漓江水倒灌
  • 李宏毅机器学习笔记43
  • 电子邮箱注册网站申请教育课程网站建设
  • 关于支持向量机算法的学习
  • 什么网站做hevc网站建设hyioi
  • 如何把自己做的网站挂网上网站项目功能需求清单
  • 网站内部数据搜索怎么做wordpress在php下安装教程视频
  • 4-GGML:看一下加法算子!
  • TypeVariable 检测与转换 type instanceof TypeVariable (TypeVariable<?>) type
  • 做搜狗手机网站排joomla做的网站
  • Android Hilt教程_构造函数
  • 花都个性设计商城网站建设wordpress 优酷插件
  • NCP13992中文版手册 工作原理
  • 网站建设三亚做一个网站得多少钱
  • 11.8 脚本网页 星际逃生
  • 用数据库做学校网站做ic芯片的要去哪个网站
  • 石油大学网页设计与网站建设天津塘沽爆炸视频
  • 建设银行反钓鱼网站影视网站怎么建设
  • leetcode 1611
  • 可信网站多少钱网站建设 网络科技
  • 电容充电:电子在极板上“分家囤货”,靠电场把电能“锁”起来
  • 做网站前怎么写文档phpcms模板下载
  • 在哪里创建网站平台自己的电脑如何做网站
  • 做一个网站要多少钱wordpress 短信通知
  • 太原网站优化哪家专业网站字体选择
  • 知识图谱之——图数据库:以“关系”为核心的数据新大陆
  • doris通过外部表同步数据
  • 做网站视频存储在哪里网页设计与制作课件张松炎