1.5. 管理警报
配置 Observability 警报以监控 hub 集群和受管集群活动,将平台和用户工作负载警报转发到 hub 集群上的 Alertmanager,并将通知路由到外部系统,如 Slack、电子邮件或 PagerDuty。
继续阅读以了解更多信息:
1.5.1. 先决条件 复制链接链接已复制到粘贴板!
您必须有以下凭证并完成以下操作来管理警报:
- 在 hub 集群中启用 Observability。
-
具有
open-cluster-management-observability命名空间中Secret资源的 create 权限。 -
对
MultiClusterObservability资源具有 edit 权限。 - 在受管集群中配置 Prometheus 实例,以帮助防止重启过程中出现指标丢失。详情请参阅 OpenShift Container Platform 文档中的 配置持久性存储。
- 在受管集群中启用用户工作负载监控和警报。详情请参阅 OpenShift Container Platform 文档中的配置用户工作负载监控和管理警报。https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/monitoring/configuring-user-workload-monitoring
-
对于 Prometheus 的用户工作负载,为警报规则添加标签,以便只强制在
openshift-user-workload-monitoring命名空间中部署的用户工作负载 Prometheus 来评估警报规则,并防止 Thanos Ruler 实例处理它们。详情请参阅 OpenShift Container Platform 文档中的 为用户定义的项目创建警报规则。
1.5.2. 配置 Alertmanager 复制链接链接已复制到粘贴板!
集成外部消息工具,如 email、Slack 和 PagerDuty 以接收来自 Alertmanager 的通知。您必须覆盖 open-cluster-management-observability 命名空间中的 alertmanager-config secret 来添加集成,并为 Alertmanager 配置路由。完成以下步骤以更新自定义接收器规则:
从
alertmanager-configsecret 中提取数据。运行以下命令:oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yamloc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,编辑并保存
alertmanager.yaml文件配置:oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml | oc -n open-cluster-management-observability replace secret --filename=-
oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml | oc -n open-cluster-management-observability replace secret --filename=-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新的 secret 可能与以下类似:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
修改 secret 后,您的更改会立即应用。有关 Alertmanager 示例,请参阅 prometheus/alertmanager。
1.5.3. 保护从 Alertmanager 到第三方端点的通信 复制链接链接已复制到粘贴板!
通过保持您的凭证安全且可通过 Kubernetes Secret 资源管理,启用从 Alertmanager 到第三方端点(如 Slack、电子邮件和 PagerDuty)的安全通信。您可以使用 alertmanager pod 中可以挂载的任意内容创建 Secret 资源,以访问授权凭证。
要在 Alertmanager 配置中引用 secret,请在 open-cluster-management-observability 命名空间内添加 Secret 资源内容,并在 alertmanager pod 中挂载内容。例如,要创建和挂载 tls secret,请完成以下步骤:
要使用 TLS 证书创建
tlssecret,请运行以下命令:oc create secret tls tls --cert=</path/to/cert.crt> --key=</path/to/cert.key> -n open-cluster-management-observability
oc create secret tls tls --cert=</path/to/cert.crt> --key=</path/to/cert.key> -n open-cluster-management-observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将
tlssecret 挂载到MultiClusterObservability资源,将其添加到advanced部分。您的资源可能类似以下内容:... advanced: alertmanager: secrets: ['tls']
... advanced: alertmanager: secrets: ['tls']Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在 Alertmanager 配置中添加
tlssecret 的引用,请将 secret 的路径添加到配置中。您的资源可能类似以下配置:tls_config: cert_file: '/etc/alertmanager/secrets/tls/tls.crt' key_file: '/etc/alertmanager/secrets/tls/tls.key'
tls_config: cert_file: '/etc/alertmanager/secrets/tls/tls.crt' key_file: '/etc/alertmanager/secrets/tls/tls.key'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证 secret 是否在
alertmanagerpod 中,请运行以下命令:oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yamloc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的 YAML 可能类似以下内容:
"global": "http_config": "tls_config": "cert_file": "/etc/alertmanager/secrets/storyverify/tls.crt" "key_file": "/etc/alertmanager/secrets/storyverify/tls.key""global": "http_config": "tls_config": "cert_file": "/etc/alertmanager/secrets/storyverify/tls.crt" "key_file": "/etc/alertmanager/secrets/storyverify/tls.key"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在
alertmanager-configsecret 中保存alertmanager.yaml配置,请运行以下命令:oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml
oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将之前的 secret 替换为新 secret,请运行以下命令:
oc -n open-cluster-management-observability replace secret --filename=-
oc -n open-cluster-management-observability replace secret --filename=-Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4. 转发警报 复制链接链接已复制到粘贴板!
启用 Observability 后,来自 OpenShift Container Platform 受管集群的警报会自动发送到 hub 集群上的 Alertmanager。默认情况下,所有平台警报都发送到 hub 集群上的 Alertmanager。当您在 OpenShift Container Platform 受管集群中启用用户工作负载警报时,用户工作负载警报也会发送到 hub 集群。您可以使用 alertmanager-config YAML 文件,为警报配置外部通知系统。
查看 alertmanager-config YAML 文件示例:
如果要配置代理进行警报转发,请在 alertmanager-config YAML 文件中添加以下 global 条目:
global:
slack_api_url: '<slack_webhook_url>'
http_config:
proxy_url: http://****
global:
slack_api_url: '<slack_webhook_url>'
http_config:
proxy_url: http://****
要转发用户工作负载警报,警报必须由用户工作负载 Prometheus 实例处理,而不是由 Thanos ruler 处理。请参阅以下 PrometheusRule 资源示例:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus
1.5.5. 禁用受管集群的警报转发 复制链接链接已复制到粘贴板!
要禁用受管集群的警报转发,请将 mco-disable-alerting: "true" 注解添加到 MultiClusterObservability 自定义资源。当您设置 mco-disable-alerting: "true" 注解时,平台和用户工作负载警报不会转发到 hub 集群上的 Alertmanager。受管集群中的转发配置会被恢复。
openshift-monitoring 命名空间中的 cluster-monitoring-config 配置映射的配置更新会被恢复。设置注解可确保 cluster-monitoring-config 配置映射不由 Observability operator 端点管理或更新。更新配置后,受管集群上的平台和用户工作负载 Prometheus 实例都会重启。完成以下步骤:
恢复更改后,会在 open-cluster-management-addon-observability 命名空间中创建名为 cluster-monitoring-reverted 的配置映射。任何新的警报转发配置都不会从配置映射中恢复。
运行以下命令,将
mco-disable-alerting注解设置为"true":oc annotate MultiClusterObservability observability mco-disable-alerting=true
oc annotate MultiClusterObservability observability mco-disable-alerting=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要: 当受管集群上的 Prometheus 没有使用持久性卷配置时,您会丢失指标。
- 验证 hub 集群警报管理器不再将受管集群警报传播到第三方消息传递工具。
1.5.6. 为受管集群禁用用户工作负载警报转发 复制链接链接已复制到粘贴板!
要禁用受管集群的用户工作负载警报转发,请将 mco-disable-uwl-alerting: "true" 注解添加到 MultiClusterObservability 自定义资源。当设置注解时,将用户工作负载警报转发到 hub 集群上的 Alertmanager 会停止,平台警报将继续转发到 Alertmanager。
设置注解可确保 user-workload-monitoring-config 配置映射不由 Observability operator 端点管理或更新。更新配置后,受管集群中的用户工作负载 Prometheus 实例会重启。
运行以下命令,将 mco-disable-uwl-alerting 注解设置为 "true" :
oc annotate MultiClusterObservability observability mco-disable-uwl-alerting=true
oc annotate MultiClusterObservability observability mco-disable-uwl-alerting=true
1.5.7. 静默警报 复制链接链接已复制到粘贴板!
添加您不想接收的警报。您可以根据警报名称、匹配标签或持续时间来静默警报。添加要静默的警报后,会创建一个 ID。您的静默警报的 ID 可能类似以下字符串 d839aca9-ed46-40be-84c4-dca8773671da。
继续读取静默警报的方法:
要静默 Red Hat Advanced Cluster Management 警报,您必须有权访问
open-cluster-management-observability命名空间中的alertmanagerpod。例如,在observability-alertmanager-0pod 终端中输入以下命令来静默SampleAlert:amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" alertname="SampleAlert"
amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" alertname="SampleAlert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过使用多个匹配标签静默警报。以下命令使用
match-label-1和match-label-2:amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" <match-label-1>=<match-value-1> <match-label-2>=<match-value-2>
amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" <match-label-1>=<match-value-1> <match-label-2>=<match-value-2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在特定时间段内静默警报,请使用
--duration标志。运行以下命令,以静默一个小时的SampleAlert:amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --duration="1h" alertname="SampleAlert"
amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --duration="1h" alertname="SampleAlert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以为静默的警报指定开始或结束时间。输入以下命令在特定开始时静默
SampleAlert:amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --start="2023-04-14T15:04:05-07:00" alertname="SampleAlert"
amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --start="2023-04-14T15:04:05-07:00" alertname="SampleAlert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看创建的所有静默警报,请运行以下命令:
amtool silence --alertmanager.url="http://localhost:9093"
amtool silence --alertmanager.url="http://localhost:9093"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您不再需要静默警报,请运行以下命令终止警报:
amtool silence expire --alertmanager.url="http://localhost:9093" "d839aca9-ed46-40be-84c4-dca8773671da"
amtool silence expire --alertmanager.url="http://localhost:9093" "d839aca9-ed46-40be-84c4-dca8773671da"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要结束所有警报的静默,请运行以下命令:
amtool silence expire --alertmanager.url="http://localhost:9093" $(amtool silence query --alertmanager.url="http://localhost:9093" -q)
amtool silence expire --alertmanager.url="http://localhost:9093" $(amtool silence query --alertmanager.url="http://localhost:9093" -q)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.8. 迁移可观察存储 复制链接链接已复制到粘贴板!
如果使用警报静默程序,您可以在从之前的状态中保留静默时迁移可观察性存储。要做到这一点,请通过使用您选择的 StorageClass 资源创建新 StatefulSets 和 PersistentVolume (PV)资源来 迁移您的 Red Hat Advanced Cluster Management observability 存储。
注: PV 的存储与用于存储从集群收集指标的对象存储不同。
当您使用 StatefulSets 和 PV 将可观察性数据迁移到新存储时,它会存储以下数据组件:
- observatorium 或 Thanos: Receives 数据,然后将其上传到对象存储。其一些组件在 PV 中存储数据。对于这个数据,Observatorium 或 Thanos 会在启动时自动重新生成对象存储,因此当您丢失此数据时不会有后果。
- Alertmanager : 仅存储静默的警报。如果要保留这些静默的警报,您必须将这些数据迁移到新 PV。
要迁移您的可观察性存储,请完成以下步骤:
-
在
MultiClusterObservability中,将.spec.storageConfig.storageClass字段设置为新的存储类。 -
为确保之前
PersistentVolume的数据被保留,即使您删除PersistentVolumeClaim,请转至所有现有PersistentVolume。 -
将
reclaimPolicy改为"Retain": 'oc patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'。 - 可选: 要避免丢失数据,请参阅 OCP 4 中的将持久数据迁移到 DG 8 Operator 中的另一个存储类。
在以下
StatefulSet情况下删除StatefulSet和PersistentVolumeClaim:-
alertmanager-db-observability-alertmanager-<REPLICA_NUMBER> -
data-observability-thanos-<COMPONENT_NAME> -
data-observability-thanos-receive-default -
data-observability-thanos-store-shard -
重要: 您可能需要删除,然后重新创建
MultiClusterObservabilityoperator pod,以便您可以创建新StatefulSet。
-
-
重新创建名称相同的新
PersistentVolumeClaim,但正确的StorageClass。 -
创建一个新的
PersistentVolumeClaim,引用旧的PersistentVolume。 -
验证新的
StatefulSet和PersistentVolume是否使用您选择的新StorageClass。
1.5.9. 阻止警报 复制链接链接已复制到粘贴板!
在全局范围内限制 Red Hat Advanced Cluster Management 警报,这不太严重。通过在 open-cluster-management-observability 命名空间中定义 alertmanager-config 中的禁止规则来限制警报。
当一组与另一组现有匹配者匹配的一组参数时,禁止规则会静默警报。为了让规则生效,目标和源警报必须具有 equal 列表中标签名称相同的标签值。您的 inhibit_rules 可能类似以下:
- 1 1
- 定义了
inhibit_rules参数部分,以查找同一命名空间中的警报。当一个命名空间中出现了一个critical警报时,如果在那个命名空间中还有其他包括严重性级别为warning或info的警报时,只有critical警报会路由到 Alertmanager 接收器。匹配时可能会显示以下警报:ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-1", severity="warning"}ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-1", severity="warning"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2 2
- 如果
source_match和target_match_re参数的值不匹配,则警报将路由到接收器:ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-2", severity="warning"}ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-2", severity="warning"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要查看 Red Hat Advanced Cluster Management 中的禁止的警报,请输入以下命令:
amtool alert --alertmanager.url="http://localhost:9093" --inhibited
amtool alert --alertmanager.url="http://localhost:9093" --inhibitedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.10. 其他资源 复制链接链接已复制到粘贴板!
- 如需了解更多详细信息,请参阅 Observability 高级配置。
- 有关更多可观察性主题,请参阅 Observability 服务。