3.5. 为核心平台监控配置警报和通知


您可以配置本地或远程 Alertmanager 实例,将警报从 Prometheus 路由到端点接收器。您还可以将自定义标签附加到所有时间序列和警报,以添加有用的元数据信息。

3.5.1. 配置外部 Alertmanager 实例

OpenShift Container Platform 监控堆栈包含一个本地 Alertmanager 实例,用于从 Prometheus 路由警报。

您可以添加外部 Alertmanager 实例来路由 OpenShift Container Platform 核心项目的警报。

如果您为多个集群添加相同的外部 Alertmanager 配置,并且为每个集群禁用本地实例,则可以使用单个外部 Alertmanager 实例管理多个集群的警报路由。

先决条件

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

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. 使用 data/config.yaml/prometheusK8s 下的配置详情添加一个 additionalAlertmanagerConfigs 部分:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          additionalAlertmanagerConfigs:
          - <alertmanager_specification> 1
    1
    <alertmanager_specification > 替换为额外的 Alertmanager 实例的身份验证和其他配置详情。目前支持的身份验证方法有 bearer 令牌 (bearerToken) 和客户端 TLS (tlsConfig)。

    以下示例配置映射使用带有客户端 TLS 身份验证的 bearer 令牌为 Prometheus 配置额外的 Alertmanager:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          additionalAlertmanagerConfigs:
          - scheme: https
            pathPrefix: /
            timeout: "30s"
            apiVersion: v1
            bearerToken:
              name: alertmanager-bearer-token
              key: token
            tlsConfig:
              key:
                name: alertmanager-tls
                key: tls.key
              cert:
                name: alertmanager-tls
                key: tls.crt
              ca:
                name: alertmanager-tls
                key: tls.ca
            staticConfigs:
            - external-alertmanager1-remote.com
            - external-alertmanager1-remote2.com
  3. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。

3.5.1.1. 禁用本地 Alertmanager

在 OpenShift Container Platform 监控堆栈的 openshift-monitoring 项目中默认启用从 Prometheus 实例路由警报的本地 Alertmanager。

如果您不需要本地 Alertmanager,可以通过在 openshift-monitoring 项目中配置 cluster-monitoring-config 配置映射来禁用它。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 您已创建了 cluster-monitoring-config 配置映射。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. data/config.yaml 下为 alertmanagerMain 组件添加 enabled: false

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        alertmanagerMain:
          enabled: false
  3. 保存文件以使改变生效。应用更改时,Alertmanager 实例会自动禁用。

其他资源

3.5.2. 为 Alertmanager 配置 secret

OpenShift Container Platform 监控堆栈包括 Alertmanager,它将警报从 Prometheus 路由到端点接收器。如果您需要通过接收器进行身份验证以便 Alertmanager 能够向它发送警报,您可以将 Alertmanager 配置为使用包含接收器身份验证凭据的 secret。

例如,您可以将 Alertmanager 配置为使用 secret 与需要由私有证书颁发机构 (CA) 发布的证书的端点接收器进行身份验证。您还可以将 Alertmanager 配置为使用 secret 与需要用于基本 HTTP 身份验证密码文件的接收器进行身份验证。在这两种情况下,身份验证详情都包含在 Secret 对象中,而不是包括在 ConfigMap 对象中。

3.5.2.1. 在 Alertmanager 配置中添加 secret

您可以通过编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射,将 secret 添加到 Alertmanager 配置中。

将 secret 添加到配置映射后,secret 作为一个卷挂载到 Alertmanager Pod 的 alertmanager 容器中的 /etc/alertmanager/secrets/<secret_name 的卷中。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 您已创建了 cluster-monitoring-config 配置映射。
  • 您已创建了要在 openshift-monitoring 项目中的 Alertmanager 中配置的 secret。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. data/config.yaml/alertmanagerMain 下添加一个 secrets: 部分,并具有以下配置:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        alertmanagerMain:
          secrets: 1
          - <secret_name_1> 2
          - <secret_name_2>
    1
    本节包含要挂载到 Alertmanager 中的 secret。secret 必须位于与 Alertmanager 对象相同的命名空间中。
    2
    包含接收器身份验证凭证的 Secret 对象的名称。如果您添加多个 secret,请将每个 secret 放在新行中。

    以下示例配置映射设置将 Alertmanager 配置为使用名为 test-secret-basic-authtest-secret-api-token 的两个 Secret 对象:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        alertmanagerMain:
          secrets:
          - test-secret-basic-auth
          - test-secret-api-token
  3. 保存文件以使改变生效。新的配置会被自动应用。

