構造請求日誌分析系統

請求日誌記錄哪些數據

  • time_local : 請求的時間
  • remote_addr : 客戶端的 IP 地址
  • request_method : 請求方法
  • request_schema : 請求協議,常見的 http 和 https
  • request_host : 請求的域名
  • request_path : 請求的 path 路徑
  • request_query : 請求的 query 參數
  • request_size : 請求的大小
  • referer : 請求來源地址,假設你在 a.com 網站下貼了 b.com 的連接,那麼當用戶從 a.com 點擊訪問 b.com 的時候,referer 記錄的就是 a.com ,這個是瀏覽器的行爲
  • user_agent : 客戶端瀏覽器相關信息
  • status : 請求的響應狀態
  • request_time : 請求的耗時
  • bytes_sent : 響應的大小

不少時候咱們會使用負載網關去代理轉發請求給實際的後端服務,這時候請求日誌還會包括如下數據:後端

  • upstream_host : 代理轉發的 host
  • upstream_addr : 代理轉發的 IP 地址
  • upstream_url : 代理轉發給服務的 url
  • upstream_status : 上游服務返回的 status
  • proxy_time : 代理轉發過程當中的耗時

數據衍生

客戶端 IP 地址能夠衍生出如下數據:瀏覽器

  • asn 相關信息:網絡

    • asn_asn : 自治系統編號,IP 地址是由自治系統管理的,好比中國聯通上海網就管理了全部上海聯通的IP
    • as_org : 自治系統組織,好比中國移動、中國聯通
  • geo 地址位置信息:架構

    • geo_location : 經緯度
    • geo_country : 國家
    • geo_country_code : 國家編碼
    • geo_region : 區域(省份)
    • geo_city : 城市

user_agent 能夠解析出如下信息:elasticsearch

  • ua_device : 使用設備
  • ua_os : 操做系統
  • ua_name : 瀏覽器

數據分析

  • PV / QPS : 頁面瀏覽次數 / 每秒請求數
  • UV : 訪問的用戶人數,不少網站用戶無序登陸也能訪問,這時能夠根據 IP + user_agent 的惟一性肯定用戶
  • IP 數 : 訪問來源有多少個 IP 地址


<br/>網站

  • 網絡流量 : 根據 request_size 請求的大小計數網絡流入流量,bytes_sent 響應大小計算網絡流出流量


<br/>編碼

  • referer 來源分析


<br/>url

  • 客戶請求的地理位置分析:根據 IP 地址衍生的 geo 數據



<br/>spa

  • 客戶設備分析:根據 user_agent 提取數據


<br/>操作系統

  • 請求耗時統計:根據 request_time 數據

    • p9九、p9五、p90 延遲(前多少百分比請求的耗時,好比 p99 就是前 99% 請求的耗時)
    • 長耗時異常監控

<br/>

  • 響應狀態監控:根據 status 數據

    • 各個狀態碼的響應占比
    • 5xx 服務端異常數量

<br/>

  • 結合業務分析:請求的 request_path 地址和 request_query 參數必定是對應具體業務的,例如

    • 請求某個相冊的地址是 /album/:id ,那麼日誌中的 request_path 對應的就是對相冊進行了一次訪問
    • 進行站內搜索的地址是 /search?q=<關鍵詞> ,那麼統計 request_path/search 的日誌條數就能夠知道進行了多少次搜索,統計 request_queryq 的參數就能夠知道搜索關鍵詞的狀況

通用架構

日誌系統使用 ELK + kafka 構建是業界比較主流的方案,beats、 logstash 進行日誌採集搬運,kafka 存儲日誌等待消費,elasticsearch 進行數據的聚合分析,grafana 和 kibana 進行圖形化展現。

image

相關文章
相關標籤/搜索