java監(jiān)控技術(shù)(jmx監(jiān)控java調(diào)用)

發(fā)布時間:2024-03-14
本文主要介紹java監(jiān)控技術(shù)(jmx監(jiān)控java調(diào)用),下面一起看看java監(jiān)控技術(shù)(jmx監(jiān)控java調(diào)用)相關(guān)資訊。
再喜歡,動力無限。h:)搜索 程阿郎 。
本文已被github.com/niumoo/javanot
arthas-解決java在線問題的終極武器。使用jmh測試java 測試 java中的監(jiān)控和管理原則概述。使用jmx監(jiān)控和管理java程序1。什么是jmx?java管理擴展(java management extensions,jmx)技術(shù)是java se平臺的一個標準功能,它提供了一種簡單、標準的來監(jiān)控和管理資源,并為如何定義一個資源給出了清晰的結(jié)構(gòu)和設計模式,主要用于監(jiān)控和管理java應用程序的運行狀態(tài)、設備和資源信息,以及java虛擬機的運行情況。jmx可以是動態(tài)的,因此在創(chuàng)建、安裝和實現(xiàn)資源時,也可以對其進行動態(tài)監(jiān)控和管理。jdk附帶的jconsole是由jmx技術(shù)公司實現(xiàn)的監(jiān)控工具。
使用jmx技術(shù)時,可以定義一個名為mbean或mxbean的java對象來表示要管理指定的資源,然后可以向mbean server注冊資源信息,對外提供服務。mbean server充當代理,對外提供服務,對內(nèi)管理mbean資源。這樣優(yōu)雅的設計使得mbean資源管理和mbean服務器代理完全獨立,從而可以自由控制mbean資源信息。
jmx不僅用于本地管理,jmx遠程api為jmx增加了遠程功能,使其能夠通過網(wǎng)絡遠程監(jiān)控和管理應用程序。
2.為什么使用jmx技術(shù)?jmx技術(shù)為java開發(fā)人員提供了一種簡單、靈活和標準的方法來監(jiān)控java應用程序。由于相對獨立的架構(gòu)設計,jmx可以順利集成到各種監(jiān)控系統(tǒng)中。
以下是jmx的一些具體優(yōu)勢:
開箱即用的監(jiān)控功能,jmx是java se的標準部分。提供資源管理、服務托管、遠程監(jiān)控等基本管理功能,可以直接啟用。jmx技術(shù)提供了資源、系統(tǒng)、應用程序和網(wǎng)絡的通用和標準管理模式,不僅可以在本地使用,還可以遠程使用。還可以擴展到其他場景,比如java ee應用。jmx技術(shù)提供了jvm狀態(tài)的監(jiān)控功能。jmx內(nèi)置了jvm的監(jiān)控功能,可以監(jiān)控和管理jvm,非常方便。jmx建筑設計優(yōu)秀,組件設計可以自由擴展。jmx技術(shù)嚴格遵守現(xiàn)有的java規(guī)范,如jndi規(guī)范。jmx可以與其他管理解決方案自由集成。多虧了開放的jmx api,jmx的資源可以通過網(wǎng)絡服務來管理。3.jmx技術(shù)架構(gòu)jmx技術(shù)架構(gòu)主要由資源管理模塊(mbean/mxbean)、資源代理模塊(mbean server)和遠程管理模塊(remote api)組成。下圖來自維基百科,很好的展示了三個模塊之間的關(guān)系。
3.1.資源管理mbean資源管理被標識為體系結(jié)構(gòu)中的資源探測級別。在jmx中,用mbean或mxbean來表示一個資源(以下簡稱mbean),資源也是通過mbean來訪問和管理的,所以mbean中往往包含了資源的屬性和操作方法。
jmx對jvm進行了多維度的資源檢測,很容易啟動jmx代理訪問內(nèi)置的jvm資源檢測,從而通過jmx技術(shù)遠程監(jiān)控和管理jvm。
下面列出了jmx ;的資源檢測類的jvm,所有這些都可以直接使用。
資源接口classloadingmxbean類管理的資源對象namevm中的實例數(shù)loads java . lang: type = class loading 1 compilation mxbean assembly system java . lang: type = compilation io。垃圾收集器mxb: type =垃圾收集器,name =收集器名稱1或多個日志mx bean日志系統(tǒng)java . util . logging : type = logging 1 memorymanagermxbean內(nèi)存池java . lange cho 9-@.com typ: type = memorypool,name=poolname1或多個memorymxbean內(nèi)存系統(tǒng)java . lang: type = memory 1 operatingsystemmxbean操作系統(tǒng)java . lang: type = operating system 1 runtime mxb。ean運行時系統(tǒng)java . lange cho 9-@ .com type = runtime 1 threadmxbean線程系統(tǒng)java . lange cho 9-@ .com type = threading 1下面的代碼示例演示了一個使用jmx來檢測jvm的一些信息的代碼示例。
包com . wd byte . jmx;導入java . lang . management . compilation mx bean;導入java . lang . management . garbagecollectormxbean;導入java . lang . management . management factory;導入java . lang . management . memorymxbean;導入java . lang . management . memorymanagermxbean;導入java . lang . management . memory usage;導入java . lang . management . operatingsystemmxbean;導入java . util . list;導入java . util . stream . collectors;/* * * jmx jvm * * @作者 */public class javamanagementextensions { public static void main(string[]args){ operatingsystemmxbean operatingsystemmxbean = management factory . getoperatingsystemmxbean;string osname = operatingsystemmxbean . getname;string os version = operatingsystemmxbean . getversion;int processors = operatingsystemmxbean . getavailableprocessors;系統(tǒng)。out . println(string . format( 操作系統(tǒng):%s,版本:%s,處理器:% d osname,osversion,processors));compilationmxbean compilationmxbean = management factory . getcompilationmxbean;string compilation mx bean name = compilation mx bean . getname;system . out . println( 編譯系統(tǒng): compilationmxbeanname);memorymxbean memorymxbean = management factory . getmemorymxbean;memoryusage heapmemoryusage = memorymxbean . getheapmemoryusage;long max = heapmemoryusage . get max;long used = heapmemoryusage . get used;系統(tǒng)。out . println(string . format( 使用的內(nèi)存:% dmb/% dmb ,已用/1024/1024,max/1024/1024));listgarbagecollectormxbean gcmxbeans = management factory . getgarbagecollectormxbeans;string gcnames = gcmxbeans.stream。地圖(memorymanagermxbean:: getname)。收集(collectors . joining( , ));system.out . println( 垃圾收集器: gc names);}}跑步可以得到以下結(jié)果:
操作系統(tǒng):mac os x,版本:11.6,處理器:12編譯系統(tǒng):hotspot 64位分層編譯器,內(nèi)存:3mb/4096mb,垃圾收集器:g1年輕一代,g1老一代3.2 .資源代理mbean服務器資源代理mbean服務器是mbean資源的代理,可用于遠程管理。mbean資源和mbean服務器通常在同一個jvm中,但這不是必需的。
如果希望mbean server管理mbean資源,則必須首先向mbean server注冊資源,并且可以注冊任何符合jmx的mbean資源。最后,mbean服務器將公開一個遠程通信接口,向外界提供服務。
3.3.jmx遠程管理可以通過網(wǎng)絡協(xié)議訪問jmx api,如http協(xié)議、snmp(網(wǎng)絡管理協(xié)議)協(xié)議、rmi遠程調(diào)用協(xié)議等。jmx技術(shù)默認實現(xiàn)rmi遠程調(diào)用協(xié)議。
由于資源管理mbean的完全解耦,資源管理功能可以很容易地擴展到其他協(xié)議,例如通過http在網(wǎng)頁上進行管理。
4.jmx的具體使用已經(jīng)在資源管理mbean部分演示了使用jmx獲取jvm運行信息,那么如果要定制一個資源mbean呢?
下面是一個模擬內(nèi)存資源mbean并最終遠程管理它的示例。
4.1.編寫資源管理mbean mbean的編寫必須符合jmx的設計規(guī)范。mbean就像一個特殊的java bean,需要一個接口和一個實現(xiàn)類。mbean資源接口始終以mbean或mxbean結(jié)尾,實現(xiàn)類以除mbean或mxbean之外的接口命名。
編寫一個內(nèi)存資源管理mbean接口,定義如下:
包com . wd byt */公共接口mymemorymbean { long gettotal;void settotal(long total);long get used;void setused(長期使用);字符串domemoryinfo;}然后實現(xiàn)這個接口:
包com . wd byt */公共類mymemory實現(xiàn)mymemorymbean {私有l(wèi)ong total私人長期使用;@ override public long get total{ return total;} @ override public void set total(long total){ this . total = total;} @override公共long get used{ return used;} @override public void setused(長時間使用){ this.used = used} @ override public string do memory info{ return string . format( 使用內(nèi)存: % dmb/% dmb ,已用,合計);}}這個例子在mymemory.java中只有兩個long基本類型屬性,所以接口以mbean結(jié)尾。如果資源實現(xiàn)類中的屬性是對自定義實體類的引用,那么接口需要以mxbean結(jié)尾。
這樣就完成了線程號資源mbean的創(chuàng)建,其中total和used是資源屬性,domemoryinfo是資源操作方法。
4.2.向mbean server注冊資源從上面的jmx架構(gòu)圖中,我們知道m(xù)bean資源需要注冊到mbean server進行代理,才能對外公開調(diào)用,所以我們想遠程管理我們定制的mymemory資源,需要先進行代理。
包com . wd byte . jmx;導入java . lang . management . management factory;import javax . management . instancealreadyexistsexception;導入javax.management。mbeanregistrationexception導入javax . management . mbean server;導入javax . management . malformedobjectname exception;import javax . management . notcompliantmbeanexception;導入javax . management . object nam */public類mymemorymanagement { public static void main(string[]args)拋出malformedobjectnameexception,notcompliantmbeanexception,instancealreadyexistsexception,mbeanregistrationexception,interrupted exception {//get mbean server mbean server serverplatformmbean server = management factory。getplatformmbeanserver;my memory my memory = new my memory;my memory . set total(100 l);my memory . set used(20l);//注冊對象名object name =新對象名( com . wd byte . jmx: type = my memory );platformmbean server . register mbean(my memory,object nam: 20mb/100 mb使用內(nèi)存: 20mb/100 mb不帶任何jvm參數(shù)啟動java程序。訂單,jmx只能在當前機器問。如果要通過網(wǎng)絡遠程訪問,需要在啟動時指定當前機器ip和開放端口。
$ java-dcom . sun . management . jmx remote = true \ #啟用遠程訪問-dcom . sun . management . jmx remote . port = 8398 \ #自定義jmx端口-dcom . sun . management . jmx remote . ssl = false \ #無論是否使用ssl協(xié)議,都必須打開生產(chǎn)環(huán)境-dcom。sun . management . jmx remote . authenticate = false \ #是否需要身份驗證,生產(chǎn)環(huán)境是否必須打開-dj ava . rmi . server . hostname = 150.158.2.56 yourclass.java #當前機器ip4.3 .遠程管理jconsolejconsole是基于java自帶的jmx技術(shù)的監(jiān)控和管理工具。如果已經(jīng)配置了jdk環(huán)境變量,可以通過jconsole命令直接從控制臺啟動它。
啟動jconsole后,將列出當前機器上的java進程。在這里選擇要監(jiān)控的java進程進行監(jiān)控,連接后會有不安全協(xié)議的提示,因為java程序默認啟動是不會配置https協(xié)議的原因。
連接后可以看到多維度的jvm監(jiān)控信息,這些信息是通過讀取jvm資源mbean信息獲得的。
下一頁列出了線程信息。注意底部的線程信息,可以看到rmi tcp線程,這也證明了jmx是默認由rmi協(xié)議遠程管理的。
在mbean頁面上,可以瀏覽所有可管理的mbean信息,還可以看到我們自定義的com.wdbyt: 20mb/100 mb使用內(nèi)存: 20mb/100 mb使用內(nèi)存: 20mb/100 mb使用內(nèi)存: 30mb/100 mb在操作中,可以調(diào)用domemoryinfo方法。調(diào)用后,可以看到返回值中使用的內(nèi)存已經(jīng)從啟動時的20mb更新為30mb。
和往常一樣,本文中的代碼示例存儲在github中。com/niumoo/javanotes。
當前系列:
arthas-解決java在線問題的終極武器。使用jmh測試java 測試 java中的監(jiān)控和管理原則概述。使用jmx監(jiān)控和管理java程序參考:

你好世界:)i ;m阿郎,一線技術(shù)工具人,認真寫文章,求個贊。
文章不斷更新??梢躁P(guān)注官方賬號 標準普爾程阿郎 或者訪問未讀代碼博客。
這篇文章已經(jīng)被github.com/niumoo/javanotes,收錄了很多知識點和系列文章。歡迎來到星空。
標簽:
資源記憶
了解更多java監(jiān)控技術(shù)(jmx監(jiān)控java調(diào)用)相關(guān)內(nèi)容請關(guān)注本站點。
上一個:美國rheodyne自動閥
下一個:win10移動硬盤不顯示,Win10怎么彈出移動硬盤

CC0201CRNPO8BNR56,NPO 0201 0.56pF ±0.25pF 25V
再婚前財產(chǎn)又離婚怎么分
秋栽棗樹嚴把六關(guān)
狀態(tài)觀測器設計
品茶融入到安溪人的骨子里
win10怎樣升級到win11(windows 10怎么升級到windows 11)
自制瘦身茶強力去油膩
詐騙團伙員工怎么定罪
認購遇冷后又遭做空,華住集團今日香港“二次上市”!
鑒別茶葉真假的四個特征
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos