APM市場(chǎng)非常擁擠。市場(chǎng)上還有另一種選擇:開(kāi)源工具。如果你對(duì)在生產(chǎn)中獲得應(yīng)用程序可見(jiàn)性的簡(jiǎn)單方法感興趣,并且想知道代碼實(shí)際上是如何被監(jiān)控的,那么這些工具是一個(gè)很好的選擇。想學(xué)習(xí)java技術(shù)的同學(xué),不妨報(bào)個(gè)Java培訓(xùn)班,有明確清晰的學(xué)習(xí)路線,理論知識(shí)+實(shí)戰(zhàn)操作,可以獲得快速提升。
開(kāi)源社區(qū)中也有一些關(guān)鍵的APM工具,每種工具都有自己的產(chǎn)品和可能性。這里為你介紹五大可用工具。
1.Stagemonitor
Stagemonitor提供了一個(gè)Java監(jiān)控代理,它是在考慮集群應(yīng)用程序堆棧的情況下構(gòu)建的。這意味著它旨在監(jiān)視在多個(gè)服務(wù)器上運(yùn)行的應(yīng)用程序。該工具與時(shí)間序列數(shù)據(jù)庫(kù)(TSDB)集成。此工具針對(duì)處理時(shí)間序列數(shù)據(jù)以及按時(shí)間索引的數(shù)字?jǐn)?shù)組進(jìn)行了優(yōu)化。這些數(shù)據(jù)庫(kù)包括Elasticsearch、Graphite和InfluxDB。
它是如何工作的?
Stagemonitor包括一個(gè)位于Java應(yīng)用程序中的代理,它向中央數(shù)據(jù)庫(kù)發(fā)送指標(biāo)和請(qǐng)求跟蹤。該工具只需要一個(gè)實(shí)例來(lái)監(jiān)控所有應(yīng)用程序、實(shí)例和主機(jī),并且可以部署在你自己的數(shù)據(jù)中心內(nèi)。
在監(jiān)控方面,你可以從集群或直接從developerserver查看歷史或?qū)崟r(shí)數(shù)據(jù),創(chuàng)建自定義警報(bào)并為每個(gè)指標(biāo)定義閾值。
Stagemonitor包括一個(gè)儀表板,因此你可以可視化和分析你感興趣的不同指標(biāo)和請(qǐng)求。你可以創(chuàng)建自定義儀表板,編寫自定義插件,甚至使用第三方插件。它提供了一個(gè)無(wú)需后端的瀏覽器內(nèi)小部件,可以自動(dòng)注入到被監(jiān)控的網(wǎng)頁(yè)中。你可以通過(guò)以下鏈接觀看現(xiàn)場(chǎng)演示。對(duì)java感興趣的同學(xué)可以參加java培訓(xùn),你可以學(xué)會(huì)更多的java新技術(shù)。
在官方文檔中,Stagemonitor聲明它也支持非基于servlet的應(yīng)用程序,你可以在這里查看完整的需求。
一句話:如果你已經(jīng)熟悉ELKstack,它絕對(duì)值得一試。
2.Pinpoint
Pinpoint是為大規(guī)模分布式系統(tǒng)設(shè)計(jì)的APM工具。它模仿Dapper,一個(gè)由Google構(gòu)建的分布式系統(tǒng)跟蹤基礎(chǔ)設(shè)施,為其開(kāi)發(fā)人員提供更多關(guān)于復(fù)雜分布式系統(tǒng)行為的信息。
它是如何工作的?
該工具通過(guò)跟蹤跨分布式應(yīng)用程序的事務(wù),幫助分析系統(tǒng)的整體結(jié)構(gòu)以及其中的組件是如何相互連接的。這意味著它旨在解釋每個(gè)事務(wù)是如何執(zhí)行的,跟蹤組件之間的流程,以及(前面的壞笑話)指出有問(wèn)題的領(lǐng)域和潛在的瓶頸。
儀表板有助于可視化組件的連接方式,并允許你實(shí)時(shí)監(jiān)控應(yīng)用程序內(nèi)部的活動(dòng)線程。Pinpoint還允許你查看請(qǐng)求計(jì)數(shù)和響應(yīng)模式,以便你能夠識(shí)別潛在的問(wèn)題。你可以查看關(guān)鍵的詳細(xì)信息,包括CPU使用率、內(nèi)存/垃圾收集和JVM參數(shù)。
Pinpoint與無(wú)需任何代碼更改就可以安裝的代理一起工作,你可以在自己的機(jī)器上運(yùn)行一個(gè)示例實(shí)例,方法是為每個(gè)組件運(yùn)行四個(gè)簡(jiǎn)單的腳本:Collector、Web、SampleTestApp和HBase。
一句話:如果你聽(tīng)說(shuō)過(guò)Dapper,或者想要監(jiān)視和分析你復(fù)雜的分布式系統(tǒng),你絕對(duì)應(yīng)該看看這個(gè)工具。想對(duì)java有更深入的了解,可以參加java培訓(xùn),在專業(yè)老師的指導(dǎo)下,可以很全面地掌握java最新的相關(guān)知識(shí)和技能。
3.MoSKito
MoSKito提供三合一工具:
moskito-Essential–基本的獨(dú)立項(xiàng)目。它是MoSKito功能的核心,讓你可以監(jiān)控你的應(yīng)用程序
moskito-Central–用于保存性能數(shù)據(jù)的中央存儲(chǔ)服務(wù)器
moskito-Control——一個(gè)監(jiān)控多節(jié)點(diǎn)web應(yīng)用程序性能的工具
它是如何工作的?
要開(kāi)始,你所需要做的就是將.jar文件放入WEB-INF/lib文件夾,或者在WEB.xml文件中包含一個(gè)新的小節(jié)。一旦該工具啟動(dòng)并運(yùn)行,它就會(huì)收集性能數(shù)據(jù),實(shí)時(shí)分析,并將其存儲(chǔ)以進(jìn)行歷史分析。
該工具收集你的所有性能指標(biāo),如線程、內(nèi)存、緩存、存儲(chǔ)、服務(wù)、注冊(cè)、支付、轉(zhuǎn)換、SQL、負(fù)載分布等。它不需要修改代碼,支持所有主要的應(yīng)用服務(wù)器(Tomcat、Jetty、JBoss、WebLogic),并將數(shù)據(jù)保存在本地。
你還可以獲得一個(gè)通知系統(tǒng)來(lái)了解何時(shí)達(dá)到閾值,以及你想要監(jiān)控的用戶操作的記錄。除了基于web的儀表盤,該工具還提供了一個(gè)移動(dòng)應(yīng)用程序,可隨時(shí)監(jiān)控你的應(yīng)用。
一句話:MoSKito于2007年首次推出,現(xiàn)在它是一個(gè)眾所周知的穩(wěn)定工具,受到團(tuán)隊(duì)和社區(qū)的支持,包括付費(fèi)支持選項(xiàng)。這對(duì)任何開(kāi)源工具來(lái)說(shuō)都是一個(gè)巨大的優(yōu)勢(shì)。java培訓(xùn)課程結(jié)構(gòu)良好,以正確的順序涵蓋了所有這些基本主題,使你的學(xué)習(xí)更加輕松。
4.Glowroot
Glowroot以其快速、干凈和簡(jiǎn)單的APM工具而自豪。它將允許對(duì)緩慢的請(qǐng)求和錯(cuò)誤進(jìn)行跟蹤捕獲,并且你將能夠記錄每個(gè)用戶操作的時(shí)間跟蹤,以及SQL捕獲和聚合。該工具還提供了所有數(shù)據(jù)的歷史匯總,并具有可配置的保留期。
它提供了可視化響應(yīng)時(shí)間分解和響應(yīng)時(shí)間百分比的圖表,它的響應(yīng)UI將允許你從移動(dòng)設(shè)備和桌面監(jiān)控你的應(yīng)用程序。
它是如何工作的?
要開(kāi)始使用Glowroot,需要下載并解壓縮主安裝文件,并將-Javaagent:path/to/glowroot.jar添加到應(yīng)用程序的JVM參數(shù)中。啟動(dòng)應(yīng)用程序后,剩下的就是將瀏覽器指向http://localhost:4000。
一旦該工具啟動(dòng)并運(yùn)行,你將獲得連續(xù)的概要分析(帶有過(guò)濾選項(xiàng)),并能夠設(shè)置響應(yīng)時(shí)間百分比和MBean屬性的警報(bào)。Glowroot完全支持跨多線程的異步請(qǐng)求,它支持Tomcat、TomEE、JBossEAP、Wildfly、Jetty和Glassfish。
如果干凈和簡(jiǎn)單是你正在尋找的,毫無(wú)疑問(wèn)你會(huì)想看看Glowroot而不是這里的其他工具。越來(lái)越多的人選擇參加java培訓(xùn)來(lái)開(kāi)啟自己Java開(kāi)發(fā)人員的職業(yè)人生,這是一個(gè)快速有效的學(xué)習(xí)方式,可以在短時(shí)間內(nèi)掌握java所需的技能,更好地找到工作。
5.Kamon
Kamon是一個(gè)反應(yīng)友好的工具包,為運(yùn)行在JVM之上的應(yīng)用程序而構(gòu)建。更具體地說(shuō),它是為使用類型安全反應(yīng)平臺(tái)(使用Scala、Akka、Spray和/或Play!),但仍然支持任何其他JVM平臺(tái)和語(yǔ)言。
它是如何工作的?
Kamon作為一個(gè)核心模塊發(fā)布,包含所有的度量記錄和跟蹤操作API以及可選模塊,為你的應(yīng)用程序提供字節(jié)碼工具和/或報(bào)告功能。或者換句話說(shuō),它提供了一個(gè)簡(jiǎn)單的API來(lái)記錄度量和跟蹤JVM應(yīng)用程序的信息。
Kamon的所有模塊都可以通過(guò)MavenCentral獲得,你需要將它們作為編譯依賴項(xiàng)添加到你的項(xiàng)目中。一旦你包含了你感興趣的模塊,只需啟動(dòng)Kamon,所有可用的模塊將自動(dòng)啟動(dòng),你不需要顯式激活/啟動(dòng)它們。
跟蹤模塊將允許記錄關(guān)于在你的應(yīng)用程序中執(zhí)行的功能的數(shù)據(jù),度量模塊將允許你控制由用戶代碼或由其他Kamon模塊提供的工具跟蹤的實(shí)體的注冊(cè)。它還具有其他功能,如過(guò)濾、配置儀器工廠和調(diào)度指標(biāo)訂閱。
一句話:如果你正在使用多種JVM語(yǔ)言,或者主要是Scala/Akka,并且想要“一個(gè)工具來(lái)監(jiān)控它們”,Kamon可能是最友好的選擇。
總結(jié)
在APM領(lǐng)域,這些是付費(fèi)工具的很好的替代品。但是……有些人可能認(rèn)為選擇開(kāi)源軟件是省錢的好方法。同樣重要的是要記住,雖然你不需要為使用該工具開(kāi)具發(fā)票,但這并不一定意味著它更便宜。在java培訓(xùn)中,有更加系統(tǒng)全面的課程,明確清晰的學(xué)習(xí)路線,學(xué)習(xí)起來(lái)既輕松,又高效。