• 欢迎访问运维搬运工网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 本站一年会员:100元 ,两年会员:180元 ,永久会员:380元
  • 这世界就是,一些人总在昼夜不停地运转,而另外一些人,起床就发现世界已经变了。
  • 本博客推广的是知识付费,用赞助的方式实现博客维护,不以赚钱为目的的博客

安装alertmanager并报警

解压

[root@lucky prometheus]# cd /usr/local/src/

tar zxf alertmanager-0.19.0.linux-amd64.tar.gz
[root@lucky src]# mkdir -p /usr/local/prometheus
[root@lucky src]# mkdir -p /data/prometheus/alertmanager/data
[root@lucky src]# mv alertmanager-0.19.0.linux-amd64 /usr/local/prometheus/alertmanager

创建用户并授权

[root@lucky src]# useradd prometheus
[root@lucky src]# chown -R prometheus:prometheus /usr/local/prometheus /data/prometheus

添加启动服务

[root@lucky src]# vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/alertmanager/alertmanager --config.file=/usr/local/prometheus/alertmanager/alertmanager.yml --storage.path=/data/prometheus/alertmanager/data
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动

[root@lucky src]# systemctl enable alertmanager.service
Created symlink from /etc/systemd/system/multi-user.target.wants/alertmanager.service to /usr/lib/systemd/system/alertmanager.service.
[root@lucky src]# systemctl start alertmanager.service

修改主配置文件

 

[root@lucky src]# vim /usr/local/prometheus/alertmanager/alertmanager.yml

# 全局配置项
global: 
resolve_timeout: 5m #处理超时时间,默认为5min
smtp_smarthost: 'smtp.qq.com:587' # 邮箱smtp服务器代理
smtp_from: '******@qq.com' # 发送邮箱名称
smtp_auth_username: '******@qq.com' # 邮箱名称
smtp_auth_password: '******' # 授权码
smtp_require_tls: false
# wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' # 企业微信地址


# 定义模板信息
templates:
- 'template/*.tmpl'

# 定义路由树信息
route:
group_by: ['alertname'] # 报警分组依据
group_wait: 20s # 最初即第一次等待多久时间发送一组警报的通知
group_interval: 20s # 在发送新警报前的等待时间
repeat_interval: 5m # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
receiver: 'email' # 发送警报的接收者的名称,以下receivers name的名称

# 定义警报接收者信息
receivers:
- name: 'email' # 警报
email_configs: # 邮箱配置
- to: '******@163.com,******@qq.com' # 接收警报的email配置,多个邮箱用“,”分隔
html: '{{ template "test.html" . }}' # 设定邮箱的内容模板
headers: { Subject: "[WARN] 报警邮件"} # 接收邮件的标题
webhook_configs: # webhook配置,不需要可以注释掉
- url: 'http://127.0.0.1:5001'
send_resolved: true
# wechat_configs: # 企业微信报警配置,不需要可以注释掉
# - send_resolved: true
# to_party: '1' # 接收组的id
# agent_id: '1000002' # (企业微信-->自定应用-->AgentId)
# corp_id: '******' # 企业信息(我的企业-->CorpId[在底部])
# api_secret: '******' # 企业微信(企业微信-->自定应用-->Secret)
# message: '{{ template "test_wechat.html" . }}' # 发送消息模板的设定

检查配置有没有错误

[root@lucky prometheus]# /usr/local/prometheus/alertmanager/amtool check-config /usr/local/prometheus/alertmanager/alertmanager.yml
Checking '/usr/local/prometheus/alertmanager/alertmanager.yml' SUCCESS
Found:
- global config
- route
- 1 inhibit rules
- 1 receivers
- 1 templates
SUCCESS

 

tmpl模板配置

[root@lucky src]# cd /usr/local/prometheus/alertmanager/
[root@lucky alertmanager]# mkdir template
[root@lucky alertmanager]# vim template/test.tmpl

{{ define "test.html" }}
<table border="1">
<tr>
<td>项目组</td>
<td>报警项</td>
<td>实例</td>
<td>报警阀值</td>
<td>开始时间</td>
<td>详情</td>
</tr>
{{ range $i, $alert := .Alerts }}
<tr>
<td>{{ index $alert.Labels "group" }}</td>
<td>{{ index $alert.Labels "alertname" }}</td>
<td>{{ index $alert.Labels "instance" }}</td>
<td>{{ index $alert.Annotations "value" }}</td>
<td>{{ $alert.StartsAt }}</td>
<td>{{ index $alert.Annotations "summary" }}</td>
</tr>
{{ end }}
</table>
{{ end }}

上述Labels项,表示prometheus里面的可选label项。annotation项表示报警规则中定义的annotation项的内容。

定义报警规则

[root@lucky alertmanager]# pwd
/home/prometheus/
[root@lucky alertmanager]# vim rules.yml
groups:
- name: node_status
rules:
- alert: node_status # 告警名称
expr: probe_success == 0 # 告警的判定条件,参考Prometheus高级查询来设定
for: 1m # 满足告警条件持续时间多久后,才会发送告警
labels: #标签项
status: 严重
annotations: # 解析项,详细解释告警信息
summary: "group:{{$labels.group}},instance:{{$labels.instance}} has been down "
description: "group:{{$labels.group}},instance:{{$labels.instance}} has been down "
value: "{{$value}}"
- name: CPU
rules:
- alert: CPU使用率
expr: sum(avg without (cpu)(irate(node_cpu_seconds_total{mode!='idle'}[6m]))) by (instance) * 100 > 1
for: 1m
labels:
status: 一般
annotations:
summary: "group:{{$labels.group}},instance:{{$labels.instance}}:CPU使用率大于1%"
value: "{{$value}}"

报警规则可以根据自己的需求进行添加修改。

  • 告警信息生命周期的3种状态
  1. inactive:表示当前报警信息即不是firing状态也不是pending状态。
  2. pending:表示在设置的阈值时间范围内被激活的。
  3. firing:表示超过设置的阈值时间被激活的。
  • 修改prometheus配置文件
[root@lucky alertmanager]# cat /home/prometheus/prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets: ["10.0.0.94:9093"]
rule_files:
- "rules.yml"

检查有没有错误

[root@lucky prometheus]# ./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: 1 rule files found

Checking rules.yml
SUCCESS: 2 rules found

重新加载服务

[root@lucky prometheus]# systemctl reload prometheus

 

查看两条报警信息

http://10.0.0.94:9090/alerts

当监控的指标数值到达规定的阈值,且满足定义的报警时间后就会发送警报,在web界面也可以看到相应状态的变化。

http://10.0.0.94:9090/rules

邮件报警内容

 

 


运维搬运工 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:安装alertmanager并报警
喜欢 (0)
[扫描二维码]
分享 (0)
大自然搬运工
关于作者:
不是路不平,而是你不行。到底行不行,看你停不停。只要你不停,早晚都能行。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址