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
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
data/config.yaml/prometheusK8s
下的配置详情添加一个additionalAlertmanagerConfigs
部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<alertmanager_specification>
替换为额外的 Alertmanager 实例的身份验证和其他配置详情。目前支持的身份验证方法有 bearer 令牌 (bearerToken
) 和客户端 TLS (tlsConfig
)。
以下示例配置映射使用带有客户端 TLS 身份验证的 bearer 令牌为 Prometheus 配置额外的 Alertmanager:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 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
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下为alertmanagerMain
组件添加enabled: false
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。应用更改时,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
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml/alertmanagerMain
下添加一个secrets:
部分,并具有以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例配置映射设置将 Alertmanager 配置为使用名为
test-secret-basic-auth
和test-secret-api-token
的两个Secret
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。新的配置会被自动应用。
3.5.3. 在时间序列和警报中附加额外标签 复制链接链接已复制到粘贴板!
您可以使用 Prometheus 的外部标签功能,将自定义标签附加到离开 Prometheus 的所有时间序列和警报。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下定义您要为每个指标添加的标签:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<key>: <value>
替换为键值对,其中<key>
是新标签的唯一名称,<value>
是它的值。
警告-
不要使用
prometheus
或prometheus_replica
作为键的名称,因为它们是保留的并会被覆盖。 -
不要使用
cluster
或managed_cluster
作为密钥名称。使用它们可能会导致您无法在开发人员仪表板中看到数据的问题。
例如,要将关于区域和环境的元数据添加到所有时间序列和警报中,请使用以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
3.5.4. 配置警报通知 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.14 中,您可以在 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
集群角色的用户身份访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
从
alertmanager-main
secret 中提取当前活跃的 Alertmanager 配置,并将其保存为本地alertmanager.yaml
文件:oc -n openshift-monitoring get secret alertmanager-main --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
$ oc -n openshift-monitoring get secret alertmanager-main --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
alertmanager.yaml
文件。 编辑 Alertmanager 配置:
可选:更改默认的 Alertmanager 配置:
默认 Alertmanager secret YAML 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加警报接收器配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 PagerDuty 配置为警报接收器示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 定义 PagerDuty 集成密钥。
将电子邮件配置为警报接收器的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Alertmanager 需要外部 SMTP 服务器来发送电子邮件警报。要配置电子邮件警报接收器,请确保您具有外部 SMTP 服务器所需的连接详情。
添加路由配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告不要使用
match
,match_re
,target_match
,target_match_re
,source_match
, 和source_match_re
键名称,它们已弃用,并计划在以后的发行版本中删除。警报路由示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的示例将由
example-app
服务触发的critica
严重性的警报路由到team-frontend-page
接收器。通常,这些类型的警报会传给个人或关键响应团队。
应用文件中的新配置:
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=-
$ 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 Copied! Toggle word wrap Toggle overflow 通过视觉化路由树来验证路由配置:
oc exec alertmanager-main-0 -n openshift-monitoring -- amtool config routes show --alertmanager.url http://localhost:9093
$ oc exec alertmanager-main-0 -n openshift-monitoring -- amtool config routes show --alertmanager.url http://localhost:9093
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4.2. 使用 OpenShift Container Platform Web 控制台配置警报路由 复制链接链接已复制到粘贴板!
您可以通过 OpenShift Container Platform Web 控制台配置警报路由,以确保了解集群出现的重要问题。
OpenShift Container Platform Web 控制台提供比 alertmanager-main
secret 配置警报路由的设置更少。要通过访问更多配置设置配置警报路由,请参阅"配置默认平台警报的警报路由"。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。
流程
在 Administrator 视角中,进入 Administration
Cluster Settings Configuration Alertmanager。 注意或者,您还可以通过 notification drawer 访问同一页面。选择 OpenShift Container Platform Web 控制台右上角的铃铛图标,并在 AlertmanagerReceiverNotConfigured 警报中选择 Configure。
- 在页面的 Receivers 部分中,点 Create Receiver。
- 在 Create Receiver 表单中,添加 Receiver Name,然后从列表中选择 Receiver Type。
编辑接收器配置:
对于 PagerDuty 接收器:
- 选择集成类型并添加 PagerDuty 集成密钥。
- 添加 PagerDuty 安装的 URL。
- 如果要编辑客户端和事件详情或严重性规格,请点 Show advanced configuration。
对于 Webhook 接收器:
- 添加将 HTTP POST 请求发送到的端点。
- 如果要编辑将已解析的警报发送给接收器的默认选项,请点 Show advanced configuration。
对于电子邮件接收器:
- 添加要将通知发送到的电子邮件地址。
添加 SMTP 配置详情,包括发送通知的地址、用来发送电子邮件的智能主机和端口号、SMTP 服务器的主机名以及验证详情。
重要Alertmanager 需要外部 SMTP 服务器来发送电子邮件警报。要配置电子邮件警报接收器,请确保您具有外部 SMTP 服务器所需的连接详情。
- 选择是否需要 TLS。
- 如果要将默认选项编辑为不向接收器发送已解析的警报,或编辑电子邮件通知正文配置,请点 Show advanced configuration。
对于 Slack 接收器:
- 添加 Slack Webhook 的 URL。
- 添加要将通知发送到的 Slack 频道或用户名。
- 如果要将默认选项编辑为不向接收器发送已解析的警报,或编辑图标和用户名配置,请选择 Show advanced configuration。您还可以选择是否查找并链接频道名称和用户名。
默认情况下,如果触发的警报带有与所有选择器匹配的标签,将被发送到接收器。如果您希望触发的警报在发送到接收器前完全匹配的标签值,请执行以下步骤:
- 在表单的 Routing Labels 部分中添加路由标签名称和值。
- 点 Add label 来添加更多路由标签。
- 点 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 实例,则此配置不适用。