操作場景
彈性負載均衡的訪問日志功能支持查看和分析對七層負載均衡HTTP和HTTPS進行請求的詳細訪問日志記錄,包括請求時間、客戶端IP地址、請求路徑和服務器響應等。配置訪問日志時需要您對接云日志服務,并且需要關聯在云日志中已創建好的日志組和日志流。
注意彈性負載均衡的日志功能通過對接云日志服務實現,云日志為收費服務,請參考:云日志服務計費說明
說明由于彈性負載均衡會將訪問日志等運維數據內容展示到云日志服務控制臺,請您在使用過程中,注意您的隱私及敏感信息數據保護,不建議將隱私或敏感數據通過訪問日志涉及的字段傳輸,必要時請加密保護。
約束與限制
- 僅采用HTTP/HTTPS/QUIC/TLS監聽器的負載均衡實例支持配置訪問日志。
- 客戶訂閱的訪問日志中不包含返回碼為400的請求,因為該類請求不符合HTTP規范,無法被正常處理。
前提條件
- 您已經創建了支持HTTP/HTTPS等協議的7層負載均衡器。
- 您已經開通了云日志服務。
- 您已經創建了后端服務器組并且已添加后端服務器,且在后端服務器中已部署了業務。
配置云日志服務
為了能夠在云日志服務中看到彈性負載均衡的日志,需要首先配置云日志服務。
- 登錄管理控制臺,進入云日志服務控制臺。
- 單擊左側導航欄“日志管理”。
- 單擊 “創建日志組”,在彈出框內:
- 輸入日志組名稱;
- 根據實際需要設置“日志存儲時間(天)”;
- 單擊“確定”,創建完成。
- 在云日志服務管理控制臺,單擊日志組名稱展開地址組。
- 單擊“創建日志流”,在彈出框內,輸入日志流名稱。
- 單擊“確定”,創建完成。
關于云日志服務更多的配置和操作方法,請參考云日志服務用戶指南。
配置ELB訪問日志
在“彈性負載均衡”界面配置訪問日志。
- 在“負載均衡器”控制臺界面,單擊需要配置訪問日志的負載均衡器名稱。
- 在該負載均衡器界面的“訪問日志”頁簽,單擊“配置訪問日志”。
- 開啟日志記錄,選擇您在云日志服務中創建的日志組和日志流。
- 單擊“確定”,配置完成。
查看訪問日志
當您配置了訪問日志,可以查看訪問日志的詳細信息。
通過“云日志服務”控制臺,進入日志主題界面,選擇相應日志主題名稱,單擊“實時日志”,即可查看彈性負載均衡的訪問日志。
日志顯示格式如下,日志字段說明下表所示。不支持修改日志格式。
$msec $access_log_topic_id [$time_iso8601] $log_ver $remote_addr:$remote_port $status "$request_method $scheme://$host$router_request_uri $server_protocol" $request_length $bytes_sent $body_bytes_sent $request_time "$upstream_status" "$upstream_connect_time" "$upstream_header_time" "$upstream_response_time" "$upstream_addr" "$http_user_agent" "$http_referer" "$http_x_forwarded_for" $lb_name $listener_name $listener_id
$pool_name "$member_name" $tenant_id $eip_address:$eip_port "$upstream_addr_priv" $certificate_id $ssl_protocol $ssl_cipher $sni_domain_name $tcpinfo_rtt $self_defined_header
| 參數 | 描述 | 取值說明 | 取值示例 |
|---|---|---|---|
| msec | 以秒為單位的時間,日志寫入時的分辨率為毫秒。 | 浮點型數據 | 1530153091.868 |
| access_log_topic_id | 訪問日志流ID。 | uuid | 04465dfa-640f-4567-8b58-45c9f8bbc23f |
| time_iso8601 | 日志寫入時的時間,采用ISO 8601標準格式本地時間。 | - | 2018-06-28T10:31:31+08:00 |
| log_ver | ELB服務日志版本號。 | 固定值:elb_01 | elb_01 |
| remote_addr: remote_port | 客戶端IP地址:客戶端端口。 | 記錄客戶端IP地址和客戶端端口號。 | 10.184.30.170:59605 |
| status | ELB響應的狀態碼。 | 記錄請求狀態碼。 | 200 |
| request_method scheme://host request_uri server_protocol | 請求方法。請求方式://主機名:請求URI請求協議。 | l request_method:請求方法。 l scheme: http或https。 l host:主機名,可能為域名或者IP。 l request_uri: 瀏覽器發起的不做任何修改的原生URI。不包括協議及主機名。 | POST //setting1.hicloud.com/AccountServer/IUserInfoMng/stAuth?Version=26400&cVersion=ID_SDK_2.6.4.300 |
| request_length | 從客戶端收到的請求長度(包括請求header和請求body)。 | 整型數據 | 295 |
| bytes_sent | 發送到客戶端的字節數 。 | 整型數據 | 58470080 |
| body_bytes_sent | 發送到客戶端的字節數(不包括響應頭)。 | 整型數據 | 58469792 |
| request_time | 請求處理時間,即ELB收到第一個客戶端請求報文到ELB發送完響應報文的時間間隔(單位:秒)。 | 浮點型數據 | 499.769 |
| upstream_status | 從上游服務器獲得的響應狀態碼,當ELB代理進行請求重試時會包含多個響應的狀態碼,當請求未被正確轉發到后端云主機時此字段為-。 | 后端返回給ELB的狀態碼 | 200 或者"-, 200",或者"502, 502 : 200",或者"502 : " |
| upstream_connect_time | 與上游服務器建立連接所花費的時間,時間以秒為單位,分辨率為毫秒。當ELB代理進行請求重試時會包含多個連接的時間,當請求未被正確轉發到后端云主機時此字段為-。 | 浮點型數據 | 0.008或者"-, 0.008",或者"0.008, 0.005 : 0.004",或者"0.008 : " |
| upstream_header_time | 從上游服務器接收響應頭所花費的時間,時間以秒為單位,分辨率為毫秒。當ELB代理進行請求重試時會包含多個響應時間,當請求未被正確轉發到后端云主機時此字段為-。 | 浮點型數據 | 0.008或者"-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " |
| upstream_response_time | 從上游服務器接收響應所花費的時間,時間以秒為單位,分辨率為毫秒。當ELB代理進行請求重試時會包含多個響應時間,當請求未被正確轉發到后端云主機時此字段為-。 | 浮點型數據 | 0.008或者"-, 0.008" ,或者"0.008, 0.005 : 0.004",或者"0.008 : " |
| upstream_addr | 后端主機的IP地址和端口號。可能有多個值,每個值都是ip:port或者-,用逗號空格隔開。 (該參數適用于獨享型負載均衡) | IP地址+端口號 | -,192.168.1.2:8080(可能有多個值,每個值都是ip:port或者-,用逗號空格隔開) |
| http_user_agent | ELB收到請求頭中的http_user_agent內容,表示客戶端的系統型號、瀏覽器信息等。 | 記錄瀏覽器的相關信息 | Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 |
| http_referer | ELB收到請求頭中的http_referer內容,表示該請求所在的頁面鏈接。 | 頁面鏈接請求 | //10.154.197.90/ |
| http_x_forwarded_for | ELB收到請求頭中的http_x_forwarded_for內容,表示請求經過的代理服務器IP地址。 | IP地址 | 10.154.197.90 |
| lb_name | 負載均衡器的名稱(格式為“loadbalancer_”+“負載均衡器ID”)。 | 字符串 | loadbalancer_789424af-3fd2-4292-8c62-2a2dd7005175 |
| listener_name | 監聽器的名稱(格式為“listener_”+“監聽器ID”)。 | 字符串 | listener_fde03b66-f960-440e-954a-0be8b2b75093 |
| listener_id | 監聽器在ELB服務內部的ID(客戶可忽略)。 | 字符串 | - |
| pool_name | 后端主機組名稱(格式為“pool_”+“后端主機組ID”)。 | 字符串 | pool_066a5dc5-a3e4-4ea1-99f1-2a5716b681f6 |
| member_name | 后端云主機的名稱(格式為“member_”+“服務器ID”,尚未支持)。可能有多個值,每個值都是member_id或者-,用逗號空格隔開。 | 字符串 | member_47b07465-075a-4d2f-8ce9-0b9f39bff160(可能有多個值,每個值都是member_id或者-,用逗號空格隔開) |
| tenant_id | 租戶ID。 | 字符串 | 04dd36f921000fe20f95c00bba986340 |
| eip_address:eip_port | 彈性IP地址和監聽器監聽的端口號。 | 彈性IP地址和監聽器監聽的端口號。 | 4.17.12.248:443 |
| upstream_addr_priv | 后端主機的IP地址和端口號。可能有多個值,每個值都是ip:port或者-,用逗號空格隔開。 (該參數適用于共享型負載均衡) | IP地址+端口號 | -,192.168.1.2:8080(可能有多個值,每個值都是ip:port或者-,用逗號空格隔開) |
| certificate_id | [HTTPS監聽器]SSL連接建立時使用的證書ID(尚未支持)。 | 字符串 | 17b03b19-b2cc-454e-921b-4d187cce31dc |
| ssl_protocol | [HTTPS監聽器]SSL連接建立使用的協議,非HTTPS監聽器,此字段為-。 | 字符串 | TLS 1.2 |
| ssl_cipher | [HTTPS監聽器]SSL連接建立使用的加密套件,非HTTPS監聽器,此字段為-。 | 字符串 | ECDHE-RSA-AES256-GCM-SHA384 |
| sni_domain_name | [HTTPS監聽器]SSL握手時客戶端提供的SNI域名,非HTTPS監聽器,此字段為-。 | 字符串 | www.test.com |
| tcpinfo_rtt | ELB與客戶端之間的tcp rtt時間,單位:微秒。 | 整型數據 | 39032 |
| self_defined_header | 該字段為保留字段,默認為“-”。 | 字符串 | - |
日志示例
1644819836.370 eb11c5a9-93a7-4c48-80fc-03f61f638595 [2022-02-14T14:23:56+08:00] elb_01 192.168.1.1:888 200 "POST //www.test.com/example/HTTP/1.1" 1411 251 3 0.011 "200" "0.000" "0.011" "0.011" "100.64.0.129:8080" "okhttp/3.13.1" "-" "-" loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 listener_20679192-8888-4e62-a814-a2f870f62148 3333fd44fe3b42cbaa1dc2c641994d90 pool_89547549-6666-446e-9dbc-e3a551034c46 "-" f2bc165ad9b4483a9b17762da851bbbb 121.64.212.1:443 "10.1.1.2:8080" - TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 www.test.com 56704 -
以上日志示例對應的字段如下:
| 參數 | 示例 |
|---|---|
| msec | 1644819836.370 |
| access_log_topic_id | eb11c5a9-93a7-4c48-80fc-03f61f638595 |
| time_iso8601 | [2022-02-14T14:23:56+08:00] |
| log_ver | elb_01 |
| remote_addr: remote_port | 192.168.1.1:888 |
| status | 200 |
| request_method scheme://host request_uri server_protocol | "POST //www.test.com/example/1 HTTP/1.1" |
| request_length | 1411 |
| bytes_sent | 251 |
| body_bytes_sent | 3 |
| request_time | 0.011 |
| upstream_status | "200" |
| upstream_connect_time | "0.000" |
| upstream_header_time | "0.011" |
| upstream_response_time | "0.011" |
| upstream_addr | "100.64.0.129:8080" |
| http_user_agent | "okhttp/3.13.1" |
| http_referer | "-" |
| http_x_forwarded_for | "-" |
| lb_name | loadbalancer_295a7eee-9999-46ed-9fad-32a62ff0a687 |
| listener_name | listener_20679192-8888-4e62-a814-a2f870f62148 |
| listener_id | 3333fd44fe3b42cbaa1dc2c641994d90 |
| pool_name | pool_89547549-6666-446e-9dbc-e3a551034c46 |
| member_name | "-" |
| tenant_id | f2bc165ad9b4483a9b17762da851bbbb |
| eip_address:eip_port | 121.64.212.1:443 |
| upstream_addr_priv | "10.1.1.2:8080" |
| certificate_id | - |
| ssl_protocol | TLSv1.2 |
| ssl_cipher | ECDHE-RSA-AES256-GCM-SHA384 |
| sni_domain_name | www.test.com |
| tcpinfo_rtt | 56704 |
| self_defined_header | - |
日志分析:
在[2022-02-14T14:23:56+08:00]時,ELB接收到客戶端地址和端口(192.168.1.1:888)發起的“POST /HTTP/1.1”請求,ELB將請求轉發給后端云主機(100.64.0.129:8080),后端云主機響應狀態碼200,ELB最終向客戶端響應狀態碼200。
分析結果:
后端云主機正常響應請求。