你的Java服務是如何監控的呢?
今天,給大家介紹一個對原始碼0入侵的Java服務監控方式,SkyWalking Agent,只需要啟動Java程式的時候加幾個引數,就能對Java服務進行視覺化監控啦
首次接觸SkyWalking是學習SpringCloud的時候,使用SkyWalking進行鏈路追蹤。使用SkyWalking進行鏈路追蹤時得到的拓撲圖大概是這個樣子(Demo專案),不過鏈路追蹤不是本文介紹的重點,本文主要講解如何使用SkyWalking進行Java服務的監控。
SkyWalking是需要後端服務的,即啟動Java專案的時使用的Agent只負責像SkyWalking後端服務傳送指標資訊,本身只是個使用者端Jar包
直接到SkyWalking的官網下載APM即可,官網地址:https://skywalking.apache.org/
下載完成後解壓,得到這個資料夾:
SkyWalking的後端服務組態檔在 apache-skywalking-apm-bin/webapp 目錄下,主要修改一下伺服器埠號,預設是8080,如果與你的專案埠不衝突的話,可以忽略這一步
Windows的話,直接執行apache-skywalking-apm-bin/bin目錄下的 startup.bat 就好了,其他系統可以執行sh那個。Windows開啟後會出現兩個黑色的框框,不用管他,最小化就好,這時我們需要的SkyWalking後端服務實際已經啟動了。
使用瀏覽器開啟 localhost:18080,如果存取正常,說明服務已正常啟動。
SkyWalking使用了比較簡單的jar包agent方式進行使用者端啟動,Java服務啟動命令新增以下引數
-javaagent:F:\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=localhost:11800
引數說明:
使用瀏覽器存取 localhost:18080
點選Service Name,開啟服務監控面板,其中Overview中記錄了服務的一些基本監控指標,例如:Service Apdex,請求成功率,平均響應時間等
除了服務響應資訊,SkyWalking還可以用來監控JVM。 選擇Instance,並點選節點連結開啟詳情
開啟後的Overview是單個節點的服務響應資訊
選擇JVM後,就是常見的JVM指標啦
可以通過以上儀表盤監控JVM堆記憶體和堆外記憶體大小,gc時間和gc次數,以及執行緒相關資訊和JVM加在的Class數量,基本的錯誤排查大體夠用。不過並沒有JVM老年代和年輕代的具體使用情況,記憶體監控只區分了堆外記憶體和堆記憶體。如果是為了詳細的監控JVM的話,這些指標感覺差點兒意思,後面將再介紹一個擁有更多JVM詳細監控指標的開源專案,及搭建時遇到的問題,歡迎大家一下交流