Prometheus集成AlertManager实现告警

news/2024/5/19 1:58:12 标签: prometheus
Prometheus Server配置
  • 使用yml格式编写一个告警规则配置文件
groups:
- name: 账号中心
  rules:
  # 检测状态报警
  - alert: 账号中心指标状态告警
    expr: ssl_expire_days == 0
    for: 0s
    labels:
      severity: 1
    annotations:
      instance: "账号中心 实例 {{$labels.instance}} 指标告警"
      description: "账号中心 实例{{$labels.instance}} 域名证书剩余值为:{{$value}}"

通过yml文件配置prometheus触发的告警规则。

  • 修改prometheus.yml 配置文件,配置alertmanager告警地址以及告警规则文件
# my global config
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).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "accountcenter.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "nodeExporter"

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

    static_configs:
      - targets: ["192.168.240.130:9100"] #监控自己主机上的端口
  - job_name: "springboot"
    scrape_interval: 3s                                                # 多久采集一次数据
    scrape_timeout: 3s                                                 # 采集时的超时时间
    metrics_path: '/actuator/prometheus'                # 采集的路径
    static_configs:                                     # 采集服务的地址,设置成Springboot应用所在服务器的具体地址
      - targets: ["192.168.1.103:8188"]

curl -X POST http://127.0.0.1:9090/-/reload

SpringBoot - WebHook

编写一个SpringBoot的控制器,用于AlertManager告警时触发的回调

@RestController
@RequestMapping("/alertmanager")
public class AlertManagerWebHooks {

    @RequestMapping("/hook")
    public Object hook(@RequestBody String body){
        System.out.println("接受到告警信息:"+body);
        System.out.println("告警信息发送到数据库。。。");
        return "success";
    }

}
AlertManager配置
  • 修改alertmanager.yml配置文件,添加webhook配置
# 全局配置,全局配置,包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。
global:
  # 告警超时时间
  resolve_timeout: 5m
# 路由配置,设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配。
route:
  # 用于将传入警报分组在一起的标签。
  # 基于告警中包含的标签,如果满足group_by中定义标签名称,那么这些告警将会合并为一个通知发送给接收器。
  group_by: ['alertname']
  # 发送通知的初始等待时间
  group_wait: 1s
  # 在发送有关新警报的通知之前需要等待多长时间
  group_interval: 1s
  # 如果已发送通知,则在再次发送通知之前要等待多长时间,通常约3小时或更长时间
  repeat_interval: 5s
  # 接受者名称
  receiver: 'web.hook'
# 配置告警消息接受者信息,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
  # 接受者名称
  - name: 'web.hook'
    # webhook URL
    webhook_configs:
      - url: 'http://192.168.1.103:8188/alertmanager/hook'

在receivers配置项中配置告警接收者的配置信息,可以配置邮件、企业微信以及自定义的webhooks,webhooks就是一个Http接口,当alertManager触发告警时,会自动调用配置的接口。

  • 告警流程
  1. Prometheus 定期执行配置的告警规则,如果有满足条件的PromQL,则根据每个告警的 for 配置项进行等待,如果等待了 for 指定的评估时间以后依然满足告警条件,则触发告警,此时Prometheus会向AlertManager发送告警。
  2. AlertManager收到告警以后会对到达的告警进行分组、抑制以及去重等。
  3. 根据配置的receiver 调用相关的触发,例如WebHooks,企业微信,钉钉等。

http://www.niftyadmin.cn/n/5049534.html

相关文章

USB转2路RS422串口

基于USB转2路串口芯片CH342&#xff0c;可以为各类主机扩展出2个独立的串口。CH342芯片支持使用操作系统内置的CDC串口驱动&#xff0c;也支持使用厂商提供的VCP串口驱动程序&#xff0c;可支持Windows、Linux、Android、macOS等操作系统。因CDC类协议和类驱动的原因&#xff0…

【JVM】运行时数据区之 堆——自问自答

Q:堆和栈&#xff0c;在设计上有何用义&#xff1f; 此处我们不说数据结构的概念。 堆本身是一种存储结构&#xff0c;在代码的内存层面来看&#xff0c;无论是c 操作的原生内存&#xff0c;还是Java 背后的JVM&#xff0c;堆的作用都是进行持久存储的。 这个持久存储并不是…

Optuna学习博客

介绍 Optuna就是一个能够进行调整超参数的框架&#xff0c;它能够将自动调整超参数以及能够将超参数优化过程可视化&#xff0c;方便保存&#xff0c;分析。可拓展性较强&#xff0c;减枝的优点。 剪枝操作会根据当前中间结果判断是否还需要进行下去。 optuna的优化程序具体有…

2023 ICPC 网络赛 第二场 部分题解 (待完善)

D Project Manhattan 思路&#xff1a; 最终选中的下标,必然包含n个行或者n个列. 所以答案 n行的最小值之和或者n列的最小值之和 注意坑点&#xff1a; 当存在负数时&#xff0c;应该把负数全部选上,答案只会更优. 代码&#xff1a; #include <bits/stdc.h> typed…

用例图学习

用例图是什么 用例图&#xff08;Use Case Diagram&#xff09;是UML&#xff08;统一建模语言&#xff09;中的一种行为图&#xff0c;用于描述系统的功能和用户&#xff08;或其他外部实体&#xff09;与系统之间的交互。用例图是一种高级图&#xff0c;通常用于捕捉系统的需…

软件测试之接口测试

1、什么是接口测试 顾名思义&#xff0c;接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型&#xff0c;测试类型又主…

技战法-信息收集

搜索引擎语法 Google hacking&#xff1a; site: 限制搜索范围为某一网站&#xff0c;例如: site:baidu.com"admin”可以搜索baidu.com 网站上包含关键词“admin”的页面。 inurl: 限制关键字出现在网址的某个部分&#xff0c;例如: inurl:php?id 可以搜索网址中包含 ph…

数据库原理与分析实验三

目录 1、实验目的 2、实验预习与准备 3、实验内容及步骤 本博客为数据库课布置的实验二的作业。 1、实验目的 &#xff08;1&#xff09; 掌握Select子句的功能和检索数据的方法 &#xff08;2&#xff09; 掌握对查询结果排序的方法 2、实验预习与准备 &#xf…