从项目中创建提醒规则

在 GDC 控制台中创建包含项目指标或日志的提醒规则的群组。指标规则会根据指标数据发送提醒,而日志规则会根据日志记录数据发送提醒。您必须输入查询语言表达式,以确定提醒是否必须移至待处理状态。此外,您还可以添加标签和注释等可选值。

借助标签,您可以以键值对映射的形式区分提醒的特征。您可以使用标签添加或覆盖信息,例如严重程度(错误、严重、警告或信息)、提醒代码以及用于标识资源的简称。

另一方面,您可以使用注释向提醒添加非身份元数据。例如,您可以为界面 (UI) 字段或 Runbook 网址中显示的消息和表达式添加值,以帮助执行解决性操作。

或者,您也可以使用 Observability API 创建提醒规则,以直接与自定义资源互动并更新项目命名空间中的更改。

准备工作

继续之前,请确保您拥有以下必要权限:

根据日志创建提醒规则

如需获得创建或查看基于日志的提醒规则所需的权限,请让项目 IAM 管理员在项目命名空间中向您授予以下角色之一:

  • 日志记录规则创建器:创建 LoggingRule 自定义资源。申请 Logging Rule Creator (loggingrule-creator) 角色。
  • 日志记录规则编辑器:用于修改 LoggingRule 自定义资源。申请 Logging Rule Editor (loggingrule-editor) 角色。
  • Logging Rule Viewer:查看 LoggingRule 自定义资源。请求 Logging Rule Viewer (loggingrule-viewer) 角色。

根据指标创建提醒规则

如需获得创建或查看基于指标的提醒规则所需的权限,请让项目 IAM 管理员向您授予项目命名空间中的以下角色之一:

  • 监控规则编辑器:用于修改 MonitoringRule 自定义资源。申请 Monitoring Rule Editor (monitoringrule-editor) 角色。
  • Monitoring Rule Viewer:查看 MonitoringRule 自定义资源。请求 Monitoring Rule Viewer (monitoringrule-viewer) 角色。

如需详细了解角色分配,请参阅预定义角色说明

创建规则

您可以使用 GDC 控制台(首选方法)创建提醒规则,也可以在项目命名空间中使用 Observability API 部署自定义资源。

控制台

请按以下步骤操作,通过 GDC 控制台创建提醒规则:

  1. 在 GDC 控制台中,选择一个项目。
  2. 在导航菜单中,依次点击操作 > 提醒
  3. 点击提醒政策标签页。
  4. 点击创建规则组
  5. 选择是要为指标还是日志创建组。 指标规则会根据系统监控数据发送提醒,而日志记录规则会根据系统日志记录数据发送提醒。
  6. 提醒规则组名称字段中,输入组的名称。
  7. 规则评估间隔字段中,输入每个间隔的秒数。
  8. 限制字段中,输入提醒数量上限。输入 0 表示提醒次数不受限制。
  9. 提醒规则部分中,点击创建提醒规则
  10. 为提醒规则输入一个名称。
  11. 输入提醒规则的表达式:

    • 对于系统日志记录规则,请输入 LogQL(日志查询语言)表达式。
    • 对于系统监控规则,请输入 PromQL(Prometheus 查询语言)表达式。

    此表达式的计算结果必须为 true 或 false 语句,用于确定提醒是否必须移至待处理状态。

  12. 时长字段中,输入秒数以定义有效提醒从待处理状态变为打开状态的时间。 注意:如果您将时长设置为值 0,可观测性系统会在满足条件后立即发送提醒。

  13. 严重程度字段中,选择严重程度,例如错误警告

  14. 输入一个用于标识相关资源的简称,例如 AISDHCP

  15. 输入一个提醒代码来标识提醒。

  16. 输入有助于解决问题的 runbook 网址或信息。

  17. 输入提醒消息或说明。

  18. 可选:点击添加标签,以键值对的形式添加标签。

  19. 可选:点击添加注解,以键值对形式添加注解。

  20. 点击保存以创建此规则。

  21. 点击创建以创建规则组。相应规则组会显示在提醒规则组列表中。

