UAVStack推出的JVM監控分析工具提供基於頁面的展示方式,以圖形化的方式展現採集到的監控數據;同時提供JVM基本參數獲取、內存dump、線程分析、內存分配採樣和熱點方法分析等功能。前端
做爲AllInOne的智能化服務技術棧,UAVStack提供了很是全面的監控數據採樣功能,同時支持數據監控與預警。近期,咱們整合了原有的數據採集展現功能,新增JVM分析功能,推出了更易用的JVM監控分析工具。git
熟悉JDK的開發者都知道,JDK自己提供了一套JVM分析工具,包括jinfo、jmap、jstack等。用戶能夠經過命令行輕鬆獲取JVM內存堆棧信息、內存對象分配以及JVM啓動基本參數信息。但這些工具須要在命令行環境中執行,且生產環境下則須要經過堡壘機轉發。github
開源社區一些不錯的JVM分析工具也能夠提供獲取JVM基本信息、追蹤堆棧、獲取內存信息等功能,但一樣須要命令行CLI的支持。服務器
UAVStack推出的JVM監控分析工具提供基於頁面的展示方式,以圖形化的方式展現採集到的監控數據;同時提供JVM基本參數獲取、內存dump、線程分析、內存分配採樣和熱點方法分析等功能。架構
JVM監控分析工具基於UAVStack既有架構,總體分爲前端、後臺及中間件加強框架(MOF)。其中:框架
總體架構流程以下圖所示:運維
JMX提供相關接口,獲取基礎的JVM監控數據,如內存堆大小、GC狀況等,是JVM監控數據的基礎。工具
做爲分析工具整條鏈路的基礎,MOF依附於用戶應用,主要提供如下基礎支持:性能
Java Attach API是由Sun提供的一套非標準API,能夠將用戶鏈接到運行中的虛擬機進程上,進行agent的掛載等操做。優化
在JVM監控分析工具中,Java Attach API主要用於Attach到虛擬機進程,進行以下操做:
選擇應用實例後便可進入基本監控頁面。
該頁面主要展現CPU使用率、線程狀況、內存佔用和GC狀況。用戶能夠根據需求調整時間範圍,查看不一樣時段的監控數據。
JVM摘要頁面顯示當前虛擬機的基本參數信息,包括基本信息、JVM參數和系統屬性。其中:
線程分析經過執行jstack獲取線程基本信息,並對輸出結果進行分析,獲得線程狀態數量、有無死鎖等信息。
內存Dump經過執行jmap獲取指定JVM的堆棧dump文件。
用戶能夠便捷地在前端一鍵生成dump,不須要再登陸堡壘機。點擊「刷新」能夠查看近期dump內存的操做記錄。
CPU分析是基於線程棧的採樣分析,主要提供兩個功能:線程執行時間以及方法熱點採樣。
內存分析是基於線程以及堆的統計採樣分析,主要提供兩個功能:每一個線程的內存分配和堆內分配細節。
JVM監控分析工具是從監控、分析到展現的一體化工具。JDK自帶的工具雖然也能夠實現除CPU分析以外的其餘功能,但不夠便捷,也沒法實現從採樣、分析到圖形化展現的一體化效果。JVM監控分析工具解決了開發人員沒有線上應用堡壘機權限、沒法分析採集到的數據等痛點,同時提供CPU與內存採樣分析等功能,以較低的性能開銷獲取較爲全面的JVM運行數據,幫助應用開發人員發現與分析問題,爲應用開發優化提供參考依據。
UAVStack已在Github上開放源碼,並提供了安裝部署、架構說明和用戶指南等雙語文檔。
官方網站:https://uavorg.github.io/main/
開源地址:https://github.com/uavorg
做者:張明明
首發於:UAVStack智能運維