在使用CLB的七層負載平衡時,如果您需要進行業務開發測試、故障處理或使用者行為資料分析,您可使用CLB訪問日誌功能。CLB訪問日誌功能結合阿里雲Log Service,可協助您大幅提升日誌資料分析、故障定位處理的效率。
功能簡介
什麼是CLB訪問日誌
CLB訪問日誌功能收集所有發送到CLB的請求詳細資料,包括請求時間、用戶端IP地址、延遲、請求路徑和伺服器響應等。作為公網訪問入口,CLB承載海量訪問請求。您可以通過訪問日誌分析使用者行為、瞭解地區分布、進行問題排查等。
在開啟CLB訪問日誌後,您可以將訪問日誌儲存在Log Service(SLS)的日誌庫(Logstore)中,採集分析訪問日誌。您可以隨時刪除訪問日誌的配置。
CLB訪問日誌功能無需額外付費,您僅需支付Log Service的費用。計費可參考Log Service計費概述。
-
四層監聽(TCP/UDP)不支援訪問日誌功能,訪問日誌僅記錄七層(HTTP/HTTPS)請求資訊。
-
確保HTTP header的值不包含
||,否則可能導致日誌分割錯位。
使用限制
僅CLB的七層負載平衡(HTTP/HTTPS監聽)支援訪問日誌功能。
訪問日誌主要記錄七層請求資訊,故四層監聽(TCP/UDP)不支援開啟訪問日誌。
前提條件
-
已建立虛擬伺服器組。在伺服器組中已添加後端伺服器,並在後端伺服器中部署了應用服務。
-
您已經開通Log Service。
設定訪問日誌
-
在左側導覽列,選擇。
-
在頂部功能表列,選擇CLB執行個體所屬地區。
-
如果您是首次使用該功能,需要進行帳號授權。單擊立即授權,在彈出的雲資源訪問授權頁面單擊同意授權。
說明該操作只有在首次配置時需要執行。
如果您使用的是RAM使用者,需要阿里雲帳號進行授權。具體操作,請參見授權RAM使用者(子帳號)使用CLB訪問日誌。
-
在访问日志(7层)頁面,找到目標CLB執行個體,在操作列單擊設定。
-
在日誌設定面板,設定項目Project和日誌庫Logstore,然後單擊確定。
-
項目Project:專案(Project)是Log Service的資源嵌入式管理單元,用於資源隔離和控制。建議使用不同的Project管理不同的應用、產品或專案中的資料。
-
日誌庫Logstore:日誌庫(Logstore)是Log Service中日誌資料的採集、儲存和查詢單元。建議同個應用中不同類型的日誌建立獨立的Logstore。
-
選擇現有 Logstore:該功能會預設開啟選中的Logstore的分析儀錶盤,如果該Logstore已配置索引,配置會被覆蓋。
-
說明確保Project的名稱全域唯一,且Project的地區和Server Load Balancer執行個體的地區相同。
配置負載平衡訪問日誌後,您可以在Log Service中查詢、檢索以下欄位的日誌資訊。
欄位
說明
body_bytes_sent
發送給用戶端的http body的位元組數。
client_ip
請求用戶端IP地址。
client_port
請求用戶端連接埠。
host
優先從請求參數中擷取host,如果擷取不到則從host header取值,如果還是擷取不到則以處理請求的後端伺服器IP地址作為host。
http_host
請求報文host header的內容。
http_referer
負載平衡收到的請求報文中HTTP的referer header的內容。
http_user_agent
負載平衡收到的請求報文中http_user_agent header的內容。
http_x_forwarded_for
負載平衡收到的請求報文中x-forwarded-for header的內容。
http_x_real_ip
負載平衡收到的請求報文中HTTP的x-real-ip的內容。
read_request_time
負載平衡讀取請求的時間,單位:毫秒。
request_length
請求報文的長度,包括startline、http header和http body。
request_method
請求報文的方法。
request_time
負載平衡收到第一個請求報文的時間到SLB返回應答之間的間隔時間,單位:秒。
request_uri
負載平衡收到的請求報文的URI。
scheme
請求的scheme,包括http、https。
server_protocol
負載平衡收到的HTTP協議的版本,例如HTTP/1.0或HTTP/1.1。
slb_vport
負載平衡的監聽連接埠。
slbid
Server Load Balancer執行個體ID。
ssl_cipher
建立SSL串連使用的密碼,例如ECDHE-RSA-AES128-GCM-SHA256等。
ssl_protocol
建立SSL串連使用的協議,例如TLSv1.2。
status
負載平衡應答報文的狀態。
tcpinfo_rtt
用戶端TCP連線時間,單位:微秒。
time
日誌記錄時間。
upstream_addr
後端伺服器的IP地址和連接埠。
upstream_response_time
從與後端建立串連開始到接受完資料然後關閉串連為止的時間,單位:秒。
upstream_status
負載平衡收到的後端伺服器的響應狀態代碼。
vip_addr
虛擬IP地址。
write_response_time
負載平衡寫的回應時間,單位:毫秒。
-
查詢訪問日誌
訪問日誌配置完成後,您可以通過Log Service控制台查詢日誌。
-
在左側導覽列,選擇。
-
在頂部功能表列,選擇CLB執行個體所屬地區。
-
在访问日志(7层)頁面,在目標執行個體操作列單擊查看日誌,跳轉到Log Service頁面。
-
Log Service配置完成後,如有用戶端訪問過CLB執行個體可查看到對應的日誌資訊。
-
輸入SQL語句查詢特定的訪問日誌。
例如,輸入如下SQL語句查詢Top20的用戶端,用於分析請求訪問來源,輔助商業決策。
* | select http_user_agent, count(*) as pv group by http_user_agent order by pv desc limit 20例如,輸入如下SQL語句按來源IP和響應狀態代碼篩選日誌,用於查詢特定IP段的訪問請求。
* | select * where client_ip like '172.17.%' and status=200
通過訪問日誌識別異常外部請求
CLB訪問日誌會記錄所有經過Server Load Balancer執行個體的外部請求。當您在日誌中發現不明來源的請求時,可以通過以下關鍵字段判斷請求是否為異常外部存取,並採取相應的防護措施。
識別異常請求的關鍵字段
您可以結合以下日誌欄位綜合判斷請求是否來自異常外部客戶端:
-
client_ip:請求用戶端的IP地址。如果該IP不屬於您的業務系統或阿里雲內網IP段,則說明該請求來自外部客戶端。您可以通過IP歸屬地查詢工具進一步確認來源。 -
request_uri:請求的URI路徑。如果出現與您業務無關的路徑(例如掃描探測類路徑、其他雲端服務的API路徑等),通常表明該請求為異常外部存取。 -
request_method:請求的HTTP方法。如果您的業務僅使用GET請求,但日誌中出現大量PUT、DELETE等方法的請求,需要關注是否為異常行為。 -
http_user_agent:請求的User-Agent標識。自動化工具或爬蟲通常使用特定的User-Agent(例如curl、python-requests等),與正常瀏覽器訪問不同。
例如,您可以在Log Service中使用以下SQL語句查詢來自非預期IP的異常請求:
* | select client_ip, request_method, request_uri, count(*) as cnt group by client_ip, request_method, request_uri order by cnt desc limit 50
限制異常來源IP
確認異常請求的來源IP後,您可以通過CLB的存取控制功能配置黑名單,阻止這些IP的後續訪問。具體操作步驟如下:
-
在CLB控制台左側導覽列,選擇存取控制。
-
建立存取控制策略組,將從日誌中識別出的異常來源IP添加到策略組中。
-
在CLB執行個體的監聽配置中,將該策略組綁定為黑名單。綁定後,來自黑名單中IP的請求將被CLB直接拒絕,不再轉寄到後端伺服器。
分析訪問日誌
您可以通過Log Service的儀錶盤分析訪問日誌,儀錶盤提供更豐富的資料資訊。
-
在上述Log Service頁面,在左側導覽列選擇
,然後單擊儀錶盤列表。 -
單擊CLB對應訪問日誌的名稱slb_layer7_access_center_en,查看分析報表。
關閉訪問日誌
您可以通過關閉訪問日誌,不再收集CLB的訪問日誌。
CLB執行個體關閉日誌記錄後,對應的日誌Project和Logstore不會被刪除,該執行個體的歷史日誌資訊也不會立即刪除,您仍可以在SLS中管理歷史日誌。
-
在左側導覽列,選擇。
-
在頂部功能表列,選擇CLB執行個體所屬地區。
-
在访问日志(7层)頁面,找到目標執行個體,然後在目標執行個體操作列單擊關閉日志記錄。
-
在彈出的對話方塊中,單擊確定,關閉該執行個體的訪問日誌。
相關文檔
-
Log Service產品詳細介紹可參考什麼是Log Service。
-
使用CLB的七層負載平衡(HTTP/HTTPS監聽)期間,如遇業務故障或異常,懷疑是後端伺服器問題,可通過CLB使用訪問日誌快速定位異常後端伺服器。