5.4 KiB
5.4 KiB
本文作者:丁辉
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
git clone --branch v4.9 https://github.com/feiyu563/PrometheusAlert.git cd PrometheusAlert/example/helm
-
Mysql创建数据库
CREATE DATABASE prometheusalert CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-
修改 app.conf 文件
vi prometheusalert/config/app.conf
修改内容如下
db_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 文件
vi prometheusalert-values.yaml
内容如下
ingress: enabled: true hosts: - host: # 域名 paths: ["/"] tls: - secretName: drone-tls hosts: - # 域名
-
安装
helm install prometheusalert ./prometheusalert \ --namespace monitor --create-namespace \ -f prometheusalert-values.yaml
-
通过 NodePort 或 Ingress 对外开放访问后登录密码为
账号:prometheusalert
密码:prometheusalert
卸载
helm uninstall prometheusalert -n monitor
配置飞书告警模版测试
打开PrometheusAlert web页面,进入菜单模版管理-->自定义模板-->添加模版
-
模版名称:prometheus-fs
-
模版类型:飞书
-
模版用途:Prometheus
-
模版内容:
{{- 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内容
{ "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\"}" }
-
模板测试
-
模板保存