FEATURED · 精选文章

Prometheus+Alertmanager 完整告警实战:从部署到邮箱告警全流程落地

发布时间 / 2026/9/4 17:17:33
来源 / 创域科博编辑部
栏目 / 资讯中心
Prometheus+Alertmanager 完整告警实战:从部署到邮箱告警全流程落地 Prometheus告警Alertmanager介绍实现Prometheus的告警需Alertmanager这个组件。Alertmanager与Prometheus是相互分离的两个组件。所以Alertmanager需单独安装配置。通过在Prometheus中定义AlertRule(告警规则)Prometheus会周期性的对告警规则进行计算如果满足告警触发条件就会向Alertmanager发送告警信息。在Prometheus中一条告警规则主要由告警名称和告警规则两部分组成:告警名称:用户为告警规则命名告警规则:告警规则由PromQL进行定义其实际意义是当表达式(PromQL)查询结果持续多长时间(During)后出发告警Prometheus服务器根据报警规则将警报发送给Alertmanager然后Alertmanager将静默(silencing)、抑制(inhibition)、分组聚合(aggregation)等消息通过Email、钉钉等发送通知。Alertmanager特性分组聚合:分组将同一类型的报警归类单个报警通知。适用于当系统宕机导致大量报警被同时触发此时分组机制可将这些被触发的告警合并为一个告警通知避免一次性发送大量告警通知。静默:提供了一个简单的机制可以快速根据标签对告警进行静默处理。特定时间不会发送告警通知。抑制:指当警报发出后停止重复发送由此警报引发其他错误的警报的机制。如网络不可达导致其他服务连接相关警报。Alertmanager部署从Prometheus官网获取[rootprometheus-server ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.30.1/alertmanager-0.30.1.linux-amd64.tar.gz源码包解压[rootprometheus-server ~]# tar -zxvf alertmanager-0.30.1.linux-amd64.tar.gzalertmanager-0.30.1.linux-amd64/ alertmanager-0.30.1.linux-amd64/alertmanager.yml alertmanager-0.30.1.linux-amd64/NOTICE alertmanager-0.30.1.linux-amd64/alertmanager alertmanager-0.30.1.linux-amd64/LICENSE alertmanager-0.30.1.linux-amd64/amtool[rootprometheus-server ~]# mv alertmanager-0.30.1.linux-amd64 /usr/local/src/alertmanager启动服务[rootprometheus-server ~]# nohup /usr/local//src/alertmanager/alertmanager --config.file/usr/local/src/alertmanager/alertmanager.yml [1]7884[rootprometheus-server ~]# nohup: 忽略输入并把输出追加到nohup.out[rootprometheus-server ~]# ps -ef | grep alertmanageroot78841312010:13 pts/0 00:00:00 /usr/local//src/alertmanager/alertmanager--config.file/usr/local/src/alertmanager/alertmanager.yml root99581312010:15 pts/0 00:00:00grep--colorauto alertmanage使用systemd管理[rootprometheus-server ~]# kill -9 7884[rootprometheus-server ~]# ps -ef | grep alertmanageroot103371312010:15 pts/0 00:00:00grep--colorauto alertmanage[1] 已杀死nohup/usr/local//src/alertmanager/alertmanager--config.file/usr/local/src/alertmanager/alertmanager.yml[rootprometheus-server ~]# vim /usr/lib/systemd/system/alertmanager.service[Service]ExecStart/usr/local/src/alertmanager/alertmanager--config.file/usr/local/src/alertmanager/alertmanager.yml[Install]WantedBymulti-user.target[Unit]DescriptionalertmanagerAfternetwork.target[rootprometheus-server~]# systemctl daemon-reload[rootprometheus-server~]# systemctl enable alertmanager.service --nowCreated symlink from /etc/systemd/system/multi- user.target.wants/alertmanager.service to /usr/lib/systemd/system/alertmanager.service.[rootprometheus-server~]# systemctl status alertmanager.service● alertmanager.service - alertmanager Loaded: loaded(/usr/lib/systemd/system/alertmanager.service;enabled;vendor preset: disabled)Active: active(running)since 五2026-09-0410:19:58 CST;10s ago Main PID:14076(alertmanager)CGroup: /system.slice/alertmanager.service └─14076 /usr/local/src/alertmanager/alertmanager--config.file/usr/local/src/........查看端口[rootprometheus-server~]# ss -anput | grep 9093tcp LISTEN0128[::]:9093[::]:* users:((alertmanager,pid14076,fd7))打开网页http://10.1.8.10:9093/集成到Prometheus在Prometheus-server配置文件prometheus.yml中修改[rootprometheus-server ~]# vim /usr/local/src/prometheus/prometheus.yml#8-12行...# Alertmanager configurationalerting: alertmanagers: - static_configs: - targets: -10.1.8.10:9093#修改为alertmanager的IP及对应端口...#15-16行rule_files: -rules/*.yml#修改为规则文件都存放到rules目录下#增加alertmanager监控项... - job_name:alertmanagerstatic_configs: - targets:[10.1.8.10:9093]查看Prometheus的target邮箱告警及告警规则注册邮箱开启授权码在alertmanager服务器上操作添加邮箱告警设置[rootprometheus-server ~]# cd /usr/local/src/alertmanager/[rootprometheus-server alertmanager]# cp -p alertmanager.yml alertmanager.yml.bk[rootprometheus-server alertmanager]# vim alertmanager.ymlglobal:resolve_timeout:5m# ***填自己的邮箱和授权码#465是SSL加密端口smtp_require_tls要变成false#25是明文端口smtp_require_tls要变成falsesmtp_smarthost:smtp.qq.com:465#腾讯的邮件服务器smtp_from:***smtp_auth_username:***smtp_auth_password:***smtp_require_tls:trueroute:group_by:[alertname]group_wait:10sgroup_interval:5mrepeat_interval:1mreceiver:mailreceivers:-name:mailemail_configs:-to:***smtp_from要和smtp_auth_username相同解释如下global:#全局设置配置解决告警时间间隔和邮件发送服务resolve_timeout:5m#定义持续多长时间未接收到告警标记后就将告警状态标记为resolvedsmtp_smarthost:***# 邮件服务器smtp_from:***# 邮件上显示的发件人邮件落款是谁smtp_auth_username:***# 邮箱名smtp_auth_password:***#邮箱认证使用授权码smtp_require_tls:true# 是否启动tlsroute:#路由树每个告警都会在配置的顶级路由中进入路由树路由树匹配所有报警规则group_by:[alertname]#告警过滤中分组标签group_wait:10s#分组等待的时间group_interval:5m# 上下两组发送告警的间隔时间repeat_interval:1m#重复发送告警时间默认为1h,现修改为1分钟receiver:mail#指定告警媒介类型receivers:#告警接收器这里配置接收邮箱地址。-name:mail#告警来源自定义名称email_configs:-to:***#指定接收端email重启alertmanager[rootprometheus-server alertmanager]# systemctl restart alertmanager在Prometheus-server上操作设置告警规则[rootprometheus-server ~]# mkdir /usr/local/src/prometheus/rules[rootprometheus-server ~]# vim /usr/local/src/prometheus/rules/node_alerts.ymlgroups:-name:general.rulesrules:-alert:NodeFilesystemUsage expr:100-(node_filesystem_free_bytes{mountpoint/,fstype~ext4|xfs}/ node_filesystem_size_bytes{fstype~ext4|xfs}* 100)30 for:1m labels:severity:warning annotations:summary:Instance {{ $labels.instance }} : {{ $labels.mountpoint }} 分区使用率过高description:{{ $labels.instance }} : {{ $labels.job }} : {{ $labels.mountpoint }} 这个分区使用百分之三十(当前值{{ $value }})解释如下groups:-name:general.rules# 告警规则组名称rules:#定义规则-alert:NodeFilesystemUsage# 告警名称在Alertmanager及邮箱可见。expr:100-(node_filesystem_free_bytes{mountpoint/,fstype~ext4|xfs}/ node_filesystem_size_bytes{fstype~ext4|xfs}* 100)30#表达式获取硬盘使用率大于30% 触发告警 for:1m#持续时间表示持续1分钟获取不到信息则触发报警0表示不使用持续时间。labels:#定义当前告警规则级别severity:warning annotations:#注释 告警通知summary:Instance {{ $labels.instance }} : {{ $labels.mountpoint }} 分区使用率过高description:{{ $labels.instance }} : {{ $labels.job }} : {{ $labels.mountpoint }} 这个分区使用百分之三十(当前值{{ $value }})重启服务[rootprometheus-server ~]# systemctl restart prometheus.service验证邮箱告警在Prometheus-server服务器上操作先查看当前/分区占用[rootprometheus-server ~]# df -hT文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs2.0G02.0G0% /dev tmpfs tmpfs2.0G02.0G0% /dev/shm tmpfs tmpfs2.0G 12M2.0G1% /run tmpfs tmpfs2.0G02.0G0% /sys/fs/cgroup /dev/mapper/centos-root xfs 50G2.2G 48G5% / /dev/mapper/centos-home xfs 146G 33M 146G1% /home /dev/sda1 xfs 1014M 140M 875M14% /boot tmpfs tmpfs 394M0394M0% /run/user/0进行测试创建大容量文件[rootprometheus-server ~]# dd if/dev/zero of/test bs10M count10000Prometheus页面已经出现告警提示alertmanager中也已经出现邮件告警在163邮箱中收到了告警邮件
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