java jmx 监控_只用五分钟为系统实现基于JMX的监控
早期是作為J2EE的一部分, 因此總給人一種開發起來會很"重"的感覺, 這讓不少Java程序員寧愿選擇自行實現"輕量級"方案. 時至今日, 借助一些優秀的開源項目, JMX 也可以用起來很"輕".
pojo-mbean 使用Annotation對MBean進行聲明, 省去不少 JMX規范中要求的羅嗦代碼, 不知道有多羅嗦的請見 這里 . 例如, ManagableServer 希望被聲明為一個MBean, 只有兩個步驟:
注解
@MBean(objectName="jsmx:type=Demo")
class ManagableServer {
@ManagedAttribute
public long getCount() {...}
@ManagedAttribute
public int getGauge() {...}
@ManagedOperation
public void shutdown() {...}
}
注冊
ManagableServer mBean = new ManagableServer();
new MBeanRegistration(mBean).register();
運行之后, 你可以通過 jconsole 查看到已經發布的MBean.
如果 jconsole 就可以滿足你對監控的要求, 那么下文的內容大可不必再看啦.
使用 jolokia 訪問MBean
jconsole 作為JDK自帶的們免費工作還是很強大的, 它提供JVM最基本的監控能力, 然而默認的RMI通訊方式可能會由于安全原因而被限制使用.
jolokia 實現了通過HTTP+JSON的方式訪問MBean, 很好的解決這個問題. 無需額外編寫代碼便可使用, 只需要在啟動命令中指定 -javaagent 選項即可實現:
java -javaagent:/path/to/jolokia-jvm-jdk6-x.xx-agent.jar=port=7777,host=localhost -cp ...
開發一個真正滿足應用的 web console 肯定不是5分鐘能夠搞定的, 專業的監控平臺還是有很多可供使用的, Ganglia 便是其中之一.
如題所述, jmxetric 就提供方便與 Ganglia 集成解決方案, 同樣無需額外編寫代碼, 實現的兩個步驟是:
聲明數據采集點
java -javaagent:/path/to/jmxetric-0.0.x.jar=config=etc/jmxetric.xml,wireformat31x=true -cp ...
在 jmxetric -0.0.6中, 若要設置wireformat31x為true只有在 javaagent option中設置才能生效, 詳情請見 issue25 .
在 Ganglia 中的效果是:
結束語
細節是魔鬼! "5分鐘"雖有點標題黨, 但豐富的開源資源確實令JMX使用變的超級容易啦.完整的Demo在 這里 . 期待更多更好更有創意的做法!
總結
以上是生活随笔為你收集整理的java jmx 监控_只用五分钟为系统实现基于JMX的监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用matlab绘制图形
- 下一篇: matlab 参数识别,[转载]自编最小