日誌投遞功能是雲原生網關結合阿里雲Log ServiceSLS提供的服務。開啟日誌投遞後,您可以通過分析雲原生網關的訪問日誌瞭解用戶端使用者行為、用戶端使用者的地區分布,以便排查問題。本文介紹如何為MSE雲原生網關開啟日誌投遞。
前提條件
-
已建立雲原生網關執行個體。具體操作,請參見建立雲原生網關。
-
已開通Log Service,若未開通,請使用阿里雲帳號登入Log Service控制台進行開通。更多資訊,請參見什麼是Log Service。
MSE產品不收取日誌費用,但Log ServiceSLS將根據您的使用量收費。關於SLS的計費方式,請參見隨用隨付。
開啟日誌投遞
-
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
-
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關執行個體ID。
-
在左側導覽列,單擊参数配置。在可观测性参数地區,單擊日志投递右側的編輯按鈕
,在日誌投遞配置對話方塊中開啟启用日志投递(开启后网关的访问日志会投递到日志服务)開關。開啟日誌投遞以後,在可观测性参数地區,單擊Project右側的連結,系統會自動跳轉到該網關對應投遞的日誌庫。更多內容,請參見查詢與分析快速指引。
排障:外掛程式日誌無內容
已開啟日誌投遞,但外掛程式日誌查詢無內容時,可按以下步驟排查:
-
拉長查詢時間範圍:確保查詢時間範圍覆蓋請求發生的時間段。SLS 日誌投遞存在秒級到分鐘級延遲,可適當擴大查詢時間視窗。
-
確認外掛程式已被請求調用:在網關訪問日誌中尋找對應請求記錄。如果訪問日誌中沒有該請求,說明請求未到達外掛程式,請檢查路由配置。
-
檢查外掛程式代碼的日誌輸出邏輯:確認業務請求執行到了日誌輸出語句。即使日誌投遞正常,如果外掛程式代碼中的條件分支未命中日誌輸出語句,外掛程式日誌中也不會有內容。
日誌投遞欄位說明
|
欄位名 |
類型 |
含義 |
|
__time__ |
long |
日誌產生的時間。 |
|
cluster_id |
string |
購買的網關執行個體。 |
|
consumer |
string |
請求消費者,開啟消費者鑒權功能時有效。 |
|
custom_log |
json |
用於存放使用者自訂的日誌欄位,可配合自訂外掛程式使用。 |
|
authority |
string |
請求報文中的Host Header。 |
|
bytes_received |
long |
請求的Body大小(不包含Header)。 |
|
bytes_sent |
long |
響應的Body大小(不包含Header)。 |
|
downstream_local_address |
string |
網關Pod地址。 |
|
downstream_remote_address |
string |
串連到網關的Client端地址。 |
|
downstream_transport_failure_reason |
string |
Downstream傳輸失敗原因。 |
|
duration |
long |
請求的整體耗時。包含從網關收到來自下遊的第一個位元組開始,到發送出最後一個響應位元組為止的時間段。單位毫秒。 |
|
method |
string |
HTTP方法。 |
|
path |
string |
HTTP請求中的Path。 |
|
protocol |
string |
HTTP的協議版本。 |
|
request_id |
string |
網關會為每次請求產生一個ID,並放在Header的 |
|
requested_server_name |
string |
SSL串連時使用的Server Name。 |
|
request_duration |
long |
從網關收到來自下遊的第一個位元組開始,到收到來自下遊的最後一個位元組為止的時間段。單位毫秒。 |
|
response_code |
long |
HTTP響應的狀態代碼。 |
|
response_code_details |
string |
提供與響應碼相關的額外資訊。例如via_upstream表示響應碼是由後端服務返回的,route_not_found表示請求沒有匹配的路由。 |
|
response_flags |
string |
響應失敗的原因。 |
|
response_tx_duration |
long |
從網關收到來自上遊的第一個位元組開始,到給下遊發送出最後一個位元組為止的時間段。單位毫秒。 |
|
route_name |
string |
路由名。 |
|
start_time |
string |
請求開始時間。格式:UTC。 |
|
trace_id |
string |
Trace ID。 |
|
upstream_cluster |
string |
上遊叢集。 |
|
upstream_host |
string |
上遊IP。 |
|
upstream_local_address |
string |
本地串連上遊的地址。 |
|
upstream_protocol |
string |
請求後端服務時的協議。 |
|
upstream_service_time |
long |
上遊服務處理請求的耗時(毫秒),包括網關訪問上遊服務的網路耗時和上遊服務自身處理耗時兩部分。 |
|
upstream_transport_failure_reason |
string |
上遊連結失敗的原因。 |
|
user_agent |
string |
HTTP Header中的UserAgent。 |
|
x_forwarded_for |
string |
HTTP Header中的 |
|
ext_authz_status_code |
long |
自訂鑒權服務響應碼。 |
|
ext_authz_duration |
long |
自訂鑒權服務RT。 |
日誌格式調整
如需在訪問日誌中記錄自訂欄位(如 Referer),可通過日誌格式調整功能配置:
-
在網關詳情頁面,單擊左側導覽列的参数配置。
-
在可观测性参数地區,找到日誌投遞下的日誌格式調整。
-
單擊預設格式(單擊自訂),在彈出的對話方塊中單擊新增一條。
-
選擇欄位類型為要求標頭,輸入欄位值,例如 Referer。
-
單擊確定儲存。狀態變為自訂格式(單擊編輯)。
配置完成後,發送帶 Referer 要求標頭的請求,訪問日誌的request_headers欄位將包含 Referer 值。日誌格式調整支援的欄位類型:要求標頭、回應標頭、請求動態中繼資料、響應動態中繼資料。
請求失敗原因說明
請求失敗的原因主要通過日誌中Response_Flag的值判斷。以下是關於Response_Flag不同值的說明。
下遊指用戶端,上遊指後端服務。
-
UH:上遊叢集中,沒有健康的上遊主機。
-
UF:上遊串連失敗。
-
NR:給定請求未配置路由。當請求未匹配路由時(
response_flags=NR,response_code_details=route_not_found),response_code為 404,route_name與upstream_cluster顯示為“-”。請求在網關層被拒絕,未到達後端服務,upstream_cluster及所有upstream_*欄位均為空白,屬正常現象,無需排查上遊叢集配置。排查建議:檢查請求路徑是否已配置對應路由規則。 -
URX:請求被拒絕,因為達到了上遊重試限制(HTTP)或最大串連嘗試次數(TCP)。
-
NC:無法找到上遊叢集。
-
DT:請求或串連超過了
max_connection_duration或max_downstream_connection_duration。 -
DC:下遊串連終止。
-
LH:本地服務未通過健全狀態檢查請求。
-
UT:上遊請求逾時。
-
LR:串連本地重設。
-
UR:上遊遠程重設。
-
UC:上遊串連終止。
-
DI:請求處理被延遲一段時間,該延遲時間由故障注入指定。
-
FI:請求被故障注入指定的響應碼中止。
-
RL:請求在本地被HTTP速率限制過濾器限制,除了429響應碼之外。
-
UAEX:請求被外部授權服務拒絕。
-
RLSE:請求被拒絕,因為速率限制服務出現錯誤。
-
IH:請求被拒絕,因為在嚴格檢查的標題中設定了無效值。
-
SI:Stream流空閑逾時。
-
DPE:下遊請求存在HTTP協議錯誤。
-
UPE:上遊響應存在HTTP協議錯誤。
-
UMSDR:上遊請求達到了最大流程期間。
-
OM:超負荷管理器終止了請求。
-
DF:請求因DNS解析失敗而終止。