適用於容器的應用程式閘道診斷記錄
瞭解如何針對適用於容器的應用程式閘道常見問題進行疑難排解。
您可以透過下列方式來監視 適用於容器的 Azure 應用程式閘道資源:
記錄:記錄能夠儲存效能、存取和其他資料,或從資源取用記錄以便進行監視。
計量:適用於容器的應用程式閘道有數個計量可協助您確認系統是否如預期執行。
診斷記錄
您可以在 Azure 中使用不同類型的記錄來管理和針對適用於容器的應用程式閘道進行疑難排解。 您可以透過入口網站存取其中一些記錄。 可以從 Azure Blob 儲存體擷取所有記錄,並且在不同的工具中進行檢視 (例如 Azure 監視器記錄、Excel 和 Power BI)。 您可以從下列清單進一步了解不同類型的記錄:
- 活動記錄:您可以使用 Azure 活動記錄 (之前稱為「作業記錄和稽核記錄」) 來檢視提交至您的 Azure 訂用帳戶的所有作業及其狀態。 預設會收集活動記錄,您可在 Azure 入口網站中檢視它們。
- 存取記錄:您可以使用此記錄來檢視適用於容器的應用程式閘道存取模式並分析重要資訊。 這包含呼叫者的 IP、所要求的 URL、回應延遲、傳回碼,以及輸入和輸出位元組。每隔 60 秒會收集一次存取記錄。 資料可能會儲存在啟用記錄時指定的儲存體帳戶中。
設定存取記錄
每個 Resource Manager 資源都會自動啟用活動記錄功能。 您必須啟用存取記錄功能,才能開始收集可透過這些記錄取得的資料。 若要啟用記錄,您可以在 Azure 監視器中設定診斷設定。
使用下列步驟,藉由 Azure 入口網站,針對適用於容器的應用程式閘道啟用全部記錄。 您必須在與適用於容器的應用程式閘道相同的區域中有可用的儲存體帳戶。
使用您的 Azure 帳戶登入 Azure 入口網站 。
在 [搜尋資源、服務和文件] 中,輸入適用於容器的應用程式閘道,然後選取適用於容器的應用程式閘道名稱。
在 [監視] 下方,選取 [診斷設定]。
選取 [新增診斷設定]。
輸入診斷設定名稱 (例如:agfc-logs),選擇要儲存的記錄和計量,然後選擇目的地,例如封存至儲存體帳戶。 若要儲存全部記錄,請選取 allLogs 和 AllMetrics。
選取 [儲存] 以儲存您的設定。 請參閱下列範例:
注意
一開始啟用診斷記錄之後,最多可能需要一小時的時間,您選取的目的地才會提供記錄。
如需詳細資訊和 Azure 監視器部署教學課程,請參閱 Azure 監視器中的診斷設定。
存取記錄格式
容器應用程式閘道中的每個存取記錄項目都包含下列資訊。
值 | Description |
---|---|
backendHost | 具有附加連接埠的後端目標位址。 例如 <ip>:<port> |
backendIp | 容器的後端目標應用程式閘道 IP 位址會提出要求。 |
backendPort | 後端目標的連接埠號碼。 |
backendResponseLatency | 從容器的應用程式閘道接收第一個位元組到後端目標的時間,以毫秒為單位。 |
backendTimeTaken | 將回應從後端目標傳輸到容器應用程式閘道的時間,以毫秒為單位。 |
clientIp | 對容器應用程式閘道前端發出要求的用戶端所用的 IP 位址 |
frontendName | 從用戶端接收要求的容器前端所用的應用程式閘道名稱 |
frontendPort | 容器應用程式閘道接聽要求的連接埠號碼 |
frontendTLSFailureReason | 包含 TLS 協商失敗原因的資訊。 通常用於了解用戶端相互驗證的失敗驗證要求 |
frontendTLSPeerFingerprint | 用戶端提供給容器應用程式閘道前端的憑證指紋(指紋) |
hostName | 容器應用程式閘道從用戶端接收的主機標頭值 |
httpMethod | 根據 RFC 7231,容器的應用程式閘道從用戶端接收的要求 HTTP 方法。 |
httpStatusCode | 從容器的應用程式閘道傳回至用戶端的 HTTP 狀態代碼 |
httpVersion | 容器應用程式閘道從用戶端接收的要求 HTTP 版本 |
訪客來源 | 容器應用程式閘道從用戶端接收的要求所用的參考者標頭 |
requestBodyBytes | 容器應用程式閘道從用戶端接收的要求所用的主體承載位元組大小 |
requestHeaderBytes | 依容器應用程式閘道從用戶端接收的要求所用的標頭位元組大小 |
requestUri | 容器應用程式閘道從用戶端接收的要求所用的 URI (URL 的 <protocol>://<host> 之後的全部項目) |
responseBodyBytes | 容器應用程式閘道傳回給用戶端的回應主體承載位元組大小 |
responseHeaderBytes | 容器應用程式閘道傳回給用戶端的回應標頭位元組大小 |
timeTaken | 容器應用程式閘道接收用戶端要求的時間 (以毫秒為單位),以及從容器的應用程式閘道傳回給用戶端的最後一個位元組 |
tlsCipher | 容器前端的用戶端和應用程式閘道之間交涉的 TLS 加密套件 |
TlsProtocol | 容器前端的用戶端和應用程式閘道之間交涉的 TLS 版本 |
trackingId | 由容器的應用程式閘道產生 GUID,以協助追蹤和偵錯。 這個值會與從容器的應用程式網路閘道傳回給用戶端的 x-request-id 標頭相互關聯。 |
userAgent | 容器應用程式閘道從用戶端接收的要求所用的使用者代理程式標頭 |
注意
requestUri 欄位中記錄的查詢字串參數值,例如 "secret"、"password"、"pwd"、"passwd"、"key"、"token"、"pat"、"accesskey"、"accesstoken"、"credential"、"sas"、"personalAccessToken" 和 "personal.access.token" 等將會取代為 <redacted> 值,以避免記錄敏感資訊。 這是無法設定的。
以下是以 JSON 格式對儲存體帳戶發出的存取記錄範例。
{
"category": "TrafficControllerAccessLog",
"operationName": "ReqRespLogs",
"properties": {
"backendHost": "10.1.0.15:80",
"backendIp": "10.1.0.15",
"backendPort": "80",
"backendResponseLatency": "2",
"backendTimeTaken": "-",
"clientIp": "xxx.xxx.xxx.xxx:52526",
"frontendName": "frontend-primary",
"frontendPort": "443",
"frontendTLSFailureReason": "-",
"frontendTLSPeerFingerprint": "2c01bbc93009ad1fc977fe9115fae7ad298b665f",
"hostName": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fzXX.alb.azure.com",
"httpMethod": "GET",
"httpStatusCode": "200",
"httpVersion": "HTTP\/1.1",
"referer": "-",
"requestBodyBytes": "0",
"requestHeaderBytes": "223",
"requestUri": "\/index.php",
"responseBodyBytes": "91",
"responseHeaderBytes": "190",
"timeTaken": "2",
"tlsCipher": "TLS_AES_256_GCM_SHA384",
"tlsProtocol": "-",
"trackingId": "0ef125db-7fb7-48a0-b3fe-03fe0ffed873",
"userAgent": "curl\/7.81.0"
},
"resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/YYYYYY/PROVIDERS/MICROSOFT.SERVICENETWORKING/TRAFFICCONTROLLERS/ZZZZZZZ",
"time": "2023-07-22T06:26:58.895Z",
"location": "northcentralus"
}