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效能低、出問題不好定位之類的話,一定是你姿勢不