istio.io/content/zh/docs/tasks/observability/metrics/telemetry-api/index.md

5.6 KiB
Raw Blame History

title description weight keywords owner test
使用 Telemetry API 自定义 Istio 监控指标 这个任务向您展示如何使用 Telemetry API 自定义 Istio 监控指标。 10
telemetry
metrics
customize
istio/wg-policies-and-telemetry-maintainers no

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 配置进行安装:

{{< text yaml >}} apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: values: telemetry: enabled: true v2: enabled: false {{< /text >}}

覆盖指标

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

  1. REQUEST_COUNT 指标中删除 grpc_response_status 标签

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-tags namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNT tagOverrides: grpc_response_status: operation: REMOVE {{< /text >}}

  2. REQUEST_COUNT 指标添加自定义标签

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: custom-tags namespace: istio-system spec: metrics: - overrides: - match: metric: REQUEST_COUNT mode: CLIENT tagOverrides: destination_x: value: filter_state.upstream_peer.app - match: metric: REQUEST_COUNT mode: SERVER tagOverrides: source_x: value: filter_state.downstream_peer.app providers: - name: prometheus {{< /text >}}

禁用指标

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

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-all-metrics namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: ALL_METRICS {{< /text >}}

  2. 通过以下配置禁用 REQUEST_COUNT 指标:

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-request-count namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNT {{< /text >}}

  3. 通过以下配置禁用客户端的 REQUEST_COUNT 指标:

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-client namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT metric: REQUEST_COUNT {{< /text >}}

  4. 通过以下配置禁用服务端的 REQUEST_COUNT 指标:

    {{< text yaml >}} apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-server namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: SERVER metric: REQUEST_COUNT {{< /text >}}

验证结果

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

{{< text bash >}} $ curl "http://$GATEWAY_URL/productpage" {{< /text >}}

{{< tip >}} $GATEWAY_URL 值设置在实例 Bookinfo 中。 {{< /tip >}}

使用以下命令验证 Istio 是否为您的新文件生成了数据或者修改过的空间维度:

{{< text bash >}} istioctl x es "(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total | grep -v TYPE |grep -v 'reporter="destination"' {{< /text >}}

{{< text bash >}} istioctl x es "(kubectl get pod -l app=details -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total {{< /text >}}

例如,输出结果中,找到指标 istio_requests_total 是否验证包含你的新空间维度。

{{< tip >}} 代理可能需要很短的时间才能开始应用配置。如果没有收到度量值,您可以在短暂等待后重试发送请求,并再次查找度量指标。 {{< /tip >}}