如果您需要通過訪問日志分析用戶行為,了解用戶的地域分布及排查問題等,您可以通過ALB聯合日志服務(SLS)推出的訪問日志功能來實現。
背景信息
ALB作為訪問入口,承載著海量的訪問請求,ALB支持將訪問日志投遞到日志服務,結合日志服務強大的大數據計算能力,您可以通過訪問日志分析用戶行為、了解用戶的地域分布、進行問題排查等。ALB日志訪問功能具有以下優勢:
簡單:將開發、運維人員從日志處理的繁瑣耗時中解放出來,將更多的精力集中到業務開發和技術探索上。
海量:負載均衡的訪問日志數據規模通常很大,處理訪問日志需要考慮性能和成本問題。日志服務可以一秒鐘分析一億條日志,相較于自建開源方案有明顯成本優勢和性能優勢。
實時:DevOps、監控、報警等場景要求日志數據的實時性。日志服務強大的大數據計算能力,可秒級分析處理實時產生的日志。
彈性:按負載均衡實例級別開通或關閉訪問日志功能,Logstore容量可動態伸縮滿足業務增長需求。
費用說明
ALB將日志投遞到日志服務后,日志服務根據存儲空間、讀取流量、請求數量、數據加工、數據投遞等進行計費,更多信息,請參見日志服務計費。
前提條件
使用訪問日志功能前,請確保您已開通日志服務。具體操作,請參見開通日志服務。
創建訪問日志
- 登錄應用型負載均衡ALB控制臺。
在頂部菜單欄,選擇ALB實例所屬的地域。
在實例頁面,單擊目標實例ID。
在實例詳情頁簽,單擊訪問日志頁簽,在訪問日志頁簽單擊創建訪問日志。
在創建訪問日志對話框,配置項目Project和日志庫Logstore,然后單擊確定。
配置
說明
項目Project
日志服務中的資源管理單元,用于資源隔離和控制。
選擇現有Project:在下拉框中選擇一個Project。
新建Project:在文本框中輸入新建Project名稱。
日志庫Logstore
日志服務中日志數據的采集、存儲和查詢單元。
選擇現有Logstore:在下拉框中選擇一個Logstore。
新建Logstore:在文本框中輸入新建Logstore名稱。Project選擇新建時,Logstore也需選擇新建。
服務關聯角色創建須知
執行此操作時,系統將會為您自動創建一個服務關聯角色,以完成相應功能。
在彈出的對話框中,確認提示信息,然后單擊確定。
選擇新建日志庫Logstore時,配置完成后,日志服務默認為該Logstore創建索引及開啟儀表盤。
選擇現有日志庫Logstore時,配置完成后,日志服務會自動開啟儀表盤。如果該Logstore已設置索引,配置不會被覆蓋,如需新的索引,請至日志服務控制臺調整。
查看訪問日志
在訪問日志頁簽,單擊SLS日志存儲右側的鏈接,前往日志服務查看原始日志等信息。
在訪問日志頁簽,您可以分別單擊監控中心、訪問中心或秒級監控頁簽,輸入篩選條件,查詢相關指標信息。
模塊分類
指標說明
監控中心
展示ALB實例的實時監控數據,包括訪問PV、請求成功率、平均延遲、4xx請求數、Status分布、流量、P50延遲、P90延遲、P99延遲、P9999延遲、TOP請求Host、TOP延遲Host、TOP失敗率Host、TOP請求URL、TOP延遲URL、TOP失敗率URL、TOP請求后端、TOP延遲后端、TOP失敗率后端等指標。
訪問中心
展示ALB實例的訪問狀態數據,包括PV對比昨日、PV對比上周、UV對比昨日、UV對比上周、PV分布、UV分布、今日訪問PV、7天訪問PV、TOP10訪問省份、移動端占比、TOP10訪問Host、TOP10訪問UserAgent、TOP訪問IP等指標。
秒級監控
以秒級粒度展示監控信息,便于發現瞬時抖動的異常情況,包括QPS、訪問延遲、Upstream延遲、成功率、請求流量、返回Body流量、2xx狀態碼、3xx狀態碼、錯誤狀態碼、Upstream2xx狀態碼、Upstream3xx狀態碼、Upstream錯誤狀態碼等指標。
記錄自定義header
除常用的header外,slb_headers用來記錄請求中其余header的header name和header value,以便完整地記錄請求和更好地分析日志。
訪問日志的自定義header長度默認支持1 KB,最大可以提升到4KB,如需提升請聯系您的客戶經理申請。更多信息,請參見ALB轉發請求的長度限制是多少?是否支持調整?。
在訪問日志頁簽,在基本信息區域單擊記錄自定義header設置。
在日志中記錄自定義HTTP頭設置對話框,在下拉框中選擇該ALB實例已添加的監聽。
在彈出的對話框中,確認提示信息,單擊確定。
設置完成后,日志中的slb_headers字段會記錄請求中除以下header之外的header_name和header_value:
#自定義header不會記錄以下字段信息 host referer user-agent x-forwarded-for x-readtime x-real-ip uber-trace-id X-B3-TraceId X-B3-SpanId X-B3-ParentSpanId X-B3-Sampled
刪除日志
在訪問日志頁簽,在基本信息區域單擊關閉日志記錄。
在彈出的對話框中,確認提示信息,然后單擊確定。
日志字段說明
字段 | 說明 |
app_lb_id | 負載均衡實例ID。 |
__topic__ | 日志主題,固定為alb_layer7_access_log。 |
body_bytes_sent | 發送給客戶端的HTTP Body的字節數。 |
client_ip | 請求客戶端IP地址。當未開啟“查找真實客戶端源IP”功能時,該字段為負載均衡的上一跳IP地址;開啟后,該字段為真實客戶端源IP地址。 |
host | 域名或IP地址。優先從請求參數中獲取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 | 負載均衡收到的請求報文中HTTP的x-forwarded-for的內容。 |
http_x_real_ip | 負載均衡收到的請求報文中HTTP的x-real-ip的內容。 |
read_request_time | 負載均衡讀取請求的時間,單位:毫秒。 |
request_length | 請求報文的長度,包括startline、HTTP頭報文和HTTP body。 |
request_method | 請求報文的方法。 |
request_time | 負載均衡收到第一個請求報文的時間到返回應答之間的時間間隔,單位:秒。 |
request_uri | 負載均衡收到的請求報文的URI。 |
scheme | 請求的schema:HTTP或HTTPS。 |
server_protocol | 負載均衡收到的HTTP協議的版本,例如HTTP/1.0或HTTP/1.1。 |
slb_vport | 負載均衡的監聽端口。 |
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 | 負載均衡寫的響應時間,單位:毫秒。 |
client_port | 請求客戶端端口。 |
slb_headers | 自定義headers,需打開對應功能才能使用,用于存放請求的自定義header。 |