如果您需要通過訪問日誌分析使用者行為,瞭解使用者的地區分布及排查問題等,您可以通過ALB聯合Log Service(SLS)推出的訪問日誌功能來實現。
背景資訊
ALB作為訪問入口,承載著海量的訪問請求,ALB支援將訪問日誌投遞到Log Service,結合Log Service強大的巨量資料計算能力,您可以通過訪問日誌分析使用者行為、瞭解使用者的地區分布、進行問題排查等。ALB日誌訪問功能具有以下優勢:
簡單:將開發、營運人員從Tlog的繁瑣耗時中解放出來,將更多的精力集中到業務開發和技術探索上。
海量:負載平衡的訪問日誌資料規模通常很大,處理訪問日誌需要考慮效能和成本問題。Log Service可以一秒鐘分析一億條日誌,相較於自建開源方案有明顯成本優勢和效能優勢。
即時:DevOps、監控、警示等情境要求日誌資料的即時性。Log Service強大的巨量資料計算能力,可秒級分析處理即時產生的日誌。
彈性:按Server Load Balancer執行個體層級開通或關閉訪問日誌功能,Logstore容量可動態伸縮滿足業務增長需求。
費用說明
ALB將日誌投遞到Log Service後,Log Service根據儲存空間、讀取流量、請求數量、資料加工、資料投遞等進行計費,更多資訊,請參見Log Service計費。
前提條件
使用訪問日誌功能前,請確保您已開通Log Service。具體操作,請參見開通Log Service。
建立訪問日誌
- 登入應用型負載平衡ALB控制台。
在頂部功能表列,選擇ALB執行個體所屬的地區。
在執行個體頁面,單擊目標執行個體ID。
在執行個體詳情頁簽,單擊訪問日誌頁簽,在訪問日誌頁簽單擊建立訪問日誌。
在建立訪問日誌對話方塊,配置專案Project和日誌庫Logstore,然後單擊確定。
配置
說明
項目Project
Log Service中的資源嵌入式管理單元,用於資源隔離和控制。
選擇現有Project:在下拉框中選擇一個Project。
建立Project:在文字框中輸入建立Project名稱。
日誌庫Logstore
Log Service中日誌資料的採集、儲存和查詢單元。
選擇現有Logstore:在下拉框中選擇一個Logstore。
建立Logstore:在文字框中輸入建立Logstore名稱。Project選擇建立時,Logstore也需選擇建立。
服務關聯角色建立須知
執行此操作時,系統將會為您自動建立一個服務關聯角色,以完成相應功能。
在彈出的對話方塊中,確認提示資訊,然後單擊確定。
選擇建立日誌庫Logstore時,配置完成後,Log Service預設為該Logstore建立索引及開啟儀錶盤。
選擇現有日誌庫Logstore時,配置完成後,Log Service會自動開啟儀錶盤。如果該Logstore已設定索引,配置不會被覆蓋,如需新的索引,請至Log Service控制台調整。
查看訪問日誌
在訪問日誌頁簽,單擊SLS日誌儲存右側的連結,前往Log Service查看原始日誌等資訊。
在訪問日誌頁簽,您可以分別單擊監控中心、訪問中心或秒級監控頁簽,輸入篩選條件,查詢相關指標資訊。
模組分類
指標說明
監控中心
展示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 | Server Load Balancer執行個體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。 |