首页 > 其他分享 >aalertmanager+prometheus-webhook-dingtalk推送至钉钉群

aalertmanager+prometheus-webhook-dingtalk推送至钉钉群

时间:2024-09-10 11:52:55浏览次数:14  
标签:node alertmanager dingtalk labels webhook alert prometheus

揭秘业务背后的守护者,真实业务场景带你领略运维技术的魅力!

看了很多技术大佬的博客,都是在讲技术,缺乏业务场景的构建,很多运维人员遇到问题找不到解决方案。因此我想分享真实的业务场景,大家一起沟通业务问题,快速的提升技术,快速升职加薪。

-----------------------正文开始-----------------------

搭建了prometheus+grafana后,可以将主机的监控数据通过grafana可视化展示。当监控达到设置的阈值之后,可以通过alertmanager+prometheus-webhook-dingtalk推送至钉钉群中,提醒运维人员进行关注并处理。

Prometheus 规则配置:

groups:

- name: consul-datacenter-node-alert
  rules:
  - alert: "探针未启动或宕机"
    expr: up{job =~ "node-nginx"}  == 0
    for: 30s
    labels:
      env: 生产
      app: datacenter-linux
    annotations:
      description: "Job:{{ $labels.job }}, Instance:{{ $labels.instance }}, Role:{{ $labels.role }}的探针未启动或宕机,当前值:{{ $value }}"



  - alert: "CPU使用率过高"
    expr: (100 - (avg by(job,instance,role) (irate(node_cpu_seconds_total{job =~ "node-nginx",mode="idle"}[5m])) * 100)) > 80
    for: 2m
    labels:
      env: 生产
      app: datacenter-linux
    annotations:
      description: "{{ $labels.instance }} ({{ $labels.role }}) 的 CPU使用率超过90% ,当前值:{{ $value }}"


  - alert: "内存使用率过高"
    expr: ((node_memory_MemTotal_bytes{job =~ "node-nginx"} - node_memory_MemAvailable_bytes{job =~ "node-nginx"}) / node_memory_MemTotal_bytes{job =~ "node-nginx"}) * 100 > 73
    for: 2m
    labels:
      env: 生产
      app: datacenter-linux
    annotations:
      description: "{{ $labels.instance }} ({{ $labels.role }}) 内存使用率超过90%,当前值:{{ $value }}"

  - alert: "磁盘使用率过高>=80%"
    expr: 100 - ((node_filesystem_avail_bytes{fstype=~"ext4|xfs|nfs|nfs4", job =~ "node-nginx"} * 100) / node_filesystem_size_bytes {fstype=~"ext4|xfs|nfs|nfs4", job =~ "node-nginx"}) >= 80
    for: 2m
    labels:
      env: 生产
      app: datacenter-linux
    annotations:
      description: "{{ $labels.instance }},({{ $labels.role }}) {{ $labels.mountpoint }}分区使用率已超过80%,当前值:{{ $value }}"


alertmanager:

1、下载alertmanager:

https://github.com/prometheus/alertmanager/tags

2、设置重启alertmanager

vim restart.sh
#!/bin/bash
pidnum=`ps aux|grep alertmanager|grep -v grep|awk -F ' ' '{print $2}'`
kill -9 ${pidnum}
nohup /opt/jiankong/alertmanager/alertmanager --config.file=/opt/jiankong/alertmanager/dingtalk.yml --storage.path=/opt/jiankong/alertmanager/alertmanager_data --web.external-url=http://192.168.210.75:9093 &

3、alertmanager配置检查:

./amtool check-config dingtalk.yml

4、alertmanager配置:

[root@localhost alertmanager]# cat dingtalk.yml
global:
 resolve_timeout: 10m

#templates:
#- './config/*.tmpl'

route:
 group_by: ['alertname']
 group_wait: 30s
 group_interval: 30s
 repeat_interval: 5m
 #repeat_interval: 5s
 receiver: 'default'
 routes:

 # 推送告警测试群
 - match:
 app: "datacenter-linux"
 receiver: 'webhook-dingtalk-alter-test'
 # 推送第二个告警测试群
 - match:
 app: "blackbox_icmp"
 receiver: 'blackbox-dingtalk-alter-test'
