文章出處

近期看了一下JVM對監控的支持,除了常規的JMX外居然還有SNMP, 有點意思, 這個網管協議適配的地方還真多,那么就先測試一下。

先隨便找一個能在后臺持續運行的java小程序,如我手頭的BIO的socket服務器。

 

JVM端SNMP的配置

啟動SNMP需要兩個地方更改,(http://docs.oracle.com/javase/7/docs/technotes/guides/management/snmp.html)

  • 在jvm的system properties上加一個

com.sun.management.snmp.port=PORT_NUMBER, PORT_NUMBER指JVM監控的SNMP端口,常規應該是161

  • 還需要Copy the ACL template file from JRE_HOME/lib/management/snmp.acl.template to JRE_HOME/lib/management/snmp.acl.

將這個原始的模板文件改一下,解注釋掉一些comments,變為以下格式:

 acl = {
  {
    communities = public, private
    access = read-only
    managers = localhost
  }
 }
 trap = {
   {
     trap-community = public
     hosts = localhost 
   }
 }

然后操作系統改一下,讓這個acl文件只有一個owner,就是啟動java的這個用戶的名字,如何改參考這個文章http://docs.oracle.com/javase/6/docs/technotes/guides/management/security-windows.html

如果這步不搞,啟動時會報錯

Error: Password file read access must be restricted: C:\Program Files\Java\jre7\
lib\management\snmp.acl

我這里嫌麻煩,直接將啟動參數設成不檢查(com.sun.management.snmp.acl=false),這樣能跳過這個檢查

java -Dcom.sun.management.snmp.port=161 -Dcom.sun.management.snmp.acl=false com.tool.server.MyBIOServer

這里JVM這邊的配置就都OK了。

 

SNMP管理端的配置

先到這個地址下JVM的SNMP MIB文件:http://java.sun.com/j2se/1.5.0/docs/guide/management/JVM-MANAGEMENT-MIB.mib

然后找一個SNMP客戶端,我用的是iReasoning MIB Browser,load這個下過來的MIB文件。

地址填上localhost, 端口用我們之前設置的161, 直接walk一下被管理端JVM的所有暴露出來的屬性

可以看到各種JVM內部信息都有, jvmClassessLoadedCount 等,還支持trap,低內存警告,還是不錯。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()