自定义 Istio 指标

    Istio 生成各种 dashboard 使用的遥测数据,以帮助您可视化您的网格。 例如,支持 Istio 的 dashboard 包括:

    默认情况下,Istio 定义并生成一组标准指标(例如: ),但您也可以自定义它们并创建新指标。

    Istio 使用 Envoy 代理生成指标并在 manifests/charts/istio-control/istio-discovery/templates/telemetryv2_1.16.yaml 文件的 EnvoyFilter 中提供配置。

    配置自定义统计信息涉及 EnvoyFilter 的两个部分: definitionsmetrics。 在 definitions 部分支持用名字、期望值表达式和指标类型(countergaugehistogram )创建新的指标。 在 metrics 的部分以表达式的形式提供指标维度的值,并允许您删除或覆盖现有的指标维度。 您可以调整标准指标定义, 利用 tags_to_remove 或重新定义维度。 这些配置设置也用 istioctl 安装选项公开, 允许您为网关和边车以及入站或出站方向自定义不同的指标。

    有关详细信息,请参阅。

    在集群中并部署应用程序。 或者,您可以设置自定义统计作为 Istio 安装的一部分。

    Bookinfo示例应用程序在整个任务中用作示例应用程序。

    1. 要自定义遥测 v2 指标,例如,添加request_hostdestination_port 维度到两者发出的 requests_total 指标 入站和出站方向的网关和边车,请更改安装选项,如下所示:

      您只需为要自定义的设置指定配置。 例如,仅自定义边车入站 requests_count 指标,您可以省略 配置中的 outboundSidecargateway 部分。 未指定设置将保留默认配置,相当于上面显示的显式设置。

      1. apiVersion: install.istio.io/v1alpha1
      2. kind: IstioOperator
      3. spec:
      4. values:
      5. v2:
      6. prometheus:
      7. configOverride:
      8. inboundSidecar:
      9. - name: requests_total
      10. dimensions:
      11. destination_port: string(destination.port)
      12. request_host: request.host
      13. outboundSidecar:
      14. metrics:
      15. - name: requests_total
      16. dimensions:
      17. request_host: request.host
      18. gateway:
      19. metrics:
      20. - name: requests_total
      21. dimensions:
      22. destination_port: string(destination.port)
      23. request_host: request.host
    2. 使用以下命令将以下注释应用到所有注入的 Pod 以及要提取到 Prometheus 时间序列中的维度列表:

      仅当您的维度不在 才需要此步骤

      要在网格范围内启用额外的标签,您可以添加 extraStatTags 到网格配置中:

      1. meshConfig:
      2. defaultConfig:
      3. extraStatTags:
      4. - destination_port
      5. - request_host

    将流量发送到网格。对于 Bookinfo 示例,请 http://$GATEWAY_URL/productpage 在您的网络浏览器中访问或发出以下命令:

    $GATEWAY_URL 是 Bookinfo 示例中设置的值。

      例如,在输出中,找到指标 istio_requests_total 并验证它是否包含您的新维度。

      代理开始应用配置可能需要很短的时间。如果未收到该指标,您可以在稍等片刻后重试发送请求,然后再次查找该指标。

      指标配置中的值是常用表达式,这意味着您 JSON 中的字符必须双引号(例如:”‘string value’”)。 与 Mixer 表达式语言不同,不支持 pipe () 运算符,但您 可以使用 hasin 操作符来模拟它,例如:

      有关详细信息,请参阅通用表达式语言

      Istio 公开了所有标准 。 对等元数据可用作出站属性 upstream_peer 和入站属性 downstream_peer ,具有以下字段:

      例如,要在出站配置中使用的对等 app 标签的表达式是 upstream_peer.labels['app'].value

      有关详细信息配置参考