在性能測試領域,近幾年全鏈路壓測可以說是越來越火熱,但據我了解,真正玩得轉的,就那么幾家知名的大廠或者有大廠背景的公司。
原因無非這幾點:越發復雜的業務和龐大的數據量倒逼技術,以及技術建設到了一定程度需要創造更多的價值。之前的博客也介紹過,
而伴隨全鏈路壓測一路成長但不為大多數測試童鞋所知的,還有全鏈路監控。這篇博客,簡單介紹下關於全鏈路監控的一些知識。。。
一、基礎知識
1、調用鏈是全鏈路追蹤監控的核心概念。
2、定義:從請求源頭(前端頁面、移動端)到最后的底層服務(比如DB、Redis)的所有中間調用環節。
3、常見全鏈路監控工具對比
除了上述幾種全鏈路監控工具,還有skywalking等,但不同工具各自的優缺點不同,還需要根據技術團隊的技術特點和需求合理選型。
二、全鏈路監控特質
1、低侵入性
監控系統應盡可能減少對業務系統的侵入,保持對使用方的透明性,減少開發人員的負擔,降低接入門檻和難度。
2、低性能影響
由於全鏈路監控系統需要對各種應用中間件進行日志數據采集,大多都需要在業務系統內進行“埋點”或放置agent,一般都是在核心業務流程。
因此應盡可能降低對業務系統造成的性能影響,一般來說,對CPU的耗用低於2%可以作為一個參考閾值。
3、靈活全面的接入策略
為了盡可能降低接入成本,應該提供靈活的監控配置策略,讓業務方決定是否接入,以及收集數據的范圍和粒度,並提供對應的技術方案保障監控策略生效。
4、時效性
實時有效的監控數據展示功能,幫助相關人員理解系統行為,為流程、架構、代碼優化,以及擴容縮容、服務限流降級提供正確客觀的數據參考。
三、注意事項
1、異步調用
通過java字節碼增強方式植入增強邏輯, 通過對JDK線程(Thread)對象進行增強完成。
2、提高日志輸出的技術方案
在應用服務器開辟專門的內存區域,虛擬為虛擬磁盤,日志輸出采樣通過異步方式寫入磁盤,當日志量過大(設定閾值)時丟棄日志,並Count丟棄的日志。
步驟:達到采樣條件,產生日志並記錄;批量日志數滿足條件,寫入I/O緩沖區(Buffer);等待緩沖區滿,寫入存儲塊設備。
3、采樣率&TP數
采樣率:每N次調用采集一次數據,極大降低采集的日志數量;
TP數:記錄每次調用的TP值,便於技術TP50%、TP99%的指標;
PS:關於TP50/TP99,可參考這里:指標數據TP55、TP90、TP99、TP999
四、擴展知識
基於全鏈路監控的思想出現了很多新的知識,比如說:APM。
1、定義:APM(Application Performance Management)對應用程序性能和可用性的監控管理。
2、說明:狹義上的APM:單指應用程序的監控,如應用的各接口性能和錯誤監控,分布式調用鏈路跟蹤,以及其他各類用於診斷(內存,線程等)的監控信息等。
廣義上的APM:除了應用層的監控意外,還包括手機App端監控,頁面端監控,容器、服務器監控,以及其他平台組件如中間件容器,數據庫等層面的監控。
以上內容只是個人總結記錄的筆記,僅供參考。。。