prometheus+alertmanager 企业微信告警

news2025/8/7 2:55:35

一、应用安装启动

1、软件准备

alertmanager-0.24.0.linux-amd64.tar.gz
blackbox_exporter-0.22.0.linux-amd64.tar.gz
node_exporter-1.4.0.linux-amd64.tar.gz
prometheus-2.40.0-rc.0.linux-amd64.tar.gz

2、配置文件 

 cat /data/prometheus/prometheus.yml #根据自己情况更改

global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - 这里填写alertmanagers的ip:9093
          # - alertmanager:9093

rule_files:
   - "rules/*.rules" #这里定义rule文件
  # - "second_rules.yml"

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: '定义一个名称'
    metrics_path: /probe
    params:
      module: [blackbox_exporter里面的module名称]
    static_configs:
      - targets:
        - http://api的ip/api
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 这里填写blackbox_exporter的ip:9115

   - job_name: 'node'
     static_configs:
       - targets: ['localhost:9100']

 cat /data/prometheus/rules/node.rules #这是一个node 的rules配置,可以直接使用,无需更改

groups:
    - name: 主机状态-监控告警
      rules:
      - alert: 主机状态
        expr: up == 0
        for: 1m
        labels:
          status: 非常严重
          severity: warning
        annotations:
          #summary: "服务器宕机"
          description: "服务器延时超过5分钟"
      
      - alert: CPU使用情况
        expr: 100-(avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)* 100) > 80
        for: 1m
        labels:
          status: 一般告警
          severity: warning
        annotations:
          #summary: "CPU使用率过高!"
          description: "CPU使用大于80%(目前使用:{{$value}}%)"
  
      - alert: 内存使用
        expr: round(100- node_memory_MemAvailable_bytes{instance!="10.152.120.25:9100"}/node_memory_MemTotal_bytes{instance!="10.152.120.25:9100"}*100) > 80
        for: 1m
        labels:
          status: 一般告警
          severity: warning
        annotations:
         # summary: "内存使用率过高"
          description: "内存使用率{{ $value }}%"
 
      - alert: 25-内存使用
        expr: round(100- node_memory_MemAvailable_bytes{instance=~"10.152.120.25:9100"}/node_memory_MemTotal_bytes{instance=~"10.152.120.25:9100"}*100) > 95
        for: 1m
        labels:
          status: 一般告警
          severity: warning
        annotations:
          #summary: "内存使用率过高"
          description: "内存使用率{{ $value }}%"
 
      - alert: IO性能
        expr: 100-(avg(irate(node_disk_io_time_seconds_total[1m])) by(instance)* 100) < 60
        for: 1m
        labels:
          status: 严重告警
          severity: warning
        annotations:
         # summary: "{{$labels.mountpoint}} 流入磁盘IO使用率过高!"
          description: "{{$labels.mountpoint }} 流入磁盘IO大于60%(目前使用:{{$value}})"
 
      - alert: 网络
        expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400
        for: 1m
        labels:
          status: 严重告警
          severity: warning
        annotations:
        #  summary: "{{$labels.mountpoint}} 流入网络带宽过高!"
          description: "{{$labels.mountpoint }}流入网络带宽持续2分钟高于100M. RX带宽使用率{{$value}}"
      
      - alert: TCP会话
        expr: node_netstat_Tcp_CurrEstab > 1000
        for: 1m
        labels:
          severity: warning
          status: 严重告警
        annotations:
         # summary: "{{$labels.mountpoint}} TCP_ESTABLISHED过高!"
          description: "{{$labels.mountpoint }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"
 
      - alert: 磁盘容量
        expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 90
        for: 1m
        labels:
          status: 严重告警
          severity: warning
        annotations:
         # summary: "{{$labels.mountpoint}} 磁盘分区使用率过高!"
          description: "{{$labels.mountpoint }} 磁盘分区使用大于90%(目前使用:{{$value}}%)" 

 cat /data/prometheus/rules/blackbox_http.rules  #这是自定义的api监控rules,需要根据自己情况更改

groups:
    - name: 接口状态   #组的名字,在这个文件中必须要唯一
      rules:
      - alert: http-api       #告警的名字,在组中需要唯一
        expr: probe_success{job="这里要对应job里面的名称"} == 0  #表达式, 执行结果为true: 表示需要告警
        for: 1s           #超过多少时间才认为需要告警(即up==0需要持续的时间)
        labels:
          status: 非常严重   
          severity: warning  #定义标签
        annotations:
          description: "Job {{ $labels.job }} 中的接口 {{ $labels.instance }} 已经down掉."
          summary: '接口 {{ $labels.instance }} down ! ! !'

 cat /data/alertmanager/alertmanager.yml   #定义告警配置

