banner
NEWS LETTER

Helm部署PrometheusAlert

Scroll down

本文作者:丁辉

Helm部署PrometheusAlert

介绍

PrometheusAlert 是一个开源的运维告警中心消息转发系统,它能够支持多种主流的监控系统、日志系统以及数据可视化系统。PrometheusAlert 的设计宗旨是为了解决不同系统之间预警消息的有效传递问题,确保关键信息能够及时通知到相关人员。

开始部署

官方文档

准备好 Mysql 数据库

安装可查看如下文档

Helm部署Mysql

服务名 IP地址:端口 账户密码
Mysql 192.168.1.10:3306 root/Root123456
PrometheusAlert prometheusalert.monitor.svc.cluster.local:8080 prometheusalert/prometheusalert
  1. 拉取代码

    v4.9 版本往上 Helm 部署 Bug 异常多,暂时还是推荐使用 v4.9

    1
    2
    git clone --branch v4.9 https://github.com/feiyu563/PrometheusAlert.git
    cd PrometheusAlert/example/helm
  2. Mysql创建数据库

    1
    CREATE DATABASE prometheusalert CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  3. 修改 app.conf 文件

    1
    vi prometheusalert/config/app.conf

    修改内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    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文件配置

  4. 编写 values.yaml 文件

    1
    vi prometheusalert-values.yaml

    内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ingress:
    enabled: true
    hosts:
    - host: # 域名
    paths: ["/"]

    tls:
    - secretName: drone-tls
    hosts:
    - # 域名
  5. 安装

    1
    2
    3
    helm install prometheusalert ./prometheusalert \
    --namespace monitor --create-namespace \
    -f prometheusalert-values.yaml
  6. 通过 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.

其他文章
cover
Helm部署Rook-Ceph
  • 70/01/01
  • 00:00
  • Kubernetes-Helm
cover
Helm部署Shadowsocks-Rust
  • 70/01/01
  • 00:00
  • Kubernetes-Helm
目录导航 置顶
  1. 1. Helm部署PrometheusAlert
    1. 1.1. 介绍
    2. 1.2. 开始部署
    3. 1.3. 卸载
  2. 2. 配置飞书告警模版测试
请输入关键词进行搜索