Go to file
2022-08-23 10:11:35 +08:00
.vscode ready for build 2022-08-15 13:51:23 +08:00
app ready for build 2022-08-15 13:51:23 +08:00
config ready for build 2022-08-15 13:51:23 +08:00
k8s fix post bug 2022-08-17 16:58:45 +08:00
utils init 2022-08-08 05:51:01 +00:00
views fix post bug 2022-08-17 16:58:45 +08:00
.drone.yaml ready for build 2022-08-15 13:51:23 +08:00
.gitignore ready for build 2022-08-15 13:51:23 +08:00
.python-version init 2022-08-08 05:51:01 +00:00
Dockerfile ready for build 2022-08-15 13:51:23 +08:00
README.md [ci skip] 增加部署步骤 2022-08-23 10:11:35 +08:00
requirements.txt update dep 2022-08-15 18:16:49 +08:00
test.py ready for build 2022-08-15 13:51:23 +08:00
wsgi.py ready for build 2022-08-15 13:51:23 +08:00

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 -%}

注册设备

  1. 安装 bark 客户端
  2. 在客户端增加服务器 http://bark-test.hxjscloud.com/
  3. 可以在客户端看到 device_key加入上面的配置文件中
  4. webhook 重启即可收到推送

部署

将准备好的配置文件和模板文件放置于 k8s/config 目录,文件名分别为 config.yamltext_template.tpl

执行 kubectl apply -n ... -k k8s