alertmanager告警规则编写案例
1.编写告警规则注意事项
首先要将一些类似的监控项规划到一个分组,在定义表达式、告警级别、告警详细内容,在告警详细内容中一定要熟练使用监控项自身的标签,这样就可以在告警内容中让管理员一眼知道什么触发了告警
2.编写磁盘告警规则
2.1.编写规则
expr指定表达式,在使用逻辑符号匹配阈值
告警内容中要熟练运用各种标签,标签都是监控项中自带的,value标签就是当前监控项的一个指标
[root@prometheus-server /data/prometheus]# vim rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeFilessystemUsage
expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率过高"
description: "{
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率超过80% (当前值: {
{ $value }}) "
1.检测语法
[root@prometheus-server /data/prometheus]# promtool check config /data/prometheus/prometheus.yml
2.加载配置
[root@prometheus-server /data/prometheus]# curl -XPOST 192.168.81.210:9090/-/reload
2.2.查看页面是否增加告警规则
点击status—rules即可看到告警规则
点击alert即可看到是否触发告警规则
2.3.触发告警
我们将阈值稍微调小一点即可触发告警
1.查看当前系统磁盘使用率
[root@prometheus-server /data/prometheus]# df -hT | egrep '文件|/$'
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 47G 7.6G 40G 17% /
2.根据刚刚查看的磁盘使用率调整一下告警阈值,将阈值调整为10
[root@prometheus-server /data/prometheus]# vim rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeFilessystemUsage
expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100) > 10
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率过高"
description: "{
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率超过80% (当前值: {
{ $value }}) "
2.4.查看告警邮件
三台node节点的告警已经发送,且同时发送在了一封邮件,也可以看到我们只改了阈值,下面的信息还是80%
3.编写内存告警规则
3.1.编写规则
[root@prometheus-server /data/prometheus]# vim rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeMemoryUsage
expr: 100 - ((node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} 内存使用率过高"
description: "{
{ $labels.instance }} 内存使用率超过80% (当前值: {
{ $value }}) "
1.检测语法
[root@prometheus-server /data/prometheus]# promtool check config /data/prometheus/prometheus.yml
2.加载配置
[root@prometheus-server /data/prometheus]# curl -XPOST 192.168.81.210:9090/-/reload
3.2.查看页面是否增加告警规则
点击status—rules即可看到告警规则
点击alert即可看到是否触发告警规则
内存和磁盘的使用率都属于node监控,因此都分在node.rules分组下
3.3.触发告警
我们将阈值稍微调小一点即可触发告警
将阈值调整为10
groups:
- name: node.rules
rules:
- alert: NodeMemoryUsage
expr: 100 - ((node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100) > 10
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} 内存使用率过高"
description: "{
{ $labels.instance }} 内存使用率超过80% (当前值: {
{ $value }}) "
已经生效
3.4.查看告警邮件
已经触发告警,且都是发送的一封邮件
4.编写CPU告警规则
4.1.编写规则
groups:
- name: node.rules
rules:
- alert: NodeCpuUsage
expr: 100 - (avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance) *100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} CPU使用率过高"
description: "{
{ $labels.instance }} CPU使用率超过80% (当前值: {
{ $value }}) "
1.检测语法
[root@prometheus-server /data/prometheus]# promtool check config /data/prometheus/prometheus.yml
2.加载配置
[root@prometheus-server /data/prometheus]# curl -XPOST 192.168.81.210:9090/-/reload
4.2.查看页面是否增加告警规则
点击status—rules即可看到告警规则
点击alert即可看到是否触发告警规则
CPU、内存、磁盘的使用率都属于node监控,因此都分在node.rules分组下
4.3.触发告警
我们将阈值稍微调小一点即可触发告警,将阈值调为1
groups:
- name: node.rules
rules:
- alert: NodeCpuUsage
expr: 100 - (avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance) *100) > 1
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} CPU使用率过高"
description: "{
{ $labels.instance }} CPU使用率超过80% (当前值: {
{ $value }}) "
已经生效
4.4.查看告警邮件
已经触发告警,且都是发送的一封邮件
5.将阈值调回正确
[root@prometheus-server /data/prometheus]# vim rules/node.yml
groups:
- name: node.rules
rules:
- alert: NodeFilessystemUsage
expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率过高"
description: "{
{ $labels.instance }} : {
{ $labels.mountpoint }} 磁盘使用率超过80% (当前值: {
{ $value }}) "
- alert: NodeMemoryUsage
expr: 100 - ((node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} 内存使用率过高"
description: "{
{ $labels.instance }} 内存使用率超过80% (当前值: {
{ $value }}) "
- alert: NodeCpuUsage
expr: 100 - (avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance) *100) > 80
for: 1m
labels:
serverity: warning
annotations:
summary: "主机 {
{ $labels.instance }} CPU使用率过高"
description: "{
{ $labels.instance }} CPU使用率超过80% (当前值: {
{ $value }}) "
大功告成了