安装alertmanager
安装包下载:
地址1:https://prometheus.io/download/
地址2:https://github.com/prometheus/alertmanager/releases
步骤:
1.部署alertmanager
2.在alertmanager.yml配置文件中配置邮箱服务器,路由数,接收人。
3.配置Prometheus与Alertmanager通信
4.在Prometheus中创建告警规则
1.部署
下载二进制包后解压
tar zxvf alertmanager-xxxx.tar.gz
mv alertmanager-xxxx alertmanager
注册系统服务(启动后端口默认·为9093)
[Unit]
Description=alertmanager
[Service]
ExecStart=/usr/local/monitor/alertmanager/alertmanager --config.file=/usr/local/monitor/alertmanager/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
- alertmanager.yml配置
#全局设置
global:
resolve_timeout: 5m
# 邮箱服务器
smtp_smarthost: 'smtp.qq.com:25'
smtp_from: '发送人邮箱'
smtp_auth_username: '发送人邮箱'
smtp_auth_password: '授权码'
smtp_require_tls: false
# 配置路由树
route:
group_by: ['jiankong'] # 根据告警规则组名进行分组
group_wait: 30s # 分组内第一个告警等待时间,30s内如有第二个告警会合并一个告警
group_interval: 10s # 发送新告警间隔时间,控制告警组的发送频率,一条告警消息发送后,等待3分钟,发送第二组告警
repeat_interval: 30m # 重复告警间隔发送时间,如果一条告警已经发送成功,后续相同的告警间隔6分钟发送
receiver: 'java_linux' #接收人
# 接收人
receivers:
- name: 'java_linux'
email_configs:
- to: 'tianye@lzad.cc'
3.配置Prometheus与Alertmanager通信
image.png
vim prometheus.yml
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "rules/*.yml"
# - "second_rules.yml"
配置了所有告警规则都匹配 普罗米修斯目录下rules目录下的所有yml文件,所以要新建一个目录rules
vim rules/node.yml
groups:
- name: jiankong #告警规则组名称
rules:
#文件系统使用率超过70%就告警
- alert: DiskFilesUsage #告警规则名称
expr: 100 - (node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 70 #ProQL表达式作为触发条件阀值
for: 2m #等待评估时间
labels: #自定义标签,定义一个level标签,标记这个告警规则是警告级别
level: warning
annotations: #指定附加信息(邮件标题文本)
summary: "{{ $labels.instance }}: {{ $labels.mountpoint }}分区使用过高"
description: "{{$labels.instance}}: {{$labels.mountpoint }} 分区使用大于 80% (当前值: {{ $value }})"
- alert: MemUsage
expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 >80
for: 2m
labels:
level: warning
annotations:
summary: "{{ $labels.instance }}: 内存使用过高"
description: "{{$labels.instance}}: 内存使用大于 80% (当前值: {{ $value }})"
- alert: CpuUsage
expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 80
for: 2m
labels:
level: warning
annotations:
summary: "{{ $labels.instance }}: CPU使用过高"
description: "{{$labels.instance}}: CPU使用大于 80% (当前值: {{ $value }})"
重新加载服务
image.png
这里告警规则已经应用上了
测试:
当分区1.111机器的跟分区使用率大于70%
image.png
开始检测到指标触发阀值,回到评估状态,过了评估时间就会发邮件
image.png
Prometheus 告警状态了解
一旦这些警报存储在Alertmanager,它们可能处于以下任何状态:
- · Inactive:这里什么都没有发生。
- · Pending:已触发阈值,但未满足告警持续时间(即rule中的for字段)
- · Firing:已触发阈值且满足告警持续时间。警报发送到Notification Pipeline,经过处理,发送给接受者这样目的是多次判断失败才发告警,减少邮件。
image