使用遙測 API 自訂 Istio 指標
遙測 API 作為第一級 API 已在 Istio 中存在相當長的時間。先前,使用者必須在 Istio 組態的 telemetry
區段中設定指標。
此任務示範如何使用遙測 API 自訂 Istio 產生的指標。
開始之前
在您的叢集中安裝 Istio 並部署應用程式。
Telemetry API 無法與 EnvoyFilter
一起運作。更多詳細資訊請查看此issue。
從 Istio 版本
1.18
開始,PrometheusEnvoyFilter
將不會預設安裝,而是使用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: 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
並驗證它是否包含您的新維度。