部署prometheusalert
1
2
3
4
| git clone https://github.com/feiyu563/PrometheusAlert.git
cd PrometheusAlert/example/helm/prometheusalert
#更新config/app.conf设置登陆用户信息,并配置数据库信息
helm install -n monitoring .
|
创建企业微信群机器人
企业微信群以后,点击企业微信群,右键“添加群机器人”,创建群机器人会得到一个机器人的webhook地址,记录该地址备用。
Prometheus接入配置
配置alertmanager
由于我这里prometheus采用https://github.com/prometheus-operator/kube-prometheus.git
这里直接修改alertmanager-secret.yaml配置文件即可,将上面的webhook配置在receivers里即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| apiVersion: v1
data: {}
kind: Secret
type: Opaque
metadata:
name: alertmanager-main
namespace: monitoring
stringData:
alertmanager.yaml: |-
global:
resolve_timeout: "5m"
#email
smtp_smarthost: 'smtp.exmail.qq.com:465' # 邮箱smtp服务器代理
smtp_from: 'devops_alert@xxx.com' # 发送邮箱名称
smtp_auth_username: 'devops_alert@xxx.com' # 邮箱名称
smtp_auth_password: '1DevSop#' # 授权密码
smtp_require_tls: false # 不开启tls 默认开启
inhibit_rules:
- equal:
- namespace
- alertname
- instance
source_match:
severity: critical
target_match_re:
severity: warning|info
- equal:
- namespace
- alertname
- instance
source_match:
severity: warning
target_match_re:
severity: info
receivers:
- name: default
email_configs: # 邮箱配置
- to: "xxxx@163.com" # 接收警报的email配置
- name: jf-k8s-node
webhook_configs:
- url: "http://palert.con.sdi/prometheusalert?type=wx&tpl=jf-k8s-node&wxurl=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0da1f944-9a4e-4221-8036-f322351f7bd8"
|
配置Prometheus rules
这里举例磁盘告警规则
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
prometheus: k8s
role: alert-rules
name: external-node.rules
namespace: monitoring
spec:
groups:
- name: k8s-node.rules
rules:
- alert: 磁盘容量
expr: 100-(node_filesystem_avail_bytes{instance=~'39.100.*',fstype=~"ext4|xfs|fuse.glusterfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs|fuse.glusterfs"}*100) > 96
for: 1m
labels:
severity: critical
app: node-alert
annotations:
summary: "{{$labels.mountpoint}} 磁盘分区使用率过高!"
description: "{{$labels.mountpoint }} 磁盘分区使用大于90%(目前使用:{{$value}}%)"
|
定制消息模版
对于以上报警规则,默认情况下alertmanger有自己的告警消息模版不是很好用,这里我们统一使用prometheusalert的告警模版进行配置。
根据官方文档,我们新建模版,并指定模版类型为企业微信,模版用途Prometheus,模版内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| {{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
#### [Prometheus恢复信息]({{$v.generatorURL}})
##### <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
##### <font color="#FF0000">告警级别</font>:{{$v.labels.severity}}
##### <font color="#FF0000">触发时间</font>:{{GetCSTtime $v.startsAt}}
##### <font color="#02b340">恢复时间</font>:{{GetCSTtime $v.endsAt}}
##### <font color="#FF0000">故障实例</font>:{{$v.labels.instance}}
##### <font color="#FF0000">告警详情</font>:{{$v.annotations.description}}
{{else}}
#### [Prometheus告警信息]({{$v.generatorURL}})
##### <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
##### <font color="#FF0000">告警级别</font>:{{$v.labels.severity}}
##### <font color="#FF0000">触发时间</font>:{{GetCSTtime $v.startsAt}}
##### <font color="#FF0000">故障实例</font>:{{$v.labels.instance}}
##### <font color="#FF0000">告警详情</font>:{{$v.annotations.description}}
{{end}}
{{ end }}
|
当磁盘空间告警以后,实际效果如下:
至此,用prometheusalert接受Prometheus告警消息,转发给企业微信群机器人配置完毕。
另外,对于多集群多消息源,prometheusalert的强大就体现出来了。