自訂 Istio 指標
此任務將說明如何自訂 Istio 產生的指標。
Istio 會產生遙測資料,供各種儀表板使用,以幫助您視覺化您的網格。例如,支援 Istio 的儀表板包括:
預設情況下,Istio 定義並產生一組標準指標(例如 requests_total
),但您也可以使用 遙測 API 自訂它們並建立新的指標。
開始之前
在您的叢集中安裝 Istio 並部署應用程式。或者,您可以設定自訂統計資料作為 Istio 安裝的一部分。
此任務中,將使用 Bookinfo 範例應用程式作為範例應用程式。有關安裝說明,請參閱部署 Bookinfo 應用程式。
啟用自訂指標
若要自訂遙測指標,例如將 request_host
和 destination_port
維度新增至閘道和 Sidecar 在輸入和輸出方向發出的 requests_total
指標,請使用以下方式:
$ cat <<EOF > ./custom_metrics.yaml
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: namespace-metrics
spec:
metrics:
- providers:
- name: prometheus
overrides:
- match:
metric: REQUEST_COUNT
tagOverrides:
destination_port:
value: "string(destination.port)"
request_host:
value: "request.host"
EOF
$ kubectl apply -f custom_metrics.yaml
驗證結果
將流量發送到網格。對於 Bookinfo 範例,請在您的 Web 瀏覽器中訪問 http://$GATEWAY_URL/productpage
或執行以下命令:
$ curl "http://$GATEWAY_URL/productpage"
使用以下命令驗證 Istio 是否為您的新維度或修改過的維度產生資料:
$ kubectl exec "$(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -c istio-proxy -- curl -sS 'localhost:15000/stats/prometheus' | grep istio_requests_total
例如,在輸出中,找到指標 istio_requests_total
並驗證它是否包含您的新維度。
使用運算式取得值
指標設定中的值是常見的運算式,這表示您必須在 JSON 中使用雙引號來括住字串,例如 “'字串值'”。 與 Mixer 運算式語言不同,不支援管道符號 (|
) 運算子,但您可以使用 has
或 in
運算子來模擬它,例如:
has(request.host) ? request.host : "unknown"
如需更多資訊,請參閱 通用運算式語言。
Istio 會公開所有標準 Envoy 屬性。對等中繼資料可用作輸出方向的 upstream_peer
和輸入方向的 downstream_peer
屬性,包含以下欄位:
欄位 | 類型 | 值 |
---|---|---|
名稱 | 字串 | Pod 的名稱。 |
命名空間 | 字串 | Pod 執行的命名空間。 |
標籤 | 映射 | 工作負載標籤。 |
擁有者 | 字串 | 工作負載擁有者。 |
工作負載名稱 | 字串 | 工作負載名稱。 |
平台中繼資料 | 映射 | 具有前綴鍵的平台中繼資料。 |
istio_version | 字串 | Proxy 的版本識別碼。 |
mesh_id | 字串 | 網格的唯一識別碼。 |
app_containers | list<string> | 應用程式容器的簡短名稱清單。 |
cluster_id | 字串 | 此工作負載所屬的叢集識別碼。 |
例如,要在輸出設定中使用的對等 app
標籤的運算式為 upstream_peer.labels['app'].value
。
清除
若要刪除 Bookinfo
範例應用程式及其設定,請參閱 Bookinfo
清理。