使用 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配置进行安装:
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 是否验证包含你的新空间维度。