【问题标题】:How to add new labels to existing prometheus metric in Istio?如何在 Istio 中为现有的 prometheus 指标添加新标签?
【发布时间】:2020-08-06 13:41:42
【问题描述】:

我正在尝试将新标签 source_ip 添加到普罗米修斯指标 requestcount
我已将属性添加到舞会处理程序

params:
    metrics:
    - instance_name: requestcount.instance.istio-system
      kind: COUNTER
      label_names:
      - reporter
      - source_ip
      - source_app

并向requestcount 实例添加维度

compiledTemplate: metric
  params:
    dimensions:
      reporter: conditional((context.reporter.kind | "inbound") == "outbound", "source", "destination")
      source_app: source.labels["app"] | "unknown"
      source_ip: source.ip | "unknown"

并向attributes 实例添加attribute_binding

spec:
  attributeBindings:
    destination.workload.namespace: $out.destination_workload_namespace | "unknown"
    destination.workload.uid: $out.destination_workload_uid | "unknown"
    source.ip: $out.source_pod_ip | ip("0.0.0.0")

然而,source_ip 标签未包含在 prometheus 报告的 istio_request_total 指标中,我在这里遗漏了什么吗?

【问题讨论】:

  • Istio 使用“kubernetes-pods”作业配置 prometheus。至少在使用“演示”配置文件时。在这个 prometheus 作业配置中,有一个 relabel_configs 用于获取 pod 标签。如果您想使用它,请使用 meshConfig.enablePrometheusMerge=true 选项,它会将标签附加到 istio 指标。对此有相关的documentation。请注意,此选项是 Istio 1.6 中新引入的,目前被视为 alpha。如果这能回答您的问题,请告诉我。
  • @jt97 我正在使用 istio 1.5,升级可能需要相当长的时间。我正在关注这个documentation 为指标添加一个新标签,但似乎不起作用。

标签: kubernetes prometheus istio


【解决方案1】:

关于您使用的混音器和文档

我正在使用 istio 1.5,升级可能需要相当长的时间。

您提到的 documentation 不适用于 istio 1.5,因为它使用了自 istio 1.5 以来已弃用的混音器,如下面的文档中所述,您可以重新启用它,但我找不到任何相关文档。

如提到的herehere

Mixer 已弃用。 Mixer 提供的功能正在转移到 Envoy 代理中。只有 Istio 1.7 版本才支持将 Mixer 与 Istio 一起使用。

混音器弃用

Mixer 是 istio-telemetry 和 istio-policy 部署背后的过程,已在 1.5 版本中弃用。从 Istio 1.3 开始,默认禁用 istio-policy,在 Istio 1.5 中默认禁用 istio-telemetry。

使用不需要 Mixer 的代理内扩展机制 (Telemetry V2) 收集遥测数据。

如果您依赖于特定的 Mixer 功能,例如进程外适配器,您可以重新启用 Mixer。在 Istio 1.7 之前,Mixer 将继续接收错误修复和安全修复。 Mixer 支持的许多功能都有 Mixer Deprecation 文档中指定的替代方案,包括基于 WebAssembly 沙箱 API 的代理内 extensions

如果您依赖的 Mixer 功能没有等效功能,我们鼓励您提出问题并在社区中讨论。


关于升级

关于升级,我会说如果是旧版本的 istio,那么升级可能会更困难,但由于它是 1.5,我会说使用 istioctl upgrade 升级到 1.6 可能很容易。我建议先在一些测试环境中对其进行测试。

关于主要问题

Istio 使用“kubernetes-pods”作业配置 prometheus。至少在使用“演示”配置文件时。在这个 prometheus 作业配置中,有一个 relabel_configs 用于获取 pod 标签。

relabel_configs: 
...
- action: labelmap
  regex: __meta_kubernetes_pod_label_(.+)

如果您想使用它,请使用 meshConfig.enablePrometheusMerge=true 选项,它会将标签附加到 istio 指标。有相关的documentation。请注意,此选项是 Istio 1.6 中新引入的,目前被视为 alpha。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2021-10-31
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多