3.5.3. 在时间序列和警报中附加额外标签

您可以使用 Prometheus 的外部标签功能,将自定义标签附加到离开 Prometheus 的所有时间序列和警报。

先决条件

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

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. data/config.yaml 下定义您要为每个指标添加的标签:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          externalLabels:
            <key>: <value> 1
    1
    <key>: &lt;value> 替换为键值对,其中 & lt;key > 是新标签的唯一名称,&lt ;value& gt; 是它的值。
    警告
    • 不要使用 prometheus prometheus_replica 作为键的名称,因为它们是保留的并会被覆盖。
    • 不要使用 clustermanaged_cluster 作为密钥名称。使用它们可能会导致您无法在开发人员仪表板中看到数据的问题。

    例如,要将关于区域和环境的元数据添加到所有时间序列和警报中,请使用以下示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          externalLabels:
            region: eu
            environment: prod
  3. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。

3.5.4. 配置警报通知

在 OpenShift Container Platform 4.16 中,您可以在 Alerting UI 中查看触发警报。您可以通过配置警报接收器,将 Alertmanager 配置为发送有关默认平台警报的通知。

重要

Alertmanager 默认不会发送通知。强烈建议您通过 web 控制台或通过 alertmanager-main secret 配置警报接收器来接收通知。

3.5.4.1. 为默认平台警报配置警报路由

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

注意

OpenShift Container Platform Alertmanager 配置中也支持支持上游 Alertmanager 的所有功能。要检查受支持的上游 Alertmanager 版本的所有配置选项,请参阅 Alertmanager 配置 (Prometheus 文档)。

先决条件

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

流程

  1. 打开 Alertmanager YAML 配置文件:

    • 通过 CLI 打开 Alertmanager 配置:

      1. 将当前活跃的 Alertmanager 配置从 alertmanager-main secret 输出到 alertmanager.yaml 文件中:

        $ oc -n openshift-monitoring get secret alertmanager-main --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
      2. 打开 alertmanager.yaml 文件。
    • 从 OpenShift Container Platform Web 控制台打开 Alertmanager 配置:

      1. 进入 web 控制台的 Administration Cluster Settings Configuration Alertmanager YAML 页面。
  2. 通过更新 YAML 中的参数来编辑 Alertmanager 配置:

    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
      - matchers:
        - "service=<your_service>" 4
        routes:
        - matchers:
          - <your_matching_rules> 5
          receiver: <receiver> 6
    receivers:
    - name: default
    - name: watchdog
    - name: <receiver>
      <receiver_configuration> 7
    1
    指定在为一组警报收集初始警报时 Alertmanager 在发送通知时等待的时间。
    2
    指定 Alertmanager 向已发送初始通知的一组警报发送有关新警报的通知前必须经过的时间。
    3
    指定在通知重复前必须经过的最短时间。如果您希望通知在每个组间隔重复,请将 repeat_interval 值设置为小于 group_interval 的值。重复的通知仍然可以延迟,例如当某些 Alertmanager pod 重启或重新调度时。
    4
    指定触发警报的服务名称。
    5
    指定与警报匹配的标签。
    6
    指定要用于警报的接收器名称。
    7
    指定接收器配置。
    重要
    • 使用 matchers 键名称来指示警报要与节点匹配的匹配者。不要使用 matchmatch_re 键名称,它们都已弃用,并计划在以后的发行版本中删除。
    • 如果您定义了禁止规则,请使用以下密钥名称:

      • target_matchers: 表示目标匹配器
      • source_matchers: 用于指示源匹配器

      不要使用 target_match,target_match_re,source_match, 或 source_match_re 键名称,这些名称已弃用,并计划在以后的发行版本中删除。

    以下 Alertmanager 配置示例将 PagerDuty 配置为警报接收器:

    global:
      resolve_timeout: 5m
    route:
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 12h
      receiver: default
      routes:
      - matchers:
        - "alertname=Watchdog"
        repeat_interval: 2m
        receiver: watchdog
      - matchers:
        - "service=example-app"
        routes:
        - matchers:
          - "severity=critical"
          receiver: team-frontend-page
    receivers:
    - name: default
    - name: watchdog
    - name: team-frontend-page
      pagerduty_configs:
      - service_key: "<your_key>"

    使用这个配置,由 example-app 服务触发 critical 严重性等级的警报将通过 team-frontend-page 接收器发送。通常情况下,这些类型的警报会传给个人或关键响应团队。

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

    • 要从 CLI 应用更改,请运行以下命令:

      $ 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=-
    • 要从 OpenShift Container Platform Web 控制台应用更改,请点 Save

