首页 > 其他分享 >Prometheus+Alertmanager + Webhook-dingtalk

Prometheus+Alertmanager + Webhook-dingtalk

时间:2023-11-24 17:00:11浏览次数:33  
标签:Alertmanager dingtalk webhook labels Webhook instance Prometheus alertmanager 告警

一、下载alertmanager和webhook-dingtalk

www.github.com      搜索alertmanager    webhook-dingtalk

1、解压、安装webhook-dingtalk

tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/webhook-dingtalk
cp /usr/local/webhook-dingtalk/config.example.yml/usr/local/webhook-dingtalk/config.yml

2、创建开机启动并启动服务

vim /usr/lib/systemd/system/webhook.service
[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/webhook-dingtalk/config.yml
User=root

[Install]
WantedBy=multi-user.target



systemctl enable webhook.service --now

3、解压、安装alertmanager

tar zxf alertmanager-0.25.0-rc.2.linux-amd64.tar.gz 
mv alertmanager-0.25.0-rc.2.linux-amd64 /usr/local/prometheus/alertmanager

4、创建开机启动并启动服务

vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/alertmanager/alertmanager --cluster.advertise-address=0.0.0.0:9093 --config.file=/usr/local/alertmanager/alertmanager.yml
User=root

[Install]
WantedBy=multi-user.target



systemctl enable alertmanager.service --now

5、验证alertmanager和webhook-dingtalk监听端口

ss -ant|egrep  "9093|8060"

 

 二、配置、测试

1、 Webhook-dingtalk配置相对比较简单,只改以下三处即可

 2、添加钉钉报警模板

vim /usr/local/prometheus/webhook-dingtalk/template.tmpl

{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
 
 
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
 
**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }}
 
**告警级别**: {{ .Labels.severity }} 
 
**告警主机**: {{ .Labels.instance }} 
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}

**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }} 
 
**告警级别**: {{ .Labels.severity }}
 
**告警主机**: {{ .Labels.instance }}
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
 
**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
 
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
 
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====侦测到{{ .Alerts.Firing | len  }}个故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
 
{{ if gt (len .Alerts.Resolved) 0 }}
**====恢复{{ .Alerts.Resolved | len  }}个故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
 
 
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

3、重启webhook

systemctl restart webhook.service

4、Alertmanager配置钉钉告警

vim /usr/local/alertmanager/alertmanager.yml

route:
  group_by: ['dingding']
  group_wait: 30s
  group_interval: 1h
  repeat_interval: 1h
  receiver: 'dingding.webhook1'
  routes:
  - receiver: 'dingding.webhook1'
    match_re:
      alertname: ".*"
receivers:
  - name: 'dingding.webhook1'
    webhook_configs:
    - url: 'http://IP:8060/dingtalk/webhook1/send'
      send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

主要修改的地方

 重启alertmanager

systemctl restart alertmanager.service

5、Prometheus集成Alertmanager及告警规则配置

vim /usr/local/prometheus/prometheus.yml

global:
  scrape_interval: 15s 
  evaluation_interval: 15s 

alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - IP:9093

rule_files:
   - "/usr/local/prometheus/rule/node_exporter.yml"

scrape_configs:
  - job_name: "VMware"
    static_configs:
      - targets: ["IP:59100"]

重点修改地方

 6、添加node_exporter告警规则

mkdir /usr/local/prometheus/prometheus/rule
vim /usr/local/prometheus/prometheus/rule/node_exporter.yml

groups:
- name: 服务器资源监控
  rules:
  - alert: 内存使用率过高
    expr: 100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 80
    for: 3m 
    labels:
      severity: 严重告警
    annotations:
      summary: "{{ $labels.instance }} 内存使用率过高, 请尽快处理!"
      description: "{{ $labels.instance }}内存使用率超过80%,当前使用率{{ $value }}%."
          
  - alert: 服务器宕机
    expr: up == 0
    for: 1s
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 服务器宕机, 请尽快处理!"
      description: "{{$labels.instance}} 服务器延时超过3分钟,当前状态{{ $value }}. "
 
  - alert: CPU高负荷
    expr: 100 - (avg by (instance,job)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} CPU使用率过高,请尽快处理!"
      description: "{{$labels.instance}} CPU使用大于90%,当前使用率{{ $value }}%. "
      
  - alert: 磁盘IO性能
    expr: avg(irate(node_disk_io_time_seconds_total[1m])) by(instance,job)* 100 > 90
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流入磁盘IO使用率过高,请尽快处理!"
      description: "{{$labels.instance}} 流入磁盘IO大于90%,当前使用率{{ $value }}%."
 
 
  - alert: 网络流入
    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 102400
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流入网络带宽过高,请尽快处理!"
      description: "{{$labels.instance}} 流入网络带宽持续5分钟高于100M. RX带宽使用量{{$value}}."
 
  - alert: 网络流出
    expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 102400
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流出网络带宽过高,请尽快处理!"
      description: "{{$labels.instance}} 流出网络带宽持续5分钟高于100M. RX带宽使用量{$value}}."
  
  - alert: TCP连接数
    expr: node_netstat_Tcp_CurrEstab > 10000
    for: 2m
    labels:
      severity: 严重告警
    annotations:
      summary: " TCP_ESTABLISHED过高!"
      description: "{{$labels.instance}} TCP_ESTABLISHED大于100%,当前使用率{{ $value }}%."
 
  - alert: 磁盘容量
    expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 90
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.mountpoint}} 磁盘分区使用率过高,请尽快处理!"
      description: "{{$labels.instance}} 磁盘分区使用大于90%,当前使用率{{ $value }}%."

重启prometheus

systemctl restart prometheus.service

 

标签:Alertmanager,dingtalk,webhook,labels,Webhook,instance,Prometheus,alertmanager,告警
From: https://www.cnblogs.com/hm1825/p/17854166.html

相关文章

  • 安装部署 Prometheus+Grafana 监控系统
    1、基础环境准备两台或更多的主机2、关闭selinuxvi/etc/selinux/config,修改SELINUX的值为disabled3、关闭防火墙systemctldisablefirewalldsystemctlstopfirewalld4、prometheus官网下载https://prometheus.io/download/5、grafana官网下载https://grafana.com/gra......
  • centos 7.9安装Prometheus
    一、Prometheus功能Prometheus在系统监控和警报方面非常强大,它适用于多种应用场景。以下是一些常见的Prometheus应用场景,以及具体的例子:性能监控:Prometheus可以用来监控服务器和应用程序的性能。比如,它可以收集和显示CPU使用率、内存使用、磁盘IO、网络流量等指标。......
  • Windows平台的prometheus和Grafana的学习与使用
    Windows平台的prometheus和Grafana的学习与使用背景最近没有了linux机器突然想捯饬一下Windows平台的监控与使用所以总结一一下.第一步下载https://prometheus.io/download/https://grafana.com/grafana/download注意需要下载windows平台的安装介质建议是选择zip......
  • Prometheus监控服务器状态及预警
    1.背景项目上线后,需要对服务器及进程进行持续监控及预警。2.方案使用Prometheus收集监控指标,使用Node_exporter收集服务器状态,使用Grafana进行可视化展示及发送预警。2.1Node_exporter安装及使用nohup./node_exporter--web.listen-address0.0.0.0:8071&2.2Prometheu......
  • prometheus + node-exporter + Grafana 监控Linux资源情况
    背景1.Oracle集群需要监控2.下载2.1node_exporter-1.6.1.linux-amd64.tar.gz2.2 prometheus-2.46.0.linux-amd64.tar.gz 3.采集数据下载监控Linux的exporter(注意选择自己的操作系统,我的操作系统是Linuxcentos7.9),下载链接:https://github.com/prometheus/node_exporte......
  • prometheus Redis监控方法之二
    背景前期整理过使用exporter+prometheus方式进行Redis监控的搭建过程最近给同事研究clickhouse时发现clickhouse有对应的plugin可以直接拉取CK的信息当时就想其他的中间件肯定有类似的方法进行处理.当时第一反应是想学习使用Oracle,SQLSERVER的pluggin进行监控但是发......
  • Prometheus 黑盒 blackbox的简单-监控web服务是否正常以及证书过期时间
    下载blackboxhttps://github.com/prometheus/blackbox_exporter可以在release里面下载amd64和arm64的东西解压缩之后将二进制和.yml文件都放到/usr/bin目录下面,然后开启nohupblackbox_exporter--config.file="/usr/bin/blackbox.yml"--web.listen-address=:9115&配置......
  • 从零开始构建报警中心:part04 钉钉消息-webhook
    现在工作上比较常用的IM一般式钉钉企微飞书,其实使用起来都是大同小异的。这里就用钉钉来实现。使用钉钉发送信息,一般有三种形式群webhook工作通知智能机器人智能机器人方式,能实现一定的交互功能,但逻辑相对复杂,这里只是需要一个实时的钉钉消息,所以不进行讨论。添加群webhook这是一......
  • 基于k8s安装kubesphere:镜像prometheus-k8s-0一直处于Init
    系统Centos7k8s版本v.1.28.0(自签证书)kubesphere版本v3.4.0问题:Output:mount.nfs:mounting192.168.2.21:/data/kubesphere-monitoring-system-prometheus-k8s-db-prometheus-k8s-0-pvc-c69f1491-3980-4cdf-abcb-6e05843f0b9bfailed,reasongivenbyser......
  • '/webhook'​​​是你的服务器上的一个路径,当有人发送POST请求到这个路径时,​​webhoo
    在这段代码中,'/webhook'是你的服务器上的一个路径,当有人发送POST请求到这个路径时,webhook()函数就会被调用。你可以根据你的需求来选择这个路径,只要它在你的服务器上是唯一的。例如,如果你的服务器的URL是http://myserver.com,那么当飞书机器人发送POST请求到http://myserver.com/web......