转载,通过 Prometheus Alertmanager 模块发送 Doris 异常信息至钉钉报警群

基础环境

1.Prometheus 版本:2.22.2
下载地址:
https://github.com/prometheus/prometheus/releases/download/v2.22.2/prometheus-2.22.2.linux-amd64.tar.gz

2.Alertmanager 版本:0.23
下载地址:
https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz

3.prometheus-webhook-dingtalk :1.4
下载地址:
https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz

1.新增用户和用户组

➜ groupadd prometheus➜ useradd -g prometheus -M -s /sbin/nologin prometheus

2.安装配置 Prometheus Server

详细 Prometheus 安装流程请参考:https://mp.weixin.qq.com/s/BcKN4s7qDokG_YmXn8Q-zQ

需要确保服务启动完成后,可以正常访问:http://localhost:9090,且 Doris 的 metrics 已经打入 Prometheus 中。

3.安装 AlertManager 模块

3.1  下载安装包

➜ wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
➜ tar xf alertmanager-0.23.0.linux-amd64.tar.gz -C /soft➜ cd /soft➜ mv alertmanager-0.23.0.linux-amd64 alertmanager➜ cd alertmanager➜ mkdir data #系统文件持久化路径➜ chown -R prometheus.prometheus /soft/alertmanager

说明:创建 data 目录是必须要操作的,不然后期启动 alertmanager 会异常。

3.2  配置 alertmanager.yml 文件

route:  group_by: ['alertname']  group_wait: 1s  group_interval: 1m  repeat_interval: 4h  receiver: 'webhook2'receivers:- name: 'webhook2'  webhook_configs:    - &dingtalk_config       send_resolved: true       url: http://localhost:8060/dingtalk/webhook2/send#An inhibition rule mutes an alert (target) matching a set of matchers when an alert (source) exists that matches another set of matchers. Both target and source alerts must have the same label values for the label names in the equal list.inhibit_rules:  - source_match:      severity: 'critical'    target_match:      severity: 'warning'    equal: ['alertname', 'dev', 'instance']

名词解释:

  • group_wait :设置等待时间,如果在等待时间内当前 Group 接收到了新的告警,这些告警将会合并为一个通知向 Receiver 发送。

  • group_interval :用于定义相同的 Group 之间发送告警通知的时间间隔。

  • repeat_interval:用于表示当一个规则成功被发送,重复发送报警的第二次间隔时间。

3.3  检查配置文件配置

很重要,关乎程序能否正常启动。当出现如下图片时,说明 alertmanager.yml 文件配置正常。

➜ cd /soft/alertmanager➜ ./amtool check-config ./alertmanager.yml

3.4 创建 Alertmanager 系统服务启动文件

➜ vim /usr/lib/systemd/system/alertmanager.service
[Unit]Description=alertmanagerDocumentation=https://prometheus.io/After=network.target
[Service]User=prometheusGroup=prometheusExecStart=/soft/alertmanager/alertmanager --config.file=/soft/alertmanager/alertmanager.yml --storage.path=/soft/alertmanager/dataRestart=on-failure
[Install]WantedBy=multi-user.target

3.5  启动服务

systemctl daemon-reloadsystemctl enable alertmanager.servicesystemctl start alertmanager.servicesystemctl status alertmanager.service #查看服务状态systemctl restart alertmanager.service #重启服务使用

3.6  启动服务

服务启动后,可以在http://localhost:9093查看ui界面
 

3.7  在 Prometheus 中配置 Alertmanager 模块

需要在 Prometheus 的安装目录下的 prometheus.yml 文件中加入 Alertmanager 通信地址和端口号,同时配置 alert rules 目录,该目录主要存放配置的报警规则。

vim prometheus.yml 
alerting:  alertmanagers:  - static_configs:    - targets: ['localhost:9093']  #根据实际alertmanager服务地址配置。
rule_files:   - "rule/*.yml"   #自定义规则存储目录,可以通过*.yml来通配该目录下所有规则。


3.8  重新加载 Prometheus 配置文件,查看 alerting 配置是否生效

Prometheus 服务支持热加载。当配置文件发生改变时,可以通过以下命令重新加载配置文件:

➜ ./promtool check config  prometheus.yml➜ systemctl reload prometheus.service

重启成功后,可以通过:http://localhost:9090/config查看 alerting 配置是否生效。

4.安装 prometheus-webhook-dingtalk 插件

4.1  下载插件

➜ wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz
➜ tar -xf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz  -C  /soft➜ mv prometheus-webhook-dingtalk-1.4.0.linux-amd64 prometheus-webhook-dingtalk

4.2  在钉钉群配置机器人

配置机器人时,需要添加自定义关键词,这个关键词后期在配置规则报警信息时,也同样需要出现,不然无法发送报警。

4.3  修该配置文件

在 webhook2 中配置刚才申请的机器人的地址,需要注意的是你的机器人路径配置在哪,那么 alertmanager.yml 中的 url 路径也要随之改变。

➜ cp  config.example.yml  config.yml➜ vim config.yml
## Request timeout# timeout: 5s
## Customizable templates path   自定义模板位置templates:  - /soft/alertmanager/alarm_template/webhook.tmpl## You can also override default template using `default_message`## The following example to use the 'legacy' template from v0.3.0# default_message:#   title: '{{ template "legacy.title" . }}'#   text: '{{ template "legacy.content" . }}'
## Targets, previously was known as "profiles"targets:  webhook1:   #加签的钉钉,需要同时配置加签机器人的密钥信息    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx    # secret for signature    secret: SEC000000000000000000000  webhook2:  #不加签钉钉    url: https://oapi.dingtalk.com/robot/send?access_token=cf9c2fd69723661108b7fd7******  webhook_legacy:       url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx    # Customize template content    message:      # Use legacy template      title: '{{ template "legacy.title" . }}'      text: '{{ template "legacy.content" . }}'  webhook_mention_all:  #@所有人钉钉    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx    mention:      all: true  webhook_mention_users:  #@指定用户钉钉    url: https://oapi.dingtalk.com/robot/send?access_token=cf9c2fd69723661108b7fd7****    mention:      mobiles: ['152****30', '134****74']

4.4 创建 webhook-dingtalk 系统服务启动文件

vim /usr/lib/systemd/system/webhook-dingtalk.service
[Unit]Description=prometheus-webhook-dingtalkDocumentation=https://github.com/timonwong/prometheus-webhook-dingtalkAfter=network.target
[Service]User=prometheusGroup=prometheusExecStart=/soft/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk  --config.file=/soft/prometheus-webhook-dingtalk/config.ymlRestart=on-failure
[Install]WantedBy=multi-user.target

4.5    启动服务

systemctl daemon-reloadsystemctl enable webhook-dingtalk.servicesystemctl start webhook-dingtalk.servicesystemctl status webhook-dingtalk.servicesystemctl restart webhook-dingtalk.service


4.6    查看 webhook-dingtalk 服务状态

5.配置报警规则

在 Prometheus 安装目录下的 prometheus.yml 文件中查看“rule_files”对应配置的目录地址,在该目录下新建报警规则。如果不清楚规则如何配置,可以在你安装的 Prometheus 的 UI 地址:http://localhost:9090/graph下查看 metrics 信息。

example:

5.1  配置 Doris fe 和 be 报警规则

当 Doris instance 是正常状态时,up ==1;当instance down机后,up ==0

注意:配置报警规则时,报警机器人自定义的关键字,在配置规则文件的 description 中必须要出现,不然钉钉群无法接收到报警信息。

➜ vim doris_instance.yml
groups:  - name: doris_instance_down    rules:      - alert: Doris Backends Down        expr: up {group="be", job="pro-doris"} == 0        for: 20s        labels:          user: doris          severity: error        annotations:          summary: "doris Instance {{ $labels.instance }} down"          description: "doris {{ $labels.instance }} of job {{ $labels.job }} has been down for more than 20s."      - alert: Doris Frontends Down        expr: up {group="fe", job="pro-doris"} == 0        for: 20s        labels:          user: doris          severity: error        annotations:          summary: "doris Instance {{ $labels.instance }} down"          description: "doris {{ $labels.instance }} of job {{ $labels.job }} has been down for more than 20s."

5.2    校验规则文件

如果是规则文件是 “SUCCESS” 状态,则说明规则文件配置正确,否则则需要检查配置对应的配置文件。 

➜ cd /soft/prometheus➜ ./promtool check config  prometheus.yml

5.3    重新加载 Prometheus 配置文件

➜ systemctl reload prometheus.service

6.测试

当 Doris 集群中的 instance 出现 down 机后,钉钉群里新建的机器人会发出报警信息。


 


 

当在 alertmanager.yml 文件中配置了 send_resolved = true,异常解除同样会发送钉钉警告信息,否则则不发送。
 


至此,Prometheus 监控 Doris 异常信息并发送报警至钉钉流程结束。

—— End ——

欢迎关注:

Apache Doris(incubating)官方公众号

【精彩文章】

社区人物志|王博:每一位你,都是前进道路上的一团星光。

社区人物志|张家锋:一个人可能走得更快,但一群人会走得更远

活动回顾|Apache Doris 向量化技术实现与后续规划

从NoSQL到Lakehouse,Apache Doris的13年技术演进之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值