3.5.4.2. 使用 OpenShift Container Platform Web 控制台配置警报路由

您可以通过 OpenShift Container Platform Web 控制台配置警报路由,以确保了解集群出现的重要问题。

注意

OpenShift Container Platform Web 控制台提供比 alertmanager-main secret 配置警报路由的设置更少。要通过访问更多配置设置配置警报路由,请参阅"配置默认平台警报的警报路由"。

先决条件

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

流程

  1. Administrator 视角中,进入 Administration Cluster Settings Configuration Alertmanager

    注意

    或者,您还可以通过 notification drawer 访问同一页面。选择 OpenShift Container Platform Web 控制台右上角的铃铛图标,并在 AlertmanagerReceiverNotConfigured 警报中选择 Configure

  2. 在页面的 Receivers 部分中,点 Create Receiver
  3. Create Receiver 表单中,添加 Receiver Name,然后从列表中选择 Receiver Type
  4. 编辑接收器配置:

    • 对于 PagerDuty 接收器:

      1. 选择集成类型并添加 PagerDuty 集成密钥。
      2. 添加 PagerDuty 安装的 URL。
      3. 如果要编辑客户端和事件详情或严重性规格,请点 Show advanced configuration
    • 对于 Webhook 接收器:

      1. 添加将 HTTP POST 请求发送到的端点。
      2. 如果要编辑将已解析的警报发送给接收器的默认选项,请点 Show advanced configuration
    • 对于电子邮件接收器:

      1. 添加要将通知发送到的电子邮件地址。
      2. 添加 SMTP 配置详情,包括发送通知的地址、用来发送电子邮件的智能主机和端口号、SMTP 服务器的主机名以及验证详情。
      3. 选择是否需要 TLS。
      4. 如果要将默认选项编辑为不向接收器发送已解析的警报,或编辑电子邮件通知正文配置,请点 Show advanced configuration
    • 对于 Slack 接收器:

      1. 添加 Slack Webhook 的 URL。
      2. 添加要将通知发送到的 Slack 频道或用户名。
      3. 如果要将默认选项编辑为不向接收器发送已解析的警报,或编辑图标和用户名配置,请选择 Show advanced configuration。您还可以选择是否查找并链接频道名称和用户名。
  5. 默认情况下,如果触发的警报带有与所有选择器匹配的标签,将被发送到接收器。如果您希望触发的警报在发送到接收器前完全匹配的标签值,请执行以下步骤:

    1. 在表单的 Routing Labels 部分中添加路由标签名称和值。
    2. Add label 来添加更多路由标签。
  6. Create 创建接收器。

3.5.4.3. 为默认平台警报和用户定义的警报配置不同的警报接收器

您可以为默认平台警报和用户定义的警报配置不同的警报接收器,以确保以下结果:

  • 所有默认平台警报都发送到团队拥有的接收器,以收取这些警报。
  • 所有用户定义的警报都发送到另一个接收器,以便团队只能专注于平台警报。

您可以使用 Cluster Monitoring Operator 添加到所有平台警报的 openshift_io_alert_source="platform" 标签来实现此目的:

  • 使用 openshift_io_alert_source="platform" matcher 来匹配默认平台警报。
  • 使用 openshift_io_alert_source!="platform"'openshift_io_alert_source="" 匹配程序来匹配用户定义的警报。
注意

如果您启用了专用于用户定义的警报的 Alertmanager 实例,则此配置不适用。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.