.vscode | ||
app | ||
config | ||
k8s | ||
utils | ||
views | ||
.drone.yaml | ||
.gitignore | ||
.python-version | ||
Dockerfile | ||
README.md | ||
requirements.txt | ||
test.py | ||
wsgi.py |
alertmanager-bark-webhook
将 alertmanager 告警转发到 bark 的 webhook
配置
config.yaml
# 属于 flask 的一些配置
DEBUG: true
BIND_ADDRESS: 0.0.0.0
BIND_PORT: 5000
APP_CONFIG:
# bark-server 的地址,推荐使用内网地址,使用 api v2 版本的推送,参考
# https://github.com/Finb/bark-server/blob/master/docs/API_V2.md
bark_api: http://bark-server:8080/push
# 推送时使用的标题,分为 告警时(firing) 解除时(resolved) 和 默认(default)
title:
firing: k8s02-prod 告警发生
resolved: k8s02-prod 告警解除
default: k8s02-prod
# 推送给谁,这里写需要推送的 bark device_key
to:
- OMITTED
# 这里暂不使用,可以不管
severity:
- 'warning'
- 'critical'
# 告警模板文件路径
template_file: text_template.tpl
告警模板文件使用 jinja2 语法
{%- if status == 'firing' -%}
告警发生:
{%- for alert in alerts %}
告警时间:{{alert.startsAt}}
{% if alert.labels.instance -%}
涉及实例:{{alert.labels.instance}}
{% endif -%}
{% if alert.labels.device -%}
涉及设备:{{alert.labels.device}}
{% endif -%}
告警名称:{{alert.labels.alertname}}
严重性:{{alert.labels.severity}}
详情:{{alert.annotations.description}}
{% if alert.annotations.value -%}
告警数据:{{alert.annotations.value}}
{% endif -%}
{% if alert.annotations.runbook_url -%}
参考文档:{{alert.annotations.runbook_url}}
{%- endif %}
---
{%- endfor %}
{%- else -%}
告警恢复:
{%- for alert in alerts %}
告警时间:{{alert.startsAt}}
恢复时间:{{alert.endsAt}}
{% if alert.labels.instance -%}
涉及实例:{{alert.labels.instance}}
{%- endif %}
{% if alert.labels.device -%}
涉及设备:{{alert.labels.device}}
{%- endif %}
告警名称:{{alert.labels.alertname}}
严重性:{{alert.labels.severity}}
详情:{{alert.annotations.summary}}
{% if alert.annotations.value -%}
告警数据:{{alert.annotations.value}}
{%- endif %}
---
{%- endfor %}
{%- endif -%}
注册设备
- 安装 bark 客户端
- 在客户端增加服务器
http://bark-test.hxjscloud.com/
- 可以在客户端看到 device_key,加入上面的配置文件中
- webhook 重启即可收到推送
部署
将准备好的配置文件和模板文件放置于 k8s/config
目录,文件名分别为 config.yaml
和 text_template.tpl
执行 kubectl apply -n ... -k k8s