10.8. 配置 Alertmanager 以发送通知


您可以通过编辑 alertmanager-main secret 为默认平台警报或 alertmanager-user-workload secret 用于用户定义的警报,将 Alertmanager 配置为发送通知。

注意

一个支持的上游版本中的所有功能也在OpenShift Alertmanager 配置中支持。要检查受支持的上游 Alertmanager 版本的所有配置选项,请参阅 Alertmanager 配置

10.8.1. 为默认平台警报配置通知

您可以将 Alertmanager 配置为发送通知,以接收来自集群的重要警报。通过编辑 openshift-monitoring 命名空间中的 alertmanager-main secret 中的默认配置来自定义 Alertmanager 如何发送通知有关默认平台警报的通知。

重要

Alertmanager 默认不会发送通知。建议您通过在 alertmanager-main secret 配置文件中设置通知详情,将 Alertmanager 配置为接收通知。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. alertmanager-main secret 中提取当前活跃的 Alertmanager 配置,并将其保存为本地 alertmanager.yaml 文件:

    $ oc -n openshift-monitoring get secret alertmanager-main --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
    Copy to Clipboard Toggle word wrap
  2. 打开 alertmanager.yaml 文件。
  3. 编辑 Alertmanager 配置:

    1. 可选:更改默认的 Alertmanager 配置:

      默认 Alertmanager secret YAML 示例

      global:
        resolve_timeout: 5m
      route:
        group_wait: 30s 
      1
      
        group_interval: 5m 
      2
      
        repeat_interval: 12h 
      3
      
        receiver: default
        routes:
        - matchers:
          - "alertname=Watchdog"
          repeat_interval: 2m
          receiver: watchdog
      receivers:
      - name: default
      - name: watchdog
      Copy to Clipboard Toggle word wrap

      1
      指定在为一组警报收集初始警报时 Alertmanager 在发送通知时等待的时间。
      2
      指定 Alertmanager 向已发送初始通知的一组警报发送有关新警报的通知前必须经过的时间。
      3
      指定在通知重复前必须经过的最短时间。如果您希望通知在每个组间隔重复,请将 repeat_interval 值设置为小于 group_interval 的值。重复的通知仍然可以延迟,例如当某些 Alertmanager pod 重启或重新调度时。
    2. 添加警报接收器配置:

      # ...
      receivers:
      - name: default
      - name: watchdog
      - name: <receiver> 
      1
      
        <receiver_configuration> 
      2
      
      # ...
      Copy to Clipboard Toggle word wrap
      1
      接收器的名称。
      2
      接收器配置。支持的接收器有 PagerDuty、Webhook、电子邮件、Slack 和 Microsoft 团队。

      将 PagerDuty 配置为警报接收器示例

      # ...
      receivers:
      - name: default
      - name: watchdog
      - name: team-frontend-page
        pagerduty_configs:
        - routing_key: xxxxxxxxxx 
      1
      
      # ...
      Copy to Clipboard Toggle word wrap

      1
      定义 PagerDuty 集成密钥。

      将电子邮件配置为警报接收器的示例

      # ...
      receivers:
      - name: default
      - name: watchdog
      - name: team-frontend-page
        email_configs:
          - to: myemail@example.com 
      1
      
            from: alertmanager@example.com 
      2
      
            smarthost: 'smtp.example.com:587' 
      3
      
            auth_username: alertmanager@example.com  
      4
      
            auth_password: password
            hello: alertmanager 
      5
      
      # ...
      Copy to Clipboard Toggle word wrap

      1
      指定要发送通知的电子邮件地址。
      2
      指定要发送通知的电子邮件地址。
      3
      指定用于发送电子邮件的 SMTP 服务器地址,包括端口号。
      4
      指定 Alertmanager 用于连接到 SMTP 服务器的身份验证凭据。这个示例使用用户名和密码。
      5
      指定要识别到 SMTP 服务器的主机名。如果没有包含此参数,则主机名默认为 localhost
      重要

      Alertmanager 需要外部 SMTP 服务器来发送电子邮件警报。要配置电子邮件警报接收器,请确保您具有外部 SMTP 服务器所需的连接详情。

    3. 添加路由配置:

      # ...
      route:
        group_wait: 30s
        group_interval: 5m
        repeat_interval: 12h
        receiver: default
        routes:
        - matchers:
          - "alertname=Watchdog"
          repeat_interval: 2m
          receiver: watchdog
        - matchers: 
      1
      
          - "<your_matching_rules>" 
      2
      
          receiver: <receiver> 
      3
      
      # ...
      Copy to Clipboard Toggle word wrap
      1
      使用 matchers 键名称指定警报要与节点匹配的匹配规则。如果您定义了禁止规则,请为目标匹配器使用 target_matchers 键名称,对于源匹配者使用 source_matchers 键名称。
      2
      指定与警报匹配的标签。
      3
      指定要用于警报的接收器名称。
      警告

      不要使用 match,match_re,target_match,target_match_re,source_match, 和 source_match_re 键名称,它们已弃用,并计划在以后的发行版本中删除。

      警报路由示例

      # ...
      route:
        group_wait: 30s
        group_interval: 5m
        repeat_interval: 12h
        receiver: default
        routes:
        - matchers:
          - "alertname=Watchdog"
          repeat_interval: 2m
          receiver: watchdog
        - matchers: 
      1
      
          - "service=example-app"
          routes: 
      2
      
          - matchers:
            - "severity=critical"
            receiver: team-frontend-page
      # ...
      Copy to Clipboard Toggle word wrap

      1
      本例匹配来自 example-app 服务的警报。
      2
      您可以在其他路由中创建路由,以进行更复杂的警报路由。

      前面的示例将由 example-app 服务触发的 critica 严重性的警报路由到 team-frontend-page 接收器。通常,这些类型的警报会传给个人或关键响应团队。

  4. 应用文件中的新配置:

    $ oc -n openshift-monitoring create secret generic alertmanager-main --from-file=alertmanager.yaml --dry-run=client -o=yaml |  oc -n openshift-monitoring replace secret --filename=-
    Copy to Clipboard Toggle word wrap
  5. 通过视觉化路由树来验证路由配置:

    $ oc exec alertmanager-main-0 -n openshift-monitoring -- amtool config routes show --alertmanager.url http://localhost:9093
    Copy to Clipboard Toggle word wrap

    输出示例

    Routing tree:
    .
    └── default-route  receiver: default
        ├── {alertname="Watchdog"}  receiver: Watchdog
        └── {service="example-app"}  receiver: default
            └── {severity="critical"}  receiver: team-frontend-page
    Copy to Clipboard Toggle word wrap

