在 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 控制台创建提醒规则:
- 在 GDC 控制台中,选择一个项目。
- 在导航菜单中,依次点击操作 > 提醒。
- 点击提醒政策标签页。
- 点击创建规则组。
- 选择是要为指标还是日志创建组。 指标规则会根据系统监控数据发送提醒,而日志记录规则会根据系统日志记录数据发送提醒。
- 在提醒规则组名称字段中,输入组的名称。
- 在规则评估间隔字段中,输入每个间隔的秒数。
- 在限制字段中,输入提醒数量上限。输入
0
表示提醒次数不受限制。 - 在提醒规则部分中,点击创建提醒规则。
- 为提醒规则输入一个名称。
输入提醒规则的表达式:
此表达式的计算结果必须为 true 或 false 语句,用于确定提醒是否必须移至待处理状态。
在时长字段中,输入秒数以定义有效提醒从待处理状态变为打开状态的时间。 注意:如果您将时长设置为值
0
,可观测性系统会在满足条件后立即发送提醒。在严重程度字段中,选择严重程度,例如错误或警告。
输入一个用于标识相关资源的简称,例如
AIS
或DHCP
。输入一个提醒代码来标识提醒。
输入有助于解决问题的 runbook 网址或信息。
输入提醒消息或说明。
可选:点击添加标签,以键值对的形式添加标签。
可选:点击添加注解,以键值对形式添加注解。
点击保存以创建此规则。
点击创建以创建规则组。相应规则组会显示在提醒规则组列表中。
API
您可以在 GDC 中使用可观测性 API 通过部署自定义资源来创建系统监控和日志记录规则。MonitoringRule
或 LoggingRule
自定义资源包含一个或多个查询和表达式,用于构成条件、评估频率,以及(可选)满足条件的时长。
请按以下步骤操作,在项目命名空间中部署自定义资源,以创建提醒规则:
- 使用以下模板为自定义资源创建 YAML 文件,以用于监控或日志记录提醒规则:
- 如需创建系统监控规则并根据指标数据发送提醒,请使用
MonitoringRule
自定义资源。 - 如需创建系统日志记录规则并根据日志记录数据发送提醒,请使用
LoggingRule
自定义资源。
- 如需创建系统监控规则并根据指标数据发送提醒,请使用
- 在自定义资源的
namespace
字段中,输入您的项目命名空间。 - 在
name
字段中,输入提醒规则配置的名称。 - 可选:如果您要为日志记录规则配置
LoggingRule
自定义资源,则可以在source
字段中选择提醒的日志来源。例如,输入operational
或audit
等值。 - 在
interval
字段中,输入规则评估时间间隔的时长(以秒为单位)。 - 可选:在
limit
字段中,输入提醒数量上限。输入0
表示提醒次数不受限制。 可选:如果您还想计算指标和配置记录规则,请在
recordRules
字段中输入以下信息:在
alertRules
字段中,输入以下信息以配置提醒规则:- 在
alert
字段中,输入提醒名称。 在
expr
字段中,输入提醒规则的表达式:- 对于系统日志记录规则,请输入 LogQL 表达式。
- 对于系统监控规则,请输入 PromQL 表达式。
此表达式的计算结果必须为 true 或 false 语句,用于确定提醒是否必须移至待处理状态。
可选:在
for
字段中,输入必须满足指定条件的时间(以秒为单位),才能将提醒从待处理状态转为打开状态。如果您未指定其他值,则默认时长为0
秒。在
labels
字段中,以键值对的形式定义要添加或覆盖的标签。以下标签是必需的:severity
:选择严重程度,例如error
、critical
、warning
或info
。code
:输入提醒代码以标识提醒。resource
:输入一个用于标识相关资源的简称,例如AIS
或DHCP
。
可选:在
annotations
字段中,以键值对形式添加注释。
- 在
保存自定义资源的 YAML 文件。
在管理员集群的项目命名空间中部署自定义资源,以创建提醒规则。
通过自定义资源配置系统日志记录和监控规则
此部分包含您必须使用的 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 替换为项目的命名空间。