IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> AlertManager 何时报警 -> 正文阅读

[系统运维]AlertManager 何时报警

何时报警


在 Prometheus 与 Alertmanager 中有很多地方都涉及到报警时机的配置,那么我的报警规则具体会在什么时候报警呢?

首先在 Prometheus 的全局配置中有一个?evaluation_interval?属性,该属性表示的是间隔多长时间对报警规则进行评估,比如我们这里配置的 30s,那么每 30s 会去验证下我们的报警规则是否达到了阈值。

    global:
      scrape_interval: 15s
      scrape_timeout: 10s
      evaluation_interval: 1m

此时我们的报警状态处于?inactive如果评估后达到了阈值,则会变成?pending?状态,这个时候报警还没有发送给 Alertmanager,什么时候触发需要依赖报警规则中的?for?属性配置了,比如我们配置成 1m,那么也就是在后续 1 分钟内的评估如果都达到了阈值,那么就会变成?pending?状态,并将报警发送给 Alertmanager,后续的操作就是 Alertmanager 来处理了。

所以有的场景下我们的监控图表上面已经有部分指标达到了告警的阈值了,但是并不一定会触发告警规则,比如我们上面的规则中,设置的是 1 分钟的 Pending Duration,对于下图这种情况就不会触发告警,因为持续时间太短,没有达到一分钟:

报警具体什么时候发送就要看我们的报警路由规则如何配置的了,核心是下面几个属性:

group_by: [instance] # 报警分组
group_wait: 30s # 在组内等待所配置的时间,如果同组内,30秒内出现相同报警,在一个组内出现。
group_interval: 5m # 每个分组中最多每5分钟发送一条警报
repeat_interval: 1h # 发送报警间隔,如果指定时间内没有修复,则重新发送报警。

Alertmanager 会将收到的报警规则按照?group_by?进行分组。当一个报警触发之后,如果之前没有分组,那么就会创建一个分组,当创建完之后会等待?group_wait?这么长的时间才会发送,这里不会马上发送就是需要积攒一定数量的报警,防止报警数量过多,形成报警风暴。

当一个报警触发之后,如果这个报警属于某个 group,但是这个 group 因为距离第一个 alert 已经足够?group_wait?时间了,发送过一次了,那么就会等待?group_interval?时间之后再次发送新的报警 group 了。

所以,如果报警已经从 Prometheus 送到 Alertmanager 了,那么最多可能等待?max(group_wait,group_interval)的时间。

假如一个相同的警报一直 FIRING,Alertmanager 并不会一直发送警报,而会等待一段时间,这个等待时间就是?repeat_interval,显然,不同类型警报的发送频率也是不一样的。

比如现在我们添加两条如下所示的报警规则:

groups:
  - name: test-node-mem
    rules: # 具体的报警规则
      - alert: NodeMemoryUsage # 报警规则的名称
        expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 > 30
        for: 1m
        labels:
          team: node
        annotations:
          summary: "{{$labels.instance}}: High Memory usage detected"
          description: "{{$labels.instance}}: Memory usage is above 30% (current value is: {{ $value }})"
  - name: test-node-cpu
    rules:
      - alert: NodeCpuUsage
        expr: ((1 - sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance) ) * 100) > 5
        for: 2m
        labels:
          team: node
        annotations:
          summary: "{{$labels.instance}}: High CPU usage detected"
          description: "{{$labels.instance}}: CPU usage is above 5% (current value is: {{ $value }})"

并在 Alertmanager 中配置路由的时候设置根据?instance?进行分组:

routes:
  - receiver: email
    group_wait: 10s
    group_by: ["instance"]
    match:
      team: node

同一个分组的报警会发送一条,如果组内有新的报警信息出现,则会等待?group_interval?时间再次发送,如果没有新的变化,并且报警信息还是 FIRING 状态,则需要等待?repeat_interval?时间后再次发送。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:31:28  更:2022-04-29 12:31:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:29:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码