Spring cloud微服務安全實戰-7-12整合鏈路追蹤和日志監控


調用鏈路的監控和統一日志的監控結合起來。比如說我在調用鏈監控上發現有一個調用訂單的服務慢了。通過pinpoint可以看到 。用戶發出來的請求,經過了網關,經過了order,經過了pagement。通過pinpoint可以知道慢, 也可以知道哪一環慢了。但是我想看一個整體的日志。這個請求從發出去,到回來,經過這四個應用,整個的一個完整的日志。我要看到在gateway上打印了什么。在Api上打了什么,在order上打了什么。在payment上打印了什么日志。我希望一個查詢能把這四個應用跟當前這一個請求相關的日志都 展示出來。然后來看一下這個請求里面到底發生了什么。

要實現這個功能關鍵的點就是這個TransactionID,這是一個無意義的字符串。這個串就是pinpoint用來把各個應用間的請求給它關聯起來的一個串,實際上這個串是在這四個應用里面不斷的傳遞的。


我們現在要做的就是在日志里面把這個Transaction打印出來。我們就可以之前用elk的方式,把它作為一個字段,傳到我們的elk里面,然后子啊kibana里面直接搜這個串,然后這個所有帶着這個TransactionId的日志都會按照時間順序展示出來。你就能看到這個請求在所有四個應用上,打出來的日志。

開始擼代碼

新建一個應用


創建一個product-api


復制orderAPi里面的pom.xml上面的部分,下面值引入starter-wenb的依賴。

創建SpringBoot的啟動類。








用restTemplate去發服務。


引入lombok

然后加上lombok的日志的對象。

return 隨便寫的一個字符串。

UserApi打印日志

在獲取用戶信息的這里,也打印一個日志

ProductAPI

給ProductAPI指定運行的配置


添加一個配置文件修改 啟動服務的端口


指定端口為8064

啟動productAPi

pinpoint的配置文件

agent里面加上productAPI

啟動測試

再啟動userAPI和ProductAPi


productAPI里面,這里要new 一個retTemplate 然后重啟productAPi

訪問product服務沒有問題


pinpoint里面。看到product里面調用了userAPI。userApi里面調用了數據庫。這樣一個鏈路已經展示出來了。

調整日志

調整日志首先要修改agent
pinpoint里面要進行修改。springboot里面用的是logback。所以搜索logback
下面這里設置為true。pinpont的agent就會自動往logback的mdc里面去加一個參數,


配置控制台上日志的格式

復制以前寫的格式


放在雙引號內

pinPoint加的參數叫做PtxId
把這段配置 復制到userAPi里面



重啟服務,productAPI和OrderAPI這兩個服務。

啟動后日志里面多了個方括號。就是我們在配置文件內配置的方括號。這些日志都系統啟動的時候內部打印出來的。並不是外部打出來的。

調用一個服務

調用服務后,方括號后內有值了。通過transactionId可以看出,最后這四行數據是同一個請求, 打印出來的。


userAPi的控制台也有同樣的trasacgtionId。這是兩個系統里面打印出來的日志。但是日志里面會有相同的編號。

這樣就可以接入ELK里面。把這一段代碼作為一個單獨的字段。提取出來 放到elk里面。在kibana里面你只要查這個串,兩個API
里面 這四行日志 都查出來。
這樣在一個請求進來以后,在不同的系統里面打印出來的日志,整個提取出來。 這里不再演示。

pinpoint里面的transactionId和日志系統就接起來了。


 

結束



 


免責聲明!

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



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