通过日志创建指标

本页介绍了如何在 Google Distributed Cloud (GDC) 空气隔离环境中部署 LoggingRule 自定义资源,从而根据现有日志生成新指标。

通过记录规则,您可以预先计算常用表达式或计算成本高昂的表达式,从而提高信息中心和提醒的性能。这些规则在 LoggingRule 自定义资源中定义,可根据现有日志生成新的时序指标,从而增强数据可观测性。

通过存储预先计算的结果,记录规则可在每次需要表达式时消除冗余计算。此方法可显著缩短查询时间,尤其适用于需要重复评估同一表达式的复杂信息中心和提醒。从本质上讲,借助 LoggingRule 资源,您可以在记录规则中指定必要的计算,从而从现有的日志记录数据中派生出新的指标。

准备工作

如需获得管理LoggingRule自定义资源所需的权限,请让组织 IAM 管理员或项目 IAM 管理员向您授予关联的LoggingRule角色之一。

根据您需要的访问权限级别,您可以在组织或项目中获得此资源的创建者、编辑者或查看者角色。如需了解详情,请参阅准备 IAM 权限

创建录制规则

如需创建记录规则,请为记录的日志定义一个名称,并定义一个可生成数值的有效表达式。此表达式在求值时会生成新的指标。在 Management API 服务器上,于项目命名空间中部署 LoggingRule 自定义资源,以激活记录规则。

如需详细了解记录规则,请参阅 https://grafana.com/docs/loki/latest/rules/

请按照以下步骤在项目命名空间中创建记录规则:

  1. 确定要从中创建录制规则的 GDC 项目。
  2. 创建一个 YAML 文件,用于定义 LoggingRule 自定义资源。

    完整的 LoggingRule 规范展示了基于日志的记录规则示例。如需了解详情,请参阅 API 参考文档

  3. 根据需要替换 YAML 文件中的以下值:

    字段名称 说明
    namespace 项目命名空间。
    name 规则配置的名称。
    source 记录规则的日志来源。有效选项包括 operationalaudit
    interval 规则评估间隔的时长(以秒为单位)。
    limit 可选。提醒数量上限。设置为 0 表示提醒次数不受限制。
    recordRules 用于计算新指标的定义。
    recordRules.record 新指标的记录名称。该值必须是有效的指标名称,用于定义存储结果的时序。
    recordRules.expr 日志规则的 LogQL 表达式,其计算结果必须为数值。
    recordRules.labels 可选。要添加到新指标或覆盖新指标的标签的键值对。
  4. 保存 YAML 文件。

  5. LoggingRule 配置应用于与记录规则位于同一命名空间中的 Management API 服务器:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_RULE_NAME.yaml
    

    替换以下内容:

    • KUBECONFIG_PATH:管理 API 服务器的 kubeconfig 文件的路径。
    • LOGGING_RULE_NAMELoggingRule 定义文件的名称。

完整 LoggingRule 规范

LoggingRule 自定义资源包含记录规则,这些规则描述了基于现有日志创建新指标以实现可观测性的条件。

以下 YAML 文件展示了 LoggingRule 自定义资源的模板。如需了解详情,请参阅 API 参考文档

# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_RULE_NAME
spec:
  # Choose the log source to base alerts on (operational or audit logs).
  # Optional.
  # Valid options: 'operational' and 'audit'
  # Default value: 'operational'
  source: operational

  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure recording rules to generate new metrics based on existing logs.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # Results are saved as a new set of time series.
  recordRules:
    # Define the time series where you want to write the recording rule.
    # The value must be a valid metric name.
  - record: MyMetricsName

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

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Optional.
    labels:
      verb: read

替换以下内容:

  • PROJECT_NAMESPACE:您的项目命名空间。
  • LOGGING_RULE_NAMELoggingRule 定义文件的名称。