API

您可以在 GDC 中使用可观测性 API 通过部署自定义资源来创建系统监控和日志记录规则。MonitoringRuleLoggingRule 自定义资源包含一个或多个查询和表达式,用于构成条件、评估频率,以及(可选)满足条件的时长。

请按以下步骤操作,在项目命名空间中部署自定义资源,以创建提醒规则:

  1. 使用以下模板为自定义资源创建 YAML 文件,以用于监控或日志记录提醒规则:
  2. 在自定义资源的 namespace 字段中,输入您的项目命名空间。
  3. name 字段中,输入提醒规则配置的名称。
  4. 可选:如果您要为日志记录规则配置 LoggingRule 自定义资源,则可以在 source 字段中选择提醒的日志来源。例如,输入 operationalaudit 等值。
  5. interval 字段中,输入规则评估时间间隔的时长(以秒为单位)。
  6. 可选:在 limit 字段中,输入提醒数量上限。输入 0 表示提醒次数不受限制。
  7. 可选:如果您还想计算指标和配置记录规则,请在 recordRules 字段中输入以下信息:

    • record 字段中,输入录制内容名称。此值用于定义要将记录规则写入到的时序,并且必须是有效的指标名称。
    • expr 字段中,输入记录规则的表达式:

      • 对于系统日志记录规则,请输入 LogQL(日志查询语言)表达式。
      • 对于系统监控规则,请输入 PromQL(Prometheus 查询语言)表达式。

      此表达式必须解析为数值,才能记录为新指标。

    • 可选:在 labels 字段中,以键值对形式定义要添加或覆盖的标签。

  8. alertRules 字段中,输入以下信息以配置提醒规则:

    • alert 字段中,输入提醒名称。
    • expr 字段中,输入提醒规则的表达式:

      • 对于系统日志记录规则,请输入 LogQL 表达式。
      • 对于系统监控规则,请输入 PromQL 表达式。

      此表达式的计算结果必须为 true 或 false 语句,用于确定提醒是否必须移至待处理状态。

    • 可选:在 for 字段中,输入必须满足指定条件的时间(以秒为单位),才能将提醒从待处理状态转为打开状态。如果您未指定其他值,则默认时长为 0 秒。

    • labels 字段中,以键值对的形式定义要添加或覆盖的标签。以下标签是必需的:

      • severity:选择严重程度,例如 errorcriticalwarninginfo
      • code:输入提醒代码以标识提醒。
      • resource:输入一个用于标识相关资源的简称,例如 AISDHCP
    • 可选:在 annotations 字段中,以键值对形式添加注释。

  9. 保存自定义资源的 YAML 文件。

  10. 在管理员集群的项目命名空间中部署自定义资源,以创建提醒规则。

通过自定义资源配置系统日志记录和监控规则

此部分包含您必须使用的 YAML 模板,以便通过部署自定义资源来创建提醒规则。如果您通过 GDC 控制台创建提醒,则可以跳过本部分。

MonitoringRule 自定义资源

如需创建系统监控规则,您必须创建 MonitoringRule 自定义资源。MonitoringRule 包含记录规则和提醒规则,用于描述发送提醒的条件。

以下 YAML 文件展示了 MonitoringRule 自定义资源的模板:

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing metrics.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # These rules save their result as a new set of time series.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define PromQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    #     additional labels are optional
    labels:
      severity: error
      code: 202
      resource: AIS
      <label_key>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_key>: <label_value>

PROJECT_NAMESPACE 替换为项目的命名空间。

LoggingRule 自定义资源

如需创建系统日志记录规则,您必须创建 LoggingRule 自定义资源。LoggingRule 包含记录规则和提醒规则,用于描述发送提醒的条件。

# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit Logs)
  # Optional. Default: Operational
  source: operational

  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing logs.
  # Recording rules generate metrics based on logs.
  # Use recording rules for complex alerts, which query the same expression repeatedly every time they are evaluated.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: warning
      code: 202
      resource: AIS
      <label_name>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_name>: <label_value>

PROJECT_NAMESPACE 替换为项目的命名空间。