3、Alertmanager告警

1、Alertmanager简介

Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具

2、Alertmanager部署

1.下载Alertmanager

Alertmanager可以独立部署在一台服务器中,也可以部署在prometheus服务器。
官网下载地址:https://prometheus.io/download/
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz -C /data
ln -sv /data/alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager

2.配置Alertmanager

cd /usr/local/alertmanager

cat > alertmanager.yml << 'EOF'
global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.163.com':25'
  smtp_from: 'shd_stars@163.com''
  smtp_auth_username: 'xxx@163.com'' #告警发送邮箱地址
  smtp_auth_password: 'xxxxx' #授权码!不是邮箱的登陆密码
  smtp_require_tls: false

route:
  group_by: ['alertname'] # 分组标签
  group_wait: 10s # 分组等待时间,同一组内在10秒钟内还有其它告警,如果有则一同发送
  group_interval: 10s # 上下两组间隔时间
  repeat_interval: 300s # 重复告警间隔时间,间隔时间不要设置太短,容易出现告警轰炸
  receiver: 'mail' # 接收者是谁

receivers: # 定义接收者,将告警发送给谁
- name: 'mail'
  email_configs:
  - to: 'xxx@163.com'' #接收邮箱地址
    send_resolved: true  #是否接收恢复信息,false|true

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    #确保这个配置下的标签内容相同才会抑制,也就是说警报中必须有这三个标签值才会被抑制。
    equal: ['alertname', 'dev', 'instance']    
EOF

配置文件的主要作用解释:

  • global: 全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。
  • route: 用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
  • receivers: 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式。
  • inhibit_rules: 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。
3.检查Alertmanager配置文件

cd /usr/local/alertmanager
./amtool check-config alertmanager.yml
提示Checking 'alertmanager.yml' SUCCESS 即表示配置文件格式正常。

4.创建Alertmanager启动文件
cat > /usr/lib/systemd/system/alertmanager.service << 'EOF' 
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable alertmanager.service --now
systemctl status alertmanager.service
可以通过浏览器访问:http://IP:9093 即可访问alertmanager。

3.配置Prometheus与Alertmanager告警

1、配置Prometheus

cd /usr/local/prometheus
vi prometheus.yml

...
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093 #实际的alertmanager IP和端口
rule_files:
  - "rules/*.yml" #告警规则文件路径
   #- "second_rules.yml"
...
2、检查Prometheus配置文件

cd /usr/local/prometheus
./promtool check config prometheus.yml
3、创建Prometheus rules目录
cd /usr/local/prometheus
mkdir rules
创建节点状态告警规则

cat > /usr/local/prometheus/rules/general.yml << 'EOF'
groups:
- name: general.rules
  rules:    
  - alert: InstanceDown
    expr: up == 0 # 表达式当前被监控实例服务(node_exporter)状态,1为正常,
    for: 10s # 告警持续时间10s 
    labels:
      severity: warning # 告警级别warning| error
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} 已经停止工作10秒钟。"
EOF

检查配置文件
./promtool check rules rules/general.yml
重启prometheus
systemctl restart prometheus
浏览器访问prometheushttp://IP:9090/rules 查看告警规则

图片.png

Prometheus Alert (http://IP:9090/alerts)告警状态有三种状态:Inactive、Pending、Firing。

  • Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。
  • Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所- 有的验证都通过,则将转到 Firing 状态。
  • Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。


    图片.png

4.验证邮件告警

验证故障邮件告警,停止node_exporter.service
systemctl stop node_exporter.service

  • 停止服务后,等待 15s 左右可以看到 Prometheus target 里面 node-exproter 状态为 unhealthy 状态
  • 等待 15s 后,alert 页面由绿色 node-up (0 active) Inactive 状态变成了黄色 node-up (1 active) Pending 状态
  • 继续等待 15s 后状态变成红色 Firing 状态,向 AlertManager 发送报警信息,此时 AlertManager 则按照配置规则向接受者发送邮件告警。

登录邮箱查看告警信件:


图片.png

恢复故障
systemctl start node_exporter.service

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容