10.8.2. 为用户定义的项目配置通知

如果您启用了专用于用户定义的警报路由的 Alertmanager 实例,您可以通过编辑 openshift-user-workload-monitoring 命名空间中的 alertmanager-user-workload secret 来自定义实例发送通知的位置和方式。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。

流程

  1. 将当前活跃的 Alertmanager 配置输出到 alertmanager.yaml 文件:

    $ oc -n openshift-user-workload-monitoring get secret alertmanager-user-workload --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
    Copy to Clipboard Toggle word wrap
  2. 编辑 alertmanager.yaml 中的配置:

    route:
      receiver: Default
      group_by:
      - name: Default
      routes:
      - matchers:
        - "service = prometheus-example-monitor" 
    1
    
        receiver: <receiver> 
    2
    
    receivers:
    - name: Default
    - name: <receiver>
      <receiver_configuration> 
    3
    Copy to Clipboard Toggle word wrap
    1
    指定与警报匹配的标签。这个示例将带有 service="prometheus-example-monitor" 标签的所有警报作为目标。
    2
    指定用于警报组的接收器名称。
    3
    指定接收器配置。
  3. 应用文件中的新配置:

    $ oc -n openshift-user-workload-monitoring create secret generic alertmanager-user-workload --from-file=alertmanager.yaml --dry-run=client -o=yaml |  oc -n openshift-user-workload-monitoring replace secret --filename=-
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat