使用 Telemetry API 自定义 Istio 监控指标
Telemetry API 现在已经成为 Istio 中的主流API。
之前,用户必须在 Istio 监控配置部分 telemetry
指标。
本任务将向您展示如何使用 Telemetry API 自定义生成 Istio 的遥测指标。
开始之前
需要注意的是,Telemetry API 无法与 EnvoyFilter
一起使用。
有关更多详细信息,请查看此问题 issue。
从 Istio 版本
1.18
开始,Prometheus 的EnvoyFilter
默认不会被安装, 而是通过meshConfig.defaultProviders
来启用它。您应使用 Telemetry API 来进一步定制遥测流程。对于 Istio
1.18
之前的版本,您应该使用以下的IstioOperator
配置进行安装:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
values:
telemetry:
enabled: true
v2:
enabled: false
覆盖指标
metrics
部分提供了指标维度的表达式值,并允许您移除或覆盖现有的指标维度。
您可以使用 tags_to_remove
或重新定义维度来修改标准指标的定义。
从
REQUEST_COUNT
指标中删除grpc_response_status
标签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
为
REQUEST_COUNT
指标添加自定义标签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
禁用指标
通过以下配置禁用所有指标:
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
通过以下配置禁用
REQUEST_COUNT
指标: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
通过以下配置禁用客户端的
REQUEST_COUNT
指标: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
通过以下配置禁用服务端的
REQUEST_COUNT
指标: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
验证结果
发送流量到网格。对于 Bookinfo 示例,在 Web 浏览器中访问 http://$GATEWAY_URL/productpage
或发出以下命令:
$ curl "http://$GATEWAY_URL/productpage"
使用以下命令验证 Istio 是否为您的新文件生成了数据或者修改过的空间维度:
$ 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"'
$ istioctl x es "$(kubectl get pod -l app=details -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total
例如,输出结果中,找到指标 istio_requests_total
是否验证包含你的新空间维度。