后端埋點方案簡要分析


后端埋點方案:

本文簡單對后端埋點方案做了分析,但是還有很多未涉及的方面。主要用於學習交流和分享個人的經驗

基本路線:filebeat + logstash 日志埋點分析

后端埋點的基本框架是通過filebeat+ logstash讀取日志文件進行日志分析處理,這種方案是代碼侵入比較低的一種方案。

使用的原因:

  1. 這兩者都是開源免費使用的框架

  2. 這種日志采集方案發展到現在已經十分成熟,有大量的文檔和社區實踐分享。覆蓋的數據處理技能很豐富,處理效果也十分不錯。

  3. 並且在這些年已經有許多的使用案例,像是神策數據的文檔中也有使用到該種方案進行數據的對接工作。

1. 采集流程

1.1 filebeat

filebeat是一款開源的輕量級日志采集工具,主要用於整合各個路徑下的各種不同的日志文件,並且統一輸出到指定的輸出點。

對於filebeat的配置較為簡單,而filebeat提供的功能也十分有限,只能進行簡單的日志采集工作,所以需要和logstash配和使用

1.2 logstash

logstash相對filebeat更強大,但是占用的系統資源也較多

首先配置指定的日志文件的路徑供filebeat讀取。

配置好 logstash 的過濾規則,input 及 output 方式,將 filebeat 和 logstash 對接到一起。

最后啟動 filebeat 和 logstash ,開始進行日志文件的數據讀取和寫入。

3. 綜合分析

后端埋點的優點在於,可以在采集需求發生變化時,修改服務端代碼就可發立刻發布生效。能夠有效地應對各種需求變化。相對地,前端埋點可能會遇到上線流程慢,用戶不更新最新版本所導致的數據不准確。

但是后端埋點的缺點在於,只能收集前端請求后端的業務行為,而無法對前端存在業務意義的一些交互行為進行信息的采集。

對於產生日志的這一過程,又有幾種不同的思路可以討論:

2. 日志文件來源

2.1 nginx 日志埋點

目前基本上所有后端服務器接受的請求都要經過nginx轉發,通過nginx的access.log日志,可以獲取大部分最基本的請求信息。

同時可以通過配置nginx.conf中的log_format來自定義日志輸出的內容和格式:

101.133.129.17 [07/Jun/2020:23:29:04 +0800] [ ] "GET /favicon.ico HTTP/1.1" 0.000 67646 200 "-" "Mozilla/5.0 (Windows         NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" - - -
27.38.4.24 [06/Jun/2020:18:49:22 +0800] [ ] "POST /api/auth/login HTTP/1.1" 0.028 69 401 "http://47.114.87.23:7000/" "        Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0" 192.168.0.33:8020 0.028 401

優點:

  1. 后端不需要修改代碼
  2. 只需要對一個日志文件進行分析,不會漏掉或忽略部分內容

缺點:

  1. 信息較單一,只能記錄一些http信息,如果想要獲取更多的信息,需要前端在請求頭中提供。如果需要分析前端目前沒有提供的的信息,可能涉及到前端的修改
  2. 可能會出現干擾性的數據,比如一些靜態資源的獲取,或者當nginx同時進行2個服務的轉發。需要進行數據的過濾
  3. 對於前端沒有傳入的信息,可能出現缺失部分

改進方案:

對於token , 請求body,請求參數這些信息,可以通過lua腳本,或者在logstash處理,或者抽取到數據庫中2次加工,來解析其中的內容,提取更多有效的信息。

2.2 logback 日志埋點

通過使用logback,log4j,slf4j 等日志框架在后端對應的業務請求接口進行日志信息的輸出。需要對后端服務的java代碼進行修改,但是修改量相對不大。

日志埋點的規范有一些文章可以參考:

優點:

  1. 可以自定義日志輸出的內容和格式,比如一些業務信息和數據,比nginx日志的信息更全面

缺點:

  1. 要修改后端代碼

改進方案:

可以進行一些簡單的封裝,抽象出一些常用的類和方法,提高代碼的復用性,和后續的可擴展性。可能延長開發周期。

2.3 神策SDK埋點

使用神策的開源sdk進行后端的埋點,其基本思路和過程和日志埋點十分類似。要在項目中引入神策的javasdk,並對后端的代碼進行修改,在其中使用sdk中提供的方法。

優點:

  1. 無需封裝一套框架,可以直接使用

缺點:

  1. 需要修改后端代碼
  2. 后續框架擴展性不高
  3. 商業問題?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM