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

2022-11-24 17:16:27 字數 2833 閱讀 7161

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

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

日誌埋點就是通過程式列印log日誌的方式進行業務/行為資料的記錄

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

資料生成(埋點)

資料收集

資料解析(結構化)

資料落盤

資料使用(展示/分析)

日誌資料的生成直接使用logback等日誌框架就可以了,可以自己封裝公共方法、aop、註解等方式來生成指定的埋點日誌

但是為了便於後面的資料解析,日誌資料需要規範先行

按上面的格式生成的日誌為:

2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=chrome&operatingsystem=windows_10

避免埋點的日誌檔案和系統本身輸出的日誌混淆

埋點的日誌輸出的目錄、檔案等需要和應用本身的日誌分離,通過logback的配置就能實現

埋點案例

生成日誌

閘道器埋點使用者請求

關於日誌資料的收集可選擇的中介軟體比較多,除了圖中的filebeat之外還有flumefluentdrsyslog等;需要每臺伺服器都部署一個收集中介軟體。

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

ps:日誌收集後面的訊息佇列並不是必需的可以去掉,但是增加訊息佇列後有以下兩個優點

削峰填谷:減輕後面日誌解析的壓力

資料共享:日誌資料除了提供給日誌系統之外,可以增加消費端的同時提供給其他地方使用,如流計算等

使用logstashgrok表示式解析日誌資料並結構化,以上面的日誌資料為例

2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=chrome&operatingsystem=windows_10

結構化後的日誌資料為:

通過logstash能自動建立elasticsearch索引並以天為單位分片

可以通過索引模板來指定每個欄位的型別和分詞器等屬性

日誌資料落盤到elasticsearch後,就可以通過聚合查詢等方式實時顯示監控資料或者分析日誌資料

監控案例

聚合查詢邏輯可參考

日誌埋點只是其中一種埋點手段而已,優點是系統無入侵且靈活;日誌收集、解析、落盤等都可以靈活搭配選擇不同的中介軟體,並且不需要修改源系統的**;並且可以方便對接其他分析平臺(例如: 大資料平臺)

ps:業務監控是否可以不做日誌埋點,直接查詢業務的資料庫呢?(不建議這樣做)

使用日誌埋點能實現監控資料與業務資料分離,監控平臺不會影響或增加業務資料庫的壓力

使用日誌埋點能方便實現實時業務資料預警

舉個栗子:日誌收集後面新增流計算中介軟體,計算某個時間視窗內優惠卷日誌的數量或者金額大於某個閥值,則發出預警

推薦閱讀掃碼關注有驚喜!