×

在 OpenShift Container Platform 4.17 中,集群管理员可以为用户定义的项目启用警报路由。此过程包括两个常规步骤

  • 启用用户定义项目的警报路由以使用默认平台 Alertmanager 实例,或者(可选)仅为用户定义的项目启用单独的 Alertmanager 实例。

  • 授予用户配置用户定义项目警报路由的权限。

完成这些步骤后,开发人员和其他用户可以为其用户定义的项目配置自定义警报和警报路由。

了解用户定义项目的警报路由

作为集群管理员,您可以为用户定义的项目启用警报路由。使用此功能,您可以允许具有 **alert-routing-edit** 角色的用户为用户定义的项目配置警报通知路由和接收者。这些通知由默认的 Alertmanager 实例路由,或者如果已启用,则由专用于用户定义监控的可选 Alertmanager 实例路由。

然后,用户可以通过创建或编辑其用户定义项目的 `AlertmanagerConfig` 对象来创建和配置用户定义的警报路由,而无需管理员的帮助。

用户为用户定义的项目定义警报路由后,用户定义的警报通知将按如下方式路由:

  • 如果使用默认平台 Alertmanager 实例,则路由到 `openshift-monitoring` 命名空间中的 `alertmanager-main` Pod。

  • 如果您已为用户定义的项目启用单独的 Alertmanager 实例,则路由到 `openshift-user-workload-monitoring` 命名空间中的 `alertmanager-user-workload` Pod。

以下是用户定义项目警报路由的限制:

  • 对于用户定义的警报规则,用户定义的路由的范围限定为定义资源的命名空间。例如,命名空间 `ns1` 中的路由配置仅适用于同一命名空间中的 `PrometheusRules` 资源。

  • 当从用户定义的监控中排除命名空间时,该命名空间中的 `AlertmanagerConfig` 资源将不再是 Alertmanager 配置的一部分。

为用户定义的警报路由启用平台 Alertmanager 实例

您可以允许用户创建使用 Alertmanager 主要平台实例的用户定义警报路由配置。

先决条件
  • 您可以作为具有 `cluster-admin` 集群角色的用户访问集群。

  • 集群管理员已为用户定义的项目启用了监控。

  • 您已安装 OpenShift CLI(`oc`)。

步骤
  1. 编辑cluster-monitoring-config ConfigMap 对象

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. data/config.yaml下的alertmanagerMain部分添加enableUserAlertmanagerConfig: true

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        # ...
        alertmanagerMain:
          enableUserAlertmanagerConfig: true (1)
        # ...
    1 enableUserAlertmanagerConfig的值设置为true,允许用户创建使用Alertmanager主平台实例的用户定义告警路由配置。
  3. 保存文件以应用更改。新配置会自动应用。

为用户定义的告警路由启用单独的Alertmanager实例

在某些集群中,您可能希望为用户定义的项目部署一个专用的Alertmanager实例,这有助于减轻默认平台Alertmanager实例的负载,并可以更好地将用户定义的告警与默认平台告警分开。在这些情况下,您可以选择启用单独的Alertmanager实例,仅为用户定义的项目发送告警。

先决条件
  • 您可以作为具有 `cluster-admin` 集群角色的用户访问集群。

  • 您已为用户定义的项目启用监控。

  • 您已安装 OpenShift CLI(`oc`)。

步骤
  1. 编辑user-workload-monitoring-config ConfigMap 对象

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml下的alertmanager部分添加enabled: trueenableAlertmanagerConfig: true

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          enabled: true (1)
          enableAlertmanagerConfig: true (2)
    1 enabled的值设置为true以在集群中为用户定义的项目启用专用的Alertmanager实例。将值设置为false或完全省略此键以禁用用户定义项目的Alertmanager。如果将此值设置为false或省略此键,则用户定义的告警将路由到默认平台Alertmanager实例。
    2 enableAlertmanagerConfig的值设置为true,以允许用户使用AlertmanagerConfig对象定义自己的告警路由配置。
  3. 保存文件以应用更改。专用于用户定义项目的Alertmanager实例会自动启动。

验证
  • 验证user-workload Alertmanager实例是否已启动

    # oc -n openshift-user-workload-monitoring get alertmanager
    示例输出
    NAME            VERSION   REPLICAS   AGE
    user-workload   0.24.0    2          100s

授予用户配置用户定义项目告警路由的权限

您可以授予用户配置用户定义项目告警路由的权限。

先决条件
  • 您可以作为具有 `cluster-admin` 集群角色的用户访问集群。

  • 您已为用户定义的项目启用监控。

  • 您要为其分配角色的用户帐户已存在。

  • 您已安装 OpenShift CLI(`oc`)。

步骤
  • alert-routing-edit集群角色分配给用户定义项目中的用户

    $ oc -n <namespace> adm policy add-role-to-user alert-routing-edit <user> (1)
    1 对于<namespace>,请替换为用户定义项目的命名空间,例如ns1。对于<user>,请替换为您要为其分配角色的用户名。