使用遥测 API 自定义 Istio 指标
遥测 API 已经作为 Istio 的一等公民 API 存在相当一段时间了。以前,用户必须在 Istio 配置的 telemetry
部分配置指标。
本任务向您展示如何使用遥测 API 自定义 Istio 生成的指标。
开始之前
在您的集群中安装 Istio并部署应用程序。
遥测 API 不能与 EnvoyFilter
同时使用。有关更多详细信息,请查看此问题。
从 Istio 版本
1.18
开始,PrometheusEnvoyFilter
将默认不会安装,而是使用meshConfig.defaultProviders
来启用它。应使用遥测 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: upstream_peer.labels['app'].value - match: metric: REQUEST_COUNT mode: SERVER tagOverrides: source_x: value: downstream_peer.labels['app'].value 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 示例,请在您的网络浏览器中访问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
,并验证它是否包含您的新维度。