主動做了業務監控,產品經理對我豎起大拇指
阿新 • • 發佈:2021-03-01
監控,一直是個可以聊很久的話題。除了系統監控,還有一個往往容易被忽略,今天我們就來聊聊這個容易忽略的業務監控。
## 監控什麼?
作為開發人員,不僅僅是把功能開發出來就行了,對於你負責的產品或者模組,你需要對它有足夠的瞭解,時時刻刻需要關注著,要有初戀的那種感覺才行。
以電商最常見的下單功能來說,比如我想知道下單的成功率多少,下單的平均耗時,下單失敗中有多少是因為庫存不足下單失敗的等等這類相關的資訊。
有了這些業務指標資訊,你就能知道你負責的產品現狀是什麼樣的,以及你需要做哪些改進。
至於要監控哪些指標,得跟著你的業務走。目的很明確,就是需要知道業務的狀況,並在某些時候能夠觸發告警。
## 實現方式
基於埋點的方式來進行資料的記錄,記錄到本地磁碟檔案中,然後通過統一的日誌收集程式收集儲存,統計展示以及告警。
之所以基於埋點的方式實現是因為需要知道每個業務介面的執行結果,成功還是失敗,失敗的原因是什麼。我們對於每個異常都定義了業務碼,可以根據業務碼知道異常原因。
如果用寫日誌的方式輸出資料,記得將業務日誌的資料檔案單獨出來,不要和系統的日誌輸出在一起,否則不好收集解析。
用logback可以單獨配置一個appender,我這邊只輸出了我埋點的業務資料,Json格式的。
```plain
```
**日誌檔案內容:**
```plain
{"biz":"confirm","bizCode":500,"domain":"storeOrder","bizId":"86081301","execTime":3,"count":"1","storeId":"1","userId":"740942"}
{"biz":"confirm","bizCode":500,"domain":"storeOrder","bizId":"86081301","errorMessage":"/ by zero","execTime":14,"count":"1","storeId":"1","userId":"740942"}
```
## 註解埋點
![](https://img2020.cnblogs.com/blog/1618095/202103/1618095-20210301135856765-86351281.png)
BizLog註解用於業務監控埋點,裡面具體配置欄位說明如下:
* domain: 領域,比如 order,pay
* biz: 業務,比如 createOrder,cancelOrder
* bizId: 業務ID,比如 orderId
* addition: 擴充套件資訊
addition可以配置多個additionField獲取想要埋點的資料,資料可以從請求引數中獲取,也可以從相應引數中獲取,比如訂單建立成功後,會返回訂單ID, 那麼bizId就是從響應引數中獲取。
## 程式碼埋點
某些場景(支付回撥,JOB任務等)下不太好通過註解方式埋點我們可以採用程式碼埋點的方式來實現。
![](https://img2020.cnblogs.com/blog/1618095/202103/1618095-20210301135907456-674830966.png)
## 日誌收集
我們用的是阿里雲的日誌服務,直接配置logtail即可完成收集工作,介面操作,非常方便。
![](https://img2020.cnblogs.com/blog/1618095/202103/1618095-20210301135916639-1622576125.png)
## 指標展示
### 埋點原始資料
![](https://img2020.cnblogs.com/blog/1618095/202103/1618095-20210301135924699-2017089874.png)
### 圖表統計展示
![](https://img2020.cnblogs.com/blog/1618095/202103/1618095-20210301135933223-1164723634.png)
## 指標告警
資料都收集上來了,想要關注哪些指標,想要在什麼時候告警,就變得很容易了。比如說某分鐘內下單頻繁失敗,這個時候你就可以配置告警失敗次數>N 觸發告警,當收到告警時,就馬上去排查為什麼會下單失敗了。
**關於作者**:尹吉歡,簡單的技術愛好者,《Spring Cloud微服務-全棧技術與案例解析》, 《Spring Cloud微服務 入門 實戰與進階》作者, 公眾號**猿天地**發起人。