本文作者:丁辉
Helm部署PrometheusAlert
介绍
PrometheusAlert 是一个开源的运维告警中心消息转发系统,它能够支持多种主流的监控系统、日志系统以及数据可视化系统。PrometheusAlert 的设计宗旨是为了解决不同系统之间预警消息的有效传递问题,确保关键信息能够及时通知到相关人员。
开始部署
准备好 Mysql 数据库
安装可查看如下文档
服务名 | IP地址:端口 | 账户密码 |
---|---|---|
Mysql | 192.168.1.10:3306 | root/Root123456 |
PrometheusAlert | prometheusalert.monitor.svc.cluster.local:8080 | prometheusalert/prometheusalert |
拉取代码
v4.9 版本往上 Helm 部署 Bug 异常多,暂时还是推荐使用 v4.9
1
2git clone --branch v4.9 https://github.com/feiyu563/PrometheusAlert.git
cd PrometheusAlert/example/helmMysql创建数据库
1
CREATE DATABASE prometheusalert CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改 app.conf 文件
1
vi prometheusalert/config/app.conf
修改内容如下
1
2
3
4
5
6
7
8db_driver=mysql
db_host=mysql.mysql.svc.cluster.local
db_port=3306
db_user=root
db_password=Root123456
db_name=prometheusalert
# 开启飞书告警通道
open-feishu=1参考 app.conf文件配置
编写 values.yaml 文件
1
vi prometheusalert-values.yaml
内容如下
1
2
3
4
5
6
7
8
9
10ingress:
enabled: true
hosts:
- host: # 域名
paths: ["/"]
tls:
- secretName: drone-tls
hosts:
- # 域名安装
1
2
3helm install prometheusalert ./prometheusalert \
--namespace monitor --create-namespace \
-f prometheusalert-values.yaml通过 NodePort 或 Ingress 对外开放访问后登录密码为
账号:prometheusalert
密码:prometheusalert
卸载
1 | helm uninstall prometheusalert -n monitor |
配置飞书告警模版测试
打开PrometheusAlert web页面,进入菜单模版管理–>自定义模板–>添加模版
模版名称:prometheus-fs
模版类型:飞书
模版用途:Prometheus
模版内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22{{- range $k, $v := .alerts -}}
{{- if eq $v.status "resolved" -}}
<font color="green">**告警恢复信息**</font>
事件名称: **{{ if $v.annotations.summary }}{{ $v.annotations.summary }}{{ else }}{{ $v.labels.alertname }}{{ end }}**
{{ if $v.status }}告警类型: {{$v.status}}{{ end }}
{{ if $v.labels.level }}告警级别: {{$v.labels.level}}{{ end }}
开始时间: {{GetCSTtime $v.startsAt}}
恢复时间: {{GetCSTtime $v.endsAt}}
{{ if $v.labels.instance }}主机地址: {{$v.labels.instance}}{{ end }}
{{ if $v.annotations.value }}当前值: {{$v.annotations.value}}{{ end }}
<font color="green">**事件回顾: {{$v.annotations.description}}**</font>
{{- else -}}
<font color="red">**告警信息**</font>
事件名称: **{{ if $v.annotations.summary }}{{ $v.annotations.summary }}{{ else }}{{ $v.labels.alertname }}{{ end }}**
{{ if $v.status }}告警类型: {{$v.status}}{{- end }}
{{ if $v.labels.level }}告警级别: {{$v.labels.level}}{{ end }}
开始时间: {{GetCSTtime $v.startsAt}}
{{ if $v.labels.instance }}主机地址: {{$v.labels.instance}}{{ end }}
{{ if $v.annotations.value }}触发值: {{$v.annotations.value}}{{ end }}
<font color="red">**事件详情: {{$v.annotations.description}}**</font>
{{- end -}}
{{- end -}}消息协议JSON内容
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
42
43
44
45
46
47
48{
"receiver": "webhook",
"status": "firing",
"alerts": [
{
"status": "resolved",
"labels": {
"alertname": "HighCPUUsage",
"level": "warning",
"instance": "192.168.1.10:9100"
},
"annotations": {
"summary": "CPU使用率过高",
"value": "95%",
"description": "CPU使用率持续超过阈值90%达5分钟"
},
"startsAt": "2023-08-25T10:00:00Z",
"endsAt": "2023-08-25T10:05:00Z",
"generatorURL": "http://prometheus:9090/graph"
},
{
"status": "firing",
"labels": {
"alertname": "DiskFull",
"level": "critical",
"instance": "192.168.1.11:9100"
},
"annotations": {
"summary": "磁盘空间不足",
"value": "98%",
"description": "/data分区使用率超过95%"
},
"startsAt": "2023-08-25T10:03:00Z",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "http://prometheus:9090/graph"
}
],
"groupLabels": {
"alertname": "instance"
},
"commonLabels": {
"job": "node_exporter"
},
"commonAnnotations": {},
"externalURL": "http://alertmanager:9093",
"version": "4",
"groupKey": "{}:{alertname=\"instance\"}"
}模板测试
模板保存
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Kubernetes/Helm/Helm部署PrometheusAlert.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。