标签指标

准备工作

如需获得标记指标或查看指标标签所需的权限,请让项目 IAM 管理员为您授予项目命名空间中的以下角色之一:

  • 监控目标编辑器:用于修改 MonitoringTarget 自定义资源。申请 Monitoring Target Editor (monitoringtarget-editor) 角色。
  • 监控目标查看器:查看 MonitoringTarget 自定义资源。请求 Monitoring Target Viewer (monitoringtarget-viewer) 角色。

借助标签,您可以区分指标的特征。除了收集指标之外,您还可以使用 MonitoringTarget 自定义资源为指标添加标签,以实现以下可选功能:

如需详细了解指标重新标记,请参阅 https://grafana.com/blog/2022/03/21/how-relabeling-in-prometheus-works/

将指标发送到其他项目

容器作者可以在代码中写入系统必须将特定指标发送到另一个项目以进行系统监控,即使该项目对应于不同的 GDC 角色也是如此。如需将指标发送到特定项目,请在代码中向指标添加 _gdch_project 标签。将其值设置为您希望拥有相应可观测性指标的项目名称。例如 "_gdch_project": "another-project-name"

或者,您也可以使用 MonitoringTarget 自定义资源,将收集的所有指标数据发送到另一个项目,以实现数据可观测性。为此,请将 _gdch_project 标签设置为 metricsRelabelings 字段中的目标标签,并确定替换值。

以下代码示例展示了如何在 MonitoringTarget 自定义资源中将 _gdch_project 标签值替换为 another-project-name

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        targetLabel: _gdch_project
        replacement: another-project-name

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

向指标添加新标签

标签有助于实现数据可观测性和系统监控,因为它们可让您识别指标的不同特征。您可以向被抓取的容器最初未公开的指标添加新标签。在 MonitoringTarget 自定义资源中,将新标签设置为目标,并建立一个替换项作为标签的值。系统会将新的键值对添加到自定义资源为实现数据可观测性而收集的所有指标中。

以下代码示例展示了如何在 MonitoringTarget 自定义资源中添加 my_new_label 标签并将其值设置为 my_label_value

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        targetLabel: my_new_label
        replacement: my_label_value

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

重命名指标

您可以从 MonitoringTarget CR 完全重命名容器生成的指标。在 metricsRelabelings 字段中设置指标的原始名称及其替换名称。自定义资源会将原始指标名称作为正则表达式,并将其替换为您添加的新名称。

以下代码示例展示了如何在 MonitoringTarget CR 中将 cpu_usage 指标名称替换为 cpu_usage_new_name

apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringTarget
metadata:
  # Choose the same namespace as the workload pods
  namespace: PROJECT_NAMESPACE
  name: string
spec:
  ...
  podMetricsEndpoints:
    ...
    metricsRelabelings:
      ...
      - action: replace
        regex: cpu_usage
        replacement: cpu_usage_new_name
        sourceLabels: [__name__]
        targetLabel: __name__

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