inhibit_rules:
- source_match:

receivers:

- name: 'webhook-dingtalk-alter-test'
 webhook_configs:
 - send_resolved: true
 # 临时-告警测试群
 url: http://192.168.210.75:8060/dingtalk/webhook1/send

- name: 'blackbox-dingtalk-alter-test'
 webhook_configs:
 - send_resolved: true
 # 临时-第二个告警群
 url: http://192.168.210.75:8060/dingtalk/webhook2/send
- name: 'default'
 webhook_configs:

 # 临时-告警测试群
 - url: http://192.168.210.75:8060/dingtalk/webhook1/send

prometheus-webhook-dingtalk

1、下载prometheus-webhook-dingtalk:

https://github.com/timonwong/prometheus-webhook-dingtalk/releases/tag

2、Prometheus-webhook-dingtalk 配置:

[root@localhost webhook-dingtalk-2.0.0]# cat config-message.yml

#timeout: 5s
#no_builtin_template: true
templates:
 - /opt/jiankong/webhook-dingtalk-2.0.0/contrib/templates/alertmanager-dingtalk-message.tmpl
 - /opt/jiankong/webhook-dingtalk-2.0.0/contrib/templates/blackbox-icmp-message.tmpl
targets:
 webhook1:
 url: https://oapi.dingtalk.com/robot/send?access_token=28b5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 secret: SEC2bc3fb99xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxecbbd1273d1bb6
 mention:
 mobiles: ['173xxxxxx56']
 message:
 text: |
 {{ template "linux.message" . }} #这里选择模版名字
 @173xxxxxx56
 webhook2:
 url: https://oapi.dingtalk.com/robot/send?access_token=dad50cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 secret: SEC4da8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe64ffbdbca044cfe1d678
 mention:
 mobiles: ['173xxxxxx56']
 message:
 text: |
 {{ template "email.to.message" . }} #这里选择模版名字
 @173xxxxxx56

3、Prometheus-webhook-dingtalk 模版配置:

[root@localhost webhook-dingtalk-2.0.0]# cat contrib/templates/alertmanager-dingtalk-message.tmpl
{{ define "linux.message" }}

{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}

== = **linux虚拟机告警** = ==

**告警程序:** Alertmanager
**告警类型:** {{ $alert.Labels.alertname }}
**故障主机:** {{ $alert.Labels.instance }}
**告警详情:** <font color=#ff0000> {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}</font>
**故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
**告警状态:** <font color=#ff0000> {{ .Status }}</font>

== = **end** = ==
{{- end }}
{{- end }}


{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}

==== = **linux虚拟机告警恢复** = ====
**告警程序:** Alertmanager
**告警类型:** {{ $alert.Labels.alertname }}
**故障主机:** {{ $alert.Labels.instance }}
**告警详情:** <font color=#00ff00>{{ $alert.Annotations.message }}{{ $alert.Annotations.description}} </font>
**故障时间:** {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
**恢复时间:** {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
**告警状态:** <font color=#00ff00> {{ .Status }} </font>

======= = **end** = =======
{{- end }}
{{- end }}
{{- end }}

4、Prometheus-webhook-dingtalk 重启脚本:

[root@localhost webhook-dingtalk-2.0.0]# cat restart.sh
#!/bin/bash
pidnum=`ps aux|grep prometheus-webhook-dingtalk |grep -v grep|awk -F ' ' '{print $2}'`
kill -9 ${pidnum}
nohup /opt/jiankong/webhook-dingtalk-2.0.0/prometheus-webhook-dingtalk --web.listen-address=:8060 --web.enable-ui --config.file=/opt/jiankong/webhook-dingtalk-2.0.0/config-message.yml &

----------------------------以下无正文-------------------------

如果大家有运维技术问题,可扫描下方二维码进QQ群,一起沟通交流,提升技术。

alertmanager+prometheus-webhook-dingtalk推送至钉钉群_prometheus

标签:node,alertmanager,dingtalk,labels,webhook,alert,prometheus
From: https://blog.51cto.com/u_15819125/11970421

相关文章

  • 13.6 编写go代码接收webhook的告警发送钉钉
    本节重点介绍:使用钉钉机器人发送到钉钉群通过alertmanagerwebhook发送我们自定义的go程序中解析alert对象并拼接钉钉信息发送需求分析使用钉钉机器人发送到钉钉群钉钉机器人发送群消息文档地址通过webhook发送我们自定义的go程序中然后解析发过来的alert,转换成钉钉的数据结构。......
  • Prometheus数据压缩和持久化实现原理
    Prometheus的数据压缩和持久化是其设计中的关键部分,确保在高效存储监控数据的同时,能够快速查询和访问这些数据。以下是Prometheus数据压缩和持久化的实现原理:1.数据存储结构Prometheus使用时间序列数据库(TSDB)来存储监控数据,其数据结构主要由以下几个部分组成:时间序列(Time......
  • Prometheus可以对接哪些exporter,请举几个列子,这些exporter的功能是什么?
    Prometheus可以对接多种类型的exporter,以便从不同的系统和应用程序中收集监控数据。以下是一些常见的Prometheusexporter及其功能:1.NodeExporter功能:用于收集主机(节点)的硬件和操作系统指标,如CPU使用率、内存使用、磁盘I/O、网络流量等。用途:监控服务器的整体性能,帮......
  • Prometheus operator怎么添加targets和告警规则
    使用PrometheusOperator来管理Prometheus实例、添加targets和告警规则是一个相对简单的过程。以下是如何通过PrometheusOperator添加targets和告警规则的详细步骤。1.安装PrometheusOperator如果尚未安装PrometheusOperator,可以通过Helm或Kubernetes清单文......
  • Prometheus的拉取模式与zabbix推送模式有何区别?各有什么优缺点?
    Prometheus的拉取模式与Zabbix的推送模式在监控数据收集和处理方式上存在显著区别。以下是它们的主要区别及各自的优缺点:1.数据收集模式Prometheus拉取模式:Prometheus定期从被监控的目标(如Exporter、应用程序等)主动拉取数据。每个目标都需要暴露一个HTTP接口,Prome......
  • k8s集群外exporter怎么使用Prometheus监控
    要在Kubernetes集群外部使用Exporter并通过Prometheus监控它,您可以按照以下步骤进行配置:1.部署Exporter首先,确保您已经在Kubernetes集群外部的主机上部署了Exporter(如NodeExporter、BlackboxExporter等)。以下是以NodeExporter为例的安装步骤:#下载并解压Nod......
  • Prometheus告警从触发到收到通知延迟在哪
    Prometheus的告警机制涉及多个步骤,从触发到收到通知的过程可能会遇到延迟。这些延迟主要来自以下几个方面:1.规则评估延迟评估周期:Prometheus会在配置的时间间隔内评估告警规则(通常是每1分钟)。如果在这个周期内没有检测到触发条件,告警将不会被触发。数据拉取延迟:Prometheu......
  • thanos rule组件和prometheus区别
    ThanosRuler和Prometheus在功能上有一些相似之处,但它们在设计目的、功能和使用场景上存在显著区别。以下是对这两个组件的详细比较:1.设计目的ThanosRuler:作为Thanos生态系统的一部分,ThanosRuler旨在提供高可用性和跨多个数据源的规则评估和告警功能。它可以与多......
  • 在大规模环境下,如何优化Prometheus性能
    在大规模环境下,优化Prometheus性能是确保监控系统高效、稳定运行的关键。以下是一些优化建议:1.数据采集优化1.1限制数据采集频率降低采集频率:对于不需要实时数据的服务,可以适当降低采集频率。例如,可以将某些指标的采集频率从15秒调整到30秒或更长。1.2使用metric_......
  • Prometheus的工作流程
    Prometheus是一个开源的监控和告警工具,广泛用于云原生应用程序的监控。其工作流程可以分为几个主要步骤:1.数据采集抓取(Scraping):Prometheus定期从被监控的目标(如应用程序、数据库、虚拟机等)抓取指标数据。每个目标在Prometheus的配置文件中定义,并指定其HTTP接口的地址......