Core + Vue 后台管理基礎框架7——APM


1、前言

  APM,又稱應用性能統計,主要用來跟蹤請求調用鏈,每個環節調用耗時,為我們診斷系統性能、定位系統問題提供了極大便利。本系統采用的是Elastic Stack體系中的APM,主要是之前部門搞PCI認證,其中有一環ELK,而剛好ELK就是我搭建的,這里就順便使用ELK體系的APM,沒必要再另起一套了。

2、實現

  首先,你需要搭建好ELK平台,這里搭建過程不做贅述,大家參考Elastic Stack官網,簡單明了。

  然后,安裝Elastic APM Server,就是一個Linux RPM包,一行Linux命令的事情,也不做贅述。這里交代下APMServer的幾個關鍵配置,以centos7為例。在/etc/apm-server目錄下,有個apm-server.yml配置文件,修改其中如下幾處:

apm-server訪問地址,改成你自己服務器IP和端口:

 

 

APM Agent訪問token憑證,這是個靜態口令,你可以隨意調整:

 

 

SSL啟用,代表各agent需要以https方式來鏈接apm-server,換成你自己的證書和key:

 

 

到ES存儲的鏈接,同樣需要調整成你自己的:

 

 

  其中各項配置的參數,配置文件中已經注釋的比較清楚了,大概看下其描述我們就知道該怎么配。

  

  Apm-server配置好之后,接下來就是我們應用中引入和配置agent了。首選,在我們待監控應用系統配置文件appsetting.json中,加入如下一段配置:

 

   SecretToken是我們服務端配置的那個secret_token,必須一致。ServerURLs是apmserver訪問地址,對應服務端的host參數。ServiceName是我們系統標識,ES和kibana中我們會以此來區分不同應用的監控數據。VerifyServerCert代表是否需要校驗apm-server服務端證書,這里方便起見,直接配置false了,否則agent端會直接把到apm-server的鏈接給拒絕。

  然后,引入Elastic.Apm.NetCoreAll包,ElasticStack包含各種原子包,可以分別監控.NETCORE、aspnetcore、EF等,可以根據具體需求引入對應包,而Elastic.Apm.NetCoreAll直接囊括所有,這里因為系統要監控應用、EF、數據庫執行等,所以直接引用了這個大而全的包。之后,引入中間件:

 

   此中間件引入最好放在最靠前的位置,因為要監控整條鏈路。

 

3、效果

  登錄系統,然后隨便開幾個頁面,如下:

 

   然后,我們進入kibana,找到對應的APM菜單進去:

 

   右邊列表名稱那一欄,是我們agent配置中,對應的ServiceName,找到對應系統,點擊進去:

 

 

 

   兩張圖上邊一張是請求負載情況,下邊是應用系統收到的每個http請求,我們以searchroles這個為例,進去看看:

 

   可以看到,searchroles的所有請求數量,每個請求各環節執行時間,最下面默認展示最近一次請求的跟蹤數據,里邊可以直觀體現本次http請求處理總時間、數據庫執行時間,如果有跨服務調用,還會統計其他服務調用時間,甚至幫我們追蹤到了執行的SQL,非常之方便,開箱即用。所以,以后再也不要說EF性能低、出問題不好定位之類的話,一定是你姿勢不對。


免責聲明!

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



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