服務網格ASM提供日誌、監控指標、鏈路追蹤維度可觀測配置功能。您可以通過ASM控制台為全域、命名空間或指定工作負載自訂相關配置,例如日誌輸出的格式、指標的維度、是否啟用特定監控指標、設定鏈路追蹤的採樣率等。本文介紹如何使用可觀測配置功能。
前提條件
作用範圍
類型 | 說明 |
全域 | 全域配置支援日誌、監控指標、鏈路追蹤設定。全域配置只有一份,無法刪除。僅全域配置支援鏈路追蹤設定。 |
命名空間 | 為命名空間建立專有的可觀測配置。每個命名空間只能有一份命名空間級可觀測配置。 |
自訂 | 通過工作負載選取器選定一個自訂配置的生效範圍。每個工作負載至多被一個自訂配置選中。 |
操作步驟
全域
命名空間
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在可觀測配置頁面,單擊命名空間頁簽,單擊建立,選擇目標命名空間,按需配置日誌和監控指標,然後單擊建立。
您可以單擊下表的連結,查看配置的詳細說明。
配置地區
說明
自訂
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在可觀測配置頁面,單擊自訂頁簽,選擇目標命名空間,單擊建立,輸入名稱和匹配標籤,按需配置日誌和監控指標,然後單擊建立。
您可以單擊下表的連結,查看配置的詳細說明。
配置地區
說明
日誌設定說明
日誌設定包括啟用或禁用訪問日誌輸出、設定日誌輸出形式、自訂日誌格式、日誌過濾。
啟用或禁用訪問日誌輸出
在日誌設定地區,按需開啟或關閉啟用日誌輸出開關。
開啟開關,服務網格資料平面Sidecar或網關會將訪問日誌輸出至容器標準輸出。
關閉開關,服務網格資料平面Sidecar或網關停止將日誌輸出到容器標準輸出。
在資料平面Sidecar容器的標準輸出查看日誌。
下文以使用kubectl查看訪問日誌為例進行說明。
執行以下命令,查看Sidecar日誌。
kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1
執行以下命令,查看入口網關日誌。
kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1
(可選)通過Container Service控制台查看訪問日誌。
如果您使用阿里雲Container Service叢集,還可以通過Container Service控制台查看訪問日誌。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在容器組頁面,單擊目標Pod名稱,然後在頁面下方單擊日誌頁簽,查看訪問日誌。
設定日誌輸出形式
該功能僅支援1.20.6.36及以上版本的ASM執行個體。關於升級執行個體的具體操作,請參見升級ASM執行個體。
在日誌設定地區,按需將日誌輸出形式設定為JSON或TEXT。
設定為JSON,訪問日誌將以JSON字串的形式輸出至容器標準輸出。
設定為TEXT,訪問日誌將以純文字字串的形式輸出至容器標準輸出。
自訂日誌格式
在日誌設定地區,按需選中欄位、修改自訂欄位資訊或在最下方日誌指標右側單擊表徵圖,新增日誌欄位。
只有開啟啟用日誌輸出開關,才能自訂日誌格式。在日誌格式地區,預設選中的日誌欄位為預設必選欄位,不支援修改。日誌欄位支援從請求Header、響應Header、Envoy內建值中取值。
下文以列印請求中的accept-encoding Header為例,配置變數名稱為accept-encoding,類型為請求屬性,變數值為Accept-Encoding。
執行以下命令,查看服務網格資料平面組件日誌。
kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto
可以看到步驟1新增的Accept-Encoding Header的值,已被輸出至訪問日誌。
日誌過濾
在日誌設定地區下方,按需選中啟用日誌過濾以啟用日誌過濾,然後在下方日誌運算式文字框輸入日誌過濾運算式。未能與運算式匹配的請求對應的訪問日誌將不會輸出。
例如,如果您希望只輸出Response Http Status >=400
的請求日誌,則運算式為response.code >= 400
。詳細資料,請參見CEL運算式和常用欄位。
CEL運算式和常用欄位
日誌過濾運算式為標準CEL(Common Expression Language)運算式。CEL運算式的常用欄位如下。更多資訊,請參見CEL和Envoy。
屬性 | 類型 | 說明 |
request.path | string | 請求路徑。 |
request.url_path | string | 不包含Query的請求路徑。 |
request.host | string | URL中的主機名稱部分。 |
request.method | string | 要求方法。 |
request.headers | map<string, string> | 以全小寫Header名索引的全部Request Header。 |
request.useragent | string | User Agent頭的值。 |
request.time | timestamp | 請求首個位元組到達的時間。 |
request.id | string | 請求ID。 |
request.protocol | string | 請求協議,取值為 |
request.query | string | 請求URL中的Query串。 |
response.code | int | HTTP響應的返回碼。 |
response.code_details | string | 響應代碼詳細資料。 |
response.grpc_status | int | 響應中的gRPC狀態代碼。 |
response.headers | map<string, string> | 以全小寫Header名索引的全部Response Header。 |
response.size | int | Response Body的大小,單位為byte。 |
response.total_size | int | Response訊息的完整大小,單位為byte。 |
監控指標設定說明
監控指標設定包括啟用或禁用監控指標產生、指標維度。
啟用或禁用監控指標產生
監控指標分為CLIENT側指標和SERVER側指標。
CLIENT側指標:Sidecar作為用戶端主動發起請求時所產生的指標資料,網關指標也屬於CLIENT類別。
SERVER側指標:Sidecar作為服務端被動接受訪問時所產生的指標資料。
在監控指標設定地區的CLIENT側指標或SERVER側指標列,按需選中或取消選中目標指標對應的啟用。
啟用指標:服務網格資料平面Sidecar或網關會將該指標通過15020連接埠的
/stats/prometheus
路徑進行暴露。不啟用指標:該指標不會通過上述連接埠進行暴露。
執行以下命令,查看Sidecar或網關暴露的監控指標。
您可以通過kubectl命令在Sidecar或網關容器內執行curl命令,訪問本地15020連接埠的
/stats/prometheus
路徑,查看匯出的監控指標。kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus|head -n 10
樣本輸出:
# TYPE istio_agent_cert_expiry_seconds gauge istio_agent_cert_expiry_seconds{resource_name="default"} 46725.287654548 # HELP istio_agent_endpoint_no_pod Endpoints without an associated pod. # TYPE istio_agent_endpoint_no_pod gauge istio_agent_endpoint_no_pod 0 # HELP istio_agent_go_gc_duration_seconds A summary of the pause duration of garbage collection cycles. # TYPE istio_agent_go_gc_duration_seconds summary istio_agent_go_gc_duration_seconds{quantile="0"} 5.0149e-05 istio_agent_go_gc_duration_seconds{quantile="0.25"} 9.8807e-05 ......
指標維度
指標攜帶的維度可以表達更豐富的資訊。您可以利用這些維度在Prometheus中篩選過濾出目標指標。例如,您可以通過source_app指標來篩選請求用戶端為特定應用的指標。
在監控指標設定地區的CLIENT側指標或SERVER側指標列,單擊已啟用指標對應的編輯維度。
在自訂CLIENT 維度配置對話方塊,按需選中或取消選中匯出指標的維度,然後單擊確認。
指標維度不支援新增。通過修改指標的維度,您可以選擇將一些不必要的指標維度禁用,以節約Prometheus的儲存空間。通常大多數維度都需要保留,因此監控指標設定地區僅展示被移除的維度。
鏈路追蹤設定說明
鏈路追蹤設定包括採樣百分比、自訂標籤。該功能僅支援全域配置。
採樣百分比
您可以自訂鏈路追蹤的採樣百分比,即觸發上報鏈路追蹤的請求的比例。設定為0表示關閉鏈路追蹤,沒有任何請求會觸發上報。
自訂標籤
您可以自訂上報的鏈路追蹤Span攜帶的標籤。在鏈路追蹤設定地區,單擊新增自訂標籤,配置名稱、類型和值。
類型取值包括固定值、請求Header和環境變數。類型的說明及標籤配置樣本如下。
類型 | 說明 | 標籤配置樣本 |
固定值 | 固定實值型別標籤的值將固定為您設定的值。 |
|
請求Header | 請求Header標籤的值將以您指定的請求Header的值作為標籤值。若Header在請求中不存在,則使用預設值作為標籤值。 例如,從Header User-Agent中擷取標籤值,當Header不存在時則將標籤值設定為預設值unknow。 |
|
環境變數 | 環境變數標籤將從工作負載的指定環境變數中擷取標籤值。若環境變數在工作負載中不存在,則使用預設值作為標籤值。 例如,從環境變數ENV中擷取標籤值,當環境變數不存在時則將標籤值設定為預設值unknow。 |
|