【Java監控】使用SkyWalking監控Java服務

2023-08-28 15:02:40

你的Java服務是如何監控的呢?

  •  1.Null:監控?什麼監控?我一個寫程式碼的服務掛了跟我有什麼關係?
  •  2.命令列:服務掛了?記憶體漏失?jstat jmap jcmd,還好不是我寫的
  • 3.擼程式碼:Java採集JVM/伺服器資源資訊 -> Prometheus -> Grafana,請允許我對業務程式碼稍作修改。

今天,給大家介紹一個對原始碼0入侵的Java服務監控方式,SkyWalking Agent,只需要啟動Java程式的時候加幾個引數,就能對Java服務進行視覺化監控啦

首次接觸SkyWalking是學習SpringCloud的時候,使用SkyWalking進行鏈路追蹤。使用SkyWalking進行鏈路追蹤時得到的拓撲圖大概是這個樣子(Demo專案),不過鏈路追蹤不是本文介紹的重點,本文主要講解如何使用SkyWalking進行Java服務的監控。

1.下載並設定SkyWalking的後端服務

SkyWalking是需要後端服務的,即啟動Java專案的時使用的Agent只負責像SkyWalking後端服務傳送指標資訊,本身只是個使用者端Jar包

(1)下載

直接到SkyWalking的官網下載APM即可,官網地址:https://skywalking.apache.org/

下載完成後解壓,得到這個資料夾:

(2)修改組態檔

SkyWalking的後端服務組態檔在 apache-skywalking-apm-bin/webapp 目錄下,主要修改一下伺服器埠號,預設是8080,如果與你的專案埠不衝突的話,可以忽略這一步

(3)啟動SkyWalking後端服務

Windows的話,直接執行apache-skywalking-apm-bin/bin目錄下的 startup.bat 就好了,其他系統可以執行sh那個。Windows開啟後會出現兩個黑色的框框,不用管他,最小化就好,這時我們需要的SkyWalking後端服務實際已經啟動了。

(4)驗證

使用瀏覽器開啟 localhost:18080,如果存取正常,說明服務已正常啟動。 

2.啟動Java專案和SkyWalking Agent

SkyWalking使用了比較簡單的jar包agent方式進行使用者端啟動,Java服務啟動命令新增以下引數

-javaagent:F:\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=localhost:11800

引數說明:

  • -javaagent後新增skywalking-agent.jar的本地路徑,哦,對了,這個agent jar包也是從SkyWalking的官網下載就可以
  • skywalking.agent.service_name,該Java服務在SkyWalking後端服務中的顯示名稱=
  • skywalking.collector.backend_service,SkyWalking的後端服務地址,如果你像我一樣修改了組態檔的話,這裡就應該是 localhost:11800

 3.檢視服務相關監控

使用瀏覽器存取 localhost:18080

 點選Service Name,開啟服務監控面板,其中Overview中記錄了服務的一些基本監控指標,例如:Service Apdex,請求成功率,平均響應時間等

 除了服務響應資訊,SkyWalking還可以用來監控JVM。 選擇Instance,並點選節點連結開啟詳情

開啟後的Overview是單個節點的服務響應資訊

 選擇JVM後,就是常見的JVM指標啦

 可以通過以上儀表盤監控JVM堆記憶體和堆外記憶體大小,gc時間和gc次數,以及執行緒相關資訊和JVM加在的Class數量,基本的錯誤排查大體夠用。不過並沒有JVM老年代和年輕代的具體使用情況,記憶體監控只區分了堆外記憶體和堆記憶體。如果是為了詳細的監控JVM的話,這些指標感覺差點兒意思,後面將再介紹一個擁有更多JVM詳細監控指標的開源專案,及搭建時遇到的問題,歡迎大家一下交流