5.6 KiB
title | description | weight | keywords | owner | test | |||
---|---|---|---|---|---|---|---|---|
使用 Telemetry API 自定义 Istio 监控指标 | 这个任务向您展示如何使用 Telemetry API 自定义 Istio 监控指标。 | 10 |
|
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
或重新定义维度来修改标准指标的定义。
-
从
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 >}}
-
为
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 >}}
禁用指标
-
通过以下配置禁用所有指标:
{{< 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 >}}
-
通过以下配置禁用
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 >}}
-
通过以下配置禁用客户端的
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 >}}
-
通过以下配置禁用服务端的
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 >}}