global:
  resolve_timeout: 5m  #每5分钟检测一次是否恢复
templates:
  - '/data/alertmanager/wechat.tmpl' # Alertmanager微信告警模板

route:
  group_by: ['alertname']
  group_wait: 5s         # 初次发送告警延时
  group_interval: 1m     # 距离第一次发送告警,等待多久再次发送告警
  repeat_interval: 5m    # 告警重发时间
  receiver: 'wechat'

receivers:
- name: 'wechat'
  wechat_configs:
    - corp_id: 'ww8f28'      # 企业微信中企业ID
      to_party: '42'         # 企业微信中创建的接收告警的告警部门ID
#     to_user: 'zhai'        # 企业微信中创建的接收告警的单个人唯一ID
      agent_id: '100'        # 企业微信中创建应用的AgentId
      api_secret: 'wiZIFkuo' # 企业微信中,Prometheus应用的Secret
      send_resolved: true

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

cat /data/blackbox_exporter/blackbox.yml  

 

modules:
  http_2xx:
    prober: http
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  grpc:
    prober: grpc
    grpc:
      tls: true
      preferred_ip_protocol: "ip4"
  grpc_plain:
    prober: grpc
    grpc:
      tls: false
      service: "service1"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
      - send: "SSH-2.0-blackbox-ssh-check"
  irc_banner:
    prober: tcp
    tcp:
      query_response:
      - send: "NICK prober"
      - send: "USER prober prober prober :prober"
      - expect: "PING :([^ ]+)"
        send: "PONG ${1}"
      - expect: "^:[^ ]+ 001"
  icmp:
    prober: icmp
  icmp_ttl5:
    prober: icmp
    timeout: 5s
    icmp:
      ttl: 5

 ##################以上都是默认配置无需更改##############
  http_api:            #定义模块名称,和prometheus的module一样
    prober: http       
    timeout: 18s
    http:
      method: GET
      headers:
        token: 3579333KX4abK04i5
        Content-Type: application/json

3、服务启动 

#prometheus
/data/prometheus/prometheus --config.file=prometheus.yml --log.level=debug &
#备注 开启debug日志,方便差错

#alertmanager
/data/alertmanager/alertmanager --config.file=alertmanager.yml --log.level=debug &

#blackbox_exporter
/data/blackbox_exporter/blackbox_exporter --config.file=blackbox.yml &

#node_exporter
/data/node_exporter/node_exporter &

二、企业微信配置

企业ID

 部门ID

 告警AgentId和Secret

 

 配置可信ip(最新的必须加,否则连接失败)

 三、效果图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

liunx集成jmeter进行压测实践

首先liunx环境需要部署jdk 1,获取jmeter免安装包&#xff1a;点击我获取免安装包 2,获取jmeter-manger工具&#xff0c;用于生成报告&#xff0c;日志等 点击我获取工具 3,在服务器上新建一个文件夹存放jmeter&#xff0c;推荐在/usr/local/下面&#xff0c;我这里由于权限问…

微服务真的过时了吗?Twitter员工因为微服务被马斯克解雇了

马斯克吐槽微服务 最近Twitter因为马斯克收购而大幅裁员的消息闹得可谓是沸沸扬扬&#xff0c;但是最近马斯克吐槽Twitter内部服务200个RPC的新闻更是闹得不可开交&#xff0c;并且和员工在twitter上的争论更是因为了程序猿界的广泛转发和评论 微服务真的是一个糟糕的设计吗&a…

如何处理海量数据文件以及大文件数据查找

目录 一.处理海量整数文件 ①问&#xff1a;假定有40亿个无符号整数&#xff0c;判断某数据是否在其中&#xff1f; ②问&#xff1a;假定有40亿个无符号整数&#xff0c;找到只出现一次的数据&#xff0c;两次&#xff0c;三次...&#xff1f; ③问&#xff1a;两个文件各…

[ Linux ] 动静态库 手把手教你写一个自己的库

目录 静态库与动态库 生成 发布动静态库 形成发布静态库 形成发布动态库 一个makefile同时生成动静态库 如何使用动静态库 使用静态库 正确做法&#xff1a; 使用动态库 运行动态库 为什么动态库运行时有找库的步骤 静态库与动态库 静态库&#xff08;.a&#xff0…

聊一聊作为高并发系统基石之一的缓存,会用很简单,用好才是技术活

大家好&#xff0c;又见面了。 在服务端开发中&#xff0c;缓存常常被当做系统性能扛压的不二之选。在实施方案上&#xff0c;缓存使用策略虽有一定普适性&#xff0c;却也并非完全绝对&#xff0c;需要结合实际的项目诉求与场景进行综合权衡与考量&#xff0c;进而得出符合自…

Spring Security认证之用户定义

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 在前面的案例中&#xff0c;我们登陆的用户信息是基于配置文件来配置的&#xff0c;其本质上是基于内存来实现的。但是在实际…

(5)多机器人集群编队策略

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多机器人集群编队策略1、多机器人协同作业冲突问题&#xff08;1&#xff09;介绍&#xff08;2&#xff09;多机器人系统…

学会Spring Cloud微服务架构绝活,渣本也能进大厂

微服务架构是互联网很热门的话题&#xff0c;是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务&#xff0c;服务之间互相协调、互相配合&#xff0c;为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案&#xff0c;但业界已经有一些很有…

C++程序设计--第三章内容

提前声明&#xff1a; 本文内容为华北水利水电大学研究生C课程&#xff0c;如有 侵权请告知&#xff0c;作者会予以删除 1.函数 函数作用 —— 任务划分&#xff1b;代码重用定义形式 类型 函数名 &#xff08; 形式参数表&#xff09;{语句序列}调用形式 函数名&#x…

数据结构:树

文章目录一.树的概念二.树的相关概念三.树的表示一.树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下…

『Java』数组中值得说的那些事

文章目录前言一、数组的创建及初始化&#x1f333;1、数组的创建&#x1f333;2、数组的初始化&#x1f351;&#xff08;1&#xff09;动态初始化&#x1f351;&#xff08;2&#xff09;静态初始化二、数组的使用&#x1f333;1、数组中元素访问&#x1f333;2、遍历数组&…

python3 爬虫(初试牛刀)

此文章仅供学习交流使用 在学习爬虫之前&#xff0c;把最近对于 VMware 的网络学习做个总结 接下来&#xff0c;步入正题&#xff01; 分析 Robots 协议 禁止所有爬虫访问任何目录的代码&#xff1a; User-agent: * Disallow:/允许所有爬虫访问任何目录的代码&#xff1a; …

2022年新版Pycharm通过project interpreter国内镜像源设置

2022年新版Pycharm通过project interpreter国内镜像源设置解决方案速览一、国内镜像源列表二、pycharm访问project interpreter解决方案速览 File->Settings->project interpreter-> -> Available Packages将options打勾&#xff0c;并输入-i https://pypi.tuna.…

Gvim显示行号、最大化、字号、主题等常用配置修改

Gvim的设置分两种&#xff1a;1. 临时设置&#xff0c;2. 永久设置&#xff0c;本文只关注永久设置的情况。 配置Gvim只需修改Gvim配置文件即可&#xff0c;Linux中&#xff0c;配置文件的地址是~/.vimrc&#xff0c;若没有该文件则创建即可&#xff0c;我们可以直接输入gvim …

平面设计师怎么找素材?

平面设计素材网站&#xff0c;免费下载&#xff0c;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx菜鸟图库是一个素材量非常丰富的网站&#xff0c;网站聚合了平面、UI、淘宝电商、高清背景图、图片、插画等高质量素材&#xff0c;平面模板非常多&am…

数据结构绪论、顺序表课后练习题

文章目录第1章 绪论一 填空题二 选择题三 判断题✅❎第2章 线性表一 判断正误二 单项选择题三 简答题第1章 绪论 一 填空题 数据结构被形式地定义为&#xff08;D, R&#xff09;&#xff0c;其中D是数据元素的有限集合&#xff0c;R是D上的关系有限集合。数据结构按逻辑结构…

idea如何排查jar冲突

工具系列文章目录 idea如何排查jar冲突提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结前言 当遇到jar包冲突的时候常常会出现…

自动驾驶入门:控制

目录 概念 控制流程 PID控制 PID 的优劣势 LQR 线性二次调节器 模型控制预测 总结 概念 控制是驱使车辆前行的策略。对于汽车而言&#xff0c;最基本的控制输入为转向、加速和制动。通常&#xff0c;控制器使用一系列路径点来接收轨迹。 控制器的任务是使用控制输入让…

Flask微服务注册到Nacos

目录一、前言二、手写实现Flask注册到Nacos1. 服务注册2. 心跳检测三、使用nacos-sdk-python完成注册四、SpringBoot远程调用1. 添加 Python 端业务逻辑2. SpringBoot 的远程调用五、SpringGateway网关转发一、前言 最近有一个使用 SpringCloud 的微服务项目&#xff0c;需要使…

[附源码]java毕业设计面向服装集群企业的个性化定制服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…