公司項目採用微服務的架構,服務不少,人工監控是不可能的,項目的訪問量很大,想經過日誌查找某個方法中性能的問題也是很是困難的。可是系統的性能問題是不能忽視的。系統性能檢測的問題如鯁在喉,通過長時間的查找資料,功夫不負有心人,終於發現幾個比較好的開源的APM(Application Performance Management)檢測工具。java
項目不想侵入其餘的代碼,工具儘可能損耗性能低,工具的社區活越,文檔完善也是考慮的必要條件,通過如下表格部分參數對比,相對來講,SkyWalking更佔優,所以團隊採用SkyWalking做爲APM工具。node
工具名稱 | 代碼入侵方式 | 性能 | ui | 使用人數 | 粒度 | 告警 | 依賴分析 | traceID查詢 |
SkyWalking | 無侵入 | 高 | 豐富 | 多 | 方法級 | 有 | 有 | 有 |
Pinpoint | 無侵入 | 低 | 豐富 | 多 | 方法級 | 有 | 有 | 有 |
Zipkin | 侵入低 | 中 | 通常 | 多 | 接口級 | 無 | 有 | 有 |
Cat | 侵入高 | 中 | 豐富 | 較多 | 代碼級 | 有 | 無 | 無 |
官方有兩句話介紹SkyWalking:linux
SkyWalking是分佈式系統的應用程序性能監視工具,專爲微服務、雲原生架構和基於容器(Docker、K8S、Mesos)架構而設計web
SkyWalking是觀察性分析平臺和應用性能管理系統。提供分佈式追蹤、服務網格遙測分析、度量聚合和可視化一體化解決方案sql
SkyWalking 總體架構數據庫
整個架構,分紅上、下、左、右四部分:apache
考慮到讓描述更簡單,咱們捨棄掉 Metric 指標相關,而着重在 Tracing 鏈路相關功能。bootstrap
由於對工具可用性要求不高,工具掛掉不會影響系統,因此採用單機版。vim
1.下載elasticsearch-7.2.0,下載地址:https://www.elastic.co/cn/downloads/elasticsearch跨域
2.上傳下載的壓縮包到linux服務器,解壓文件
tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz //解壓壓縮包 cd elasticsearch-7.2.0 //進入目錄 mkdir data //建立data文件夾,保存數據
3.修改Elasticsearch配置:config/elasticsearch.yml
4.嘗試啓動Elasticsearch。
5.啓動失敗報錯:經過日誌能夠發現,es不容許linux經過root用戶啓動,緣由是出於系統安全考慮設置的條件。因爲Elasticsearch能夠接收用戶輸入的腳本而且執行,爲了系統安全考慮,直接使用root權限會帶來很大風險,因此咱們建立一個elsearch用戶
6.建立Elasticsearch啓動用戶,並設置權限等
7.使用elsearch用戶,再次嘗試啓動
8.啓動失敗,有兩個錯誤,是由於有兩個參數的值過小
問題解決辦法
9.使用elsearch用戶,再次嘗試啓動(Elasticsearch默認內存是1G,由於個人服務器內存是足夠的,沒有修改配置)
10.查看是否啓動成功:訪問ip:9200,出現如下信息即爲啓動成功
1.下載SkyWalking官方包,下載地址: http://skywalking.apache.org/downloads/ ,咱們下載操做系統對應的發佈版。這裏,咱們選擇apache-skywalking-apm-es7-8.0.0.tar.gz版本想使用 Elasticsearch 7.X 版本做爲存儲。
2.上傳下載的壓縮包到linux服務器,解壓文件
1.修改 OAP 配置文件 config/application.yml
2.啓動OAP
1.因爲SkyWalking UI的默認地址是8080,與不少中間件有衝突,能夠修改一下
2.啓動 SkyWalking UI 服務
1.修改探針默認配置 agent/config/agent.config
採樣率修改
agent.sample_n_per_3_secs配置說明:
在訪問量較少時,鏈路全量收集不會對系統帶來太大負擔,可以完整的觀測到系統的運行情況。可是在訪問量較大時,全量的鏈路收集,對鏈路收集的客戶端(agent探針)、服務端(SkyWalking OAP)、存儲器(例如說 Elastcsearch)都會帶來較大的性能開銷,甚至會影響應用的正常運行。在訪問量級較大的狀況下,每每會選擇抽樣採樣,只收集部分鏈路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定義了 agent.sample_n_per_3_secs 配置項,設置每 3 秒可收集的鏈路數據的數量。
2.放置探針:咱們須要將 agent
目錄,拷貝到 Java 應用所在的服務器上。這樣,Java 應用才能夠配置使用該 SkyWalking Agent。經過設置啓動參數的方式檢測系統,沒有代碼侵入。
儀表盤:能夠查看服務性能,接口整體耗時,數據庫sql執行耗時排行等等
拓撲圖:能夠查看已經檢測的服務及服務之間的關係
追蹤:能夠看到服務調用的路徑
追蹤:能夠看到整個鏈路中每個步驟的耗時狀況,其中能夠看到方法中各個sql執行耗時及對應的sql,能夠有針對的優化sql
剛接觸SkyWalking還有不少的功能細節須要再深刻了解,若是發現有問題,歡迎你們指教。