微服務業務監控和行為分析怎么做?試試日志埋點


file

一、說明

互聯網公司一般都會有專門的數據團隊對公司的一些業務指標負責;為了拿到這些基本的業務指標,一般也要工程團隊去配合做一些數據采集工作,於是埋點誕生了。
 

埋點的方式有很多種,本文主要介紹 日志埋點 這種方式以及實現思路和案例。

日志埋點 就是通過程序打印 log 日志的方式進行業務/行為數據的記錄

 

二、總體架構

file

通過 日志埋點 來實現業務監控和行為分析主要需要以下4個步驟

  1. 數據生成(埋點)
  2. 數據收集
  3. 數據解析(結構化)
  4. 數據落盤
  5. 數據使用(展示/分析)

 

三、方案說明

3.1. 數據生成

日志數據的生成直接使用 Logback 等日志框架就可以了,可以自己封裝公共方法、aop、注解等方式來生成指定的埋點日志

但是為了便於后面的數據解析,日志數據需要規范先行

  1. 所有的埋點日志必需約定好統一的格式,例如:{時間}|{來源}|{對象id}|{類型}|{對象屬性(以&分割)}

按上面的格式生成的日志為:
2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10

  1. 避免埋點的日志文件和系統本身輸出的日志混淆
    file

埋點的日志輸出的目錄、文件等需要和應用本身的日志分離,通過 Logback 的配置就能實現

 

埋點案例
file

生成日志
file

網關埋點用戶請求

 

3.2. 數據收集

關於日志數據的收集可選擇的中間件比較多,除了圖中的 FileBeat 之外還有 FlumeFluentdrsyslog 等;需要每台服務器都部署一個收集中間件。

每台服務器部署一個就行了,就算一台服務器中啟了多個微服務也是可以一齊收集

PS:日志收集后面的 消息隊列 並不是必需的可以去掉,但是增加 消息隊列 后有以下兩個優點

  1. 削峰填谷:減輕后面日志解析的壓力
  2. 數據共享:日志數據除了提供給日志系統之外,可以增加消費端的同時提供給其他地方使用,如流計算等

 

3.3. 數據解析

使用 Logstashgrok表達式解析日志數據並結構化,以上面的日志數據為例

2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10

結構化后的日志數據為:

{
	timestamp: '2019-11-07 10:32:01',
	appName: 'api-gateway',
	resouceid: '1',
	type: 'request-statistics',
	ip: '171.221.203.106',
	browser: 'CHROME',
	operatingSystem: 'WINDOWS_10'
}

 

3.4. 數據落盤

通過 Logstash 能自動創建 Elasticsearch 索引並以天為單位分片
file

可以通過索引模板來指定每個字段的類型和分詞器等屬性

 

3.5. 數據使用

日志數據落盤到 Elasticsearch 后,就可以通過聚合查詢等方式實時顯示監控數據或者分析日志數據

監控案例
file

聚合查詢邏輯可參考 https://gitee.com/zlt2000/microservices-platform

 

四、總結

日志埋點 只是其中一種埋點手段而已,優點是系統無入侵且靈活;日志收集、解析、落盤等都可以靈活搭配選擇不同的中間件,並且不需要修改源系統的代碼;並且可以方便對接其他分析平台(例如: 大數據平台)

PS:業務監控是否可以不做日志埋點,直接查詢業務的數據庫呢?(不建議這樣做)

  1. 使用日志埋點能實現監控數據與業務數據分離,監控平台不會影響或增加業務數據庫的壓力
  2. 使用日志埋點能方便實現實時業務數據預警

舉個栗子:日志收集后面添加流計算中間件,計算某個時間窗口內優惠卷日志的數量或者金額大於某個閥值,則發出預警

 

推薦閱讀

 
掃碼關注有驚喜!

file


免責聲明!

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



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