Prometheus告警配置

新版可观测监控 Prometheus 版已整合至云监控,您可以直接在云监控中创建Prometheus告警规则,Prometheus告警规则产生的告警事件默认会集成到ARMS告警管理。本文介绍如何创建Prometheus告警规则,并通过ARMS告警管理将Promethues告警通知发送到钉钉、短信等渠道。

前提条件

创建告警规则

  1. 登录云监控控制台

  2. 在左侧导航栏,选择Prometheus监控 > 报警规则

  3. 告警规则页面选择目标地域,然后单击创建告警规则

  4. 创建告警规则面板设置以下告警参数。

    参数

    说明

    示例

    规则名称

    告警规则的名称。

    生产集群-容器CPU使用率告警

    数据源

    选择需要创建告警的Prometheus实例。

    生产集群

    检测条件定义方式

    基于预定义指标配置Prometheus为您提供了一系列系统预定义的告警指标。通过选择这些现有指标,您可以通过直观的方式迅速建立相应指标的告警规则。

    自定义PromQL:直接输入PromQL语句。

    基于预定义指标配置

    基于预定义指标配置-指标分组

    选择指标分组。

    Kubernetes负载

    基于预定义指标配置-指标

    选择想要配置告警的指标,每个指标分组对应不同的指标。

    容器CPU使用率

    基于预定义指标配置-筛选条件

    根据告警指标,设置当前配置的告警规则适用的范围,即所有符合筛选条件的资源满足此条告警规则时,均会产生告警事件。

    可选筛选条件包括:

    • 遍历:告警规则适用于当前Prometheus实例下的所有资源。筛选条件默认为遍历。

    • 等于:选择该条件后,需要继续输入具体资源名称。所创建的告警规则将仅适用于对应资源。不支持同时填写多个资源。

    • 不等于:选择该条件后,需要继续输入具体资源名称。所创建的告警规则将适用于除该资源之外的其他资源。不支持同时填写多个资源。

    • 正则匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将适用于符合该正则表达式的所有资源。

    • 正则不匹配:选择该条件后,按需输入正则表达式匹配相应的资源名称。所创建的告警规则将过滤符合该正则表达式的所有资源。

    遍历

    基于预定义指标配置-检测条件

    基于告警指标预置内容设置告警事件产生条件。

    当容器CPU使用率大于80%时,满足告警条件。

    基于预定义指标配置-PromQL 预览

    告警条件对应的PromQL语句。您可以使用PromQL语句直接通过自定义PromQL的方式创建告警,也可以通过该PromQL创建大盘。

    -

    自定义 PromQL-自定义 PromQL

    使用PromQL语句设置告警规则表达式。

    100 - avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100 > 80

    查询结果预览

    以时序曲线的形式展示当前告警规则配置的监控指标的值。

    严重等级

    默认严重等级为P4,严重程度从P4、P3、P2、P1逐级上升。

    P4

    持续时间

    当满足阈值的时间大于等于N分钟时,才产生告警事件。

    1

    告警检查周期

    指告警规则每隔N分钟进行一次检查,判断数据是否满足告警条件。

    1

    数据完成后再检测

    是否在确定当前周期内的所有监控数据都已成功收集并处理完毕之后,再基于这些完整的数据来判断是否触发告警条件。

    警报内容

    使用Go Template语法在告警内容中自定义告警参数变量。

    对于基于预定义指标配置方式,系统为不同指标预置了相应的模板。当预置模板不能满足需求时,您可以进行手动修改。

    例如:

    节点 {{ $labels.instance }} CPU使用率{{$labels.metrics_params_opt}} {{$labels.metrics_params_value}}%,当前CPU使用率 {{ printf "%.2f" $value }}%

    告警内容还可以添加自定义标签,例如:

    image.png

    • Go Template在渲染模板时,需要依据上下文中的数据来填充模板,其中,命名空间{{$labels.namespace}}、Pod {{$labels.pod_name}}是取自于PromQL查询出的结果:

      image.png

    • 增加自定义标签和注解,可以通过{{$labels.custom_label_key}}引入。

    命名空间:{{$labels.namespace}} / Pod: {{$labels.pod_name}} / 容器:{{$labels.container}} CPU使用率{{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, 当前值{{ printf "%.2f" $value }}%

    标签

    设置告警标签,设置的标签可用作通知策略匹配规则的选项。

    注释

    设置告警的注释。

    告警通知

    告警事件默认会发送到 ARMS 告警管理中,您可以前往 ARMS 告警管理平台配置通知策略发送告警通知。

  5. 设置完成后单击确定。在告警规则列表页面,您可以查看当前告警规则的状态。

配置告警通知

  1. 登录ARMS控制台,在左侧导航栏选择告警管理 > 通知策略

  2. 通知策略页面单击新建通知策略,然后在新建通知策略页面顶部设置通知策略名称。

  3. 匹配规则区域设置告警事件的匹配规则。

    1. 选择数据来源为ARMS-Prometheus监控

      image

    2. 设置匹配规则表达式,您可以自定义标签或选择已有的标签,并选择对应的匹配值。如果下拉选择项中如果没有对应值,可以直接输入期望设置的值。

      已有的标签包括系统自带标签和告警规则指标中携带的标签。

      展开查看配置示例

      指定 Prometheus 实例

      指定具体某个Prometheus 的实例,可以设置集群名称(clustername)”等于具体的 Promethues 实例名称。

      image

      基于指标标签配置

      ARMS 中的通知规则可以基于告警事件的标签进行路由通知,而 Prometheus 告警规则的 PromQL 表达式分组的 label 默认会作为告警事件的标签。

      • 例如,如果告警表达式如下:

        AliyunEcs_CPUUtilization{}>90

        AliyunEcs_CPUUtilization 这个指标的所有label 都会作为告警事件的标签。

      • 如果告警表达式如下:

        avg(AliyunEcs_CPUUtilization) by (instanceId,instanceName) > 90

        则只有 instanceIdinstanceName 2个 label 为作为告警事件的标签。

      基于告警事件的标签,可以配置不同的通知策略,如期望将instanceIdabcdexxxxxx的告警事件通知到具体的某个钉钉组,可以配置:instanceId等于abcdexxxxxx

      image

    3. 单击下一步

  4. 事件分组区域,设置告警事件是否需要分组,然后单击下一步

    • 不需要分组:所有告警事件会以一条告警信息发送给处理人。

    • 设置分组字段:字段内容相同的告警事件会汇总到同一告警发送通知。

  5. 通知对象区域,设置以下参数。

    1. 单击+添加通知对象选择通知对象。

      通知对象类型:通知策略-当告警生成时

      • 联系人:选择具体联系人后还需选择使用电话、短信或邮件的通知方式。

      • 联系人组:选择具体联系人组后还需选择使用电话、短信或邮件的通知方式。

      • 排班:选择具体排班后还需选择使用电话、短信或邮件的通知方式。

      • 钉钉/飞书/企微:通过钉钉、飞书或企业微信发送告警通知。

      • 通用Webhook:通过Webhook发送告警通知。

    2. 选择告警恢复后是否发送恢复通知。

      发送恢复通知:当告警下面全部事件都恢复时,告警状态是否自动恢复为已解决。当告警恢复时,系统将会发送通知给告警处理人。

    3. 设置通知模板,更多信息,请参见配置通知模板和Webhook模板

    4. 设置通知时段,告警会在设置的通知时段内发送告警通知。

    5. 可选:选择告警需要推送到的工单系统。集成工单系统的操作,请参见集成

    6. 单击下一步

  6. 重复/升级/恢复策略区域设置告警是否需要重复通知或使用升级策略,然后单击下一步

    • 告警是否需要重复通知:如果需要重复通知,设置重复频率。当告警未恢复时,告警会以设置的重复频率循环发送告警信息直至告警恢复。

    • 告警是否配置升级策略:

      不需要升级策略,告警未恢复状态下只发送一次。

      选择升级策略后,告警未恢复状态下,告警通知将会根据升级策略发送通知给其他通知对象。

    • 告警是否开启手动恢复:开启手动恢复后,当告警事件在告警集成中设置的自动恢复时间内都没有再触发,告警不会自动恢复,必须人工干预调整状态。

  7. 行动集成区域可以设置告警触发或恢复后自动执行的行动。更多信息,请参见通过ARMS行动集成执行告警预案

  8. 设置完成后,单击保存