使用 Telemetry API 自定义 Istio 监控指标

Telemetry API 现在已经成为 Istio 中的主流API。 之前,用户必须在 Istio 监控配置部分 telemetry 指标。

本任务将向您展示如何使用 Telemetry API 自定义生成 Istio 的遥测指标。

开始之前

在集群中安装 Istio 并部署一个应用。

需要注意的是,Telemetry API 无法与 EnvoyFilter 一起使用。 有关更多详细信息,请查看此问题 issue

  • 从 Istio 版本 1.18 开始,Prometheus 的 EnvoyFilter 默认不会被安装, 而是通过 meshConfig.defaultProviders 来启用它。您应使用 Telemetry API 来进一步定制遥测流程。

  • 对于 Istio 1.18 之前的版本,您应该使用以下的 IstioOperator 配置进行安装:

  1. apiVersion: install.istio.io/v1alpha1
  2. kind: IstioOperator
  3. spec:
  4. values:
  5. telemetry:
  6. enabled: true
  7. v2:
  8. enabled: false

覆盖指标

metrics 部分提供了指标维度的表达式值,并允许您移除或覆盖现有的指标维度。 您可以使用 tags_to_remove 或重新定义维度来修改标准指标的定义。

  1. REQUEST_COUNT 指标中删除 grpc_response_status 标签

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: remove-tags
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - providers:
    9. - name: prometheus
    10. overrides:
    11. - match:
    12. mode: CLIENT_AND_SERVER
    13. metric: REQUEST_COUNT
    14. tagOverrides:
    15. grpc_response_status:
    16. operation: REMOVE
  2. REQUEST_COUNT 指标添加自定义标签

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: custom-tags
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - overrides:
    9. - match:
    10. metric: ALL_METRICS
    11. mode: CLIENT
    12. tagOverrides:
    13. destination_x:
    14. value: upstream_peer.labels['app'].value
    15. - match:
    16. metric: ALL_METRICS
    17. mode: SERVER
    18. tagOverrides:
    19. source_x:
    20. value: downstream_peer.labels['app'].value
    21. providers:
    22. - name: prometheus

禁用指标

  1. 通过以下配置禁用所有指标:

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: remove-all-metrics
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - providers:
    9. - name: prometheus
    10. overrides:
    11. - disabled: true
    12. match:
    13. mode: CLIENT_AND_SERVER
    14. metric: ALL_METRICS
  2. 通过以下配置禁用 REQUEST_COUNT 指标:

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: remove-request-count
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - providers:
    9. - name: prometheus
    10. overrides:
    11. - disabled: true
    12. match:
    13. mode: CLIENT_AND_SERVER
    14. metric: REQUEST_COUNT
  3. 通过以下配置禁用客户端的 REQUEST_COUNT 指标:

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: remove-client
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - providers:
    9. - name: prometheus
    10. overrides:
    11. - disabled: true
    12. match:
    13. mode: CLIENT
    14. metric: REQUEST_COUNT
  4. 通过以下配置禁用服务端的 REQUEST_COUNT 指标:

    1. apiVersion: telemetry.istio.io/v1alpha1
    2. kind: Telemetry
    3. metadata:
    4. name: remove-server
    5. namespace: istio-system
    6. spec:
    7. metrics:
    8. - providers:
    9. - name: prometheus
    10. overrides:
    11. - disabled: true
    12. match:
    13. mode: SERVER
    14. metric: REQUEST_COUNT