2011-06-21 96 views
3

我想通過運行多個java進程的Linux機器上的SNMP監控JVM,每個java進程當然是獨立的,並且具有不同的SNMP計數器(活動線程數,可用內存等等......),文檔中的配置示例假定機器上只有一個java進程。 我正在尋找一個簡單的解決方案,我的監控工具將詢問該主機上的SNMP管理器,而不需要知道每個java進程的端口(如果它會詢問遠程機器的OID - 哪個java進程會回答它...?他知道...?)通過SNMP在同一主機上監控多個java進程

謝謝!!!

回答

2

注意:此解決方案僅適用於遠程JVM進程由您知曉和管理(如啓動和停止)的情況。

爲了能夠在JVM SNMP代理,需要定義下列變量,例如JVM的命令行上:

-Dcom.sun.management.snmp.interface=127.0.0.1 
-Dcom.sun.management.snmp.port=16666 
-Dcom.sun.management.snmp.acl=true 
-Dcom.sun.management.snmp.acl.file=/path/to/your/snmp.acl 

現在,嘗試一些已知的範圍內運行不同的SNMP端口的所有JVM進程(比如說5000到5100)。因此,您知道可以通過您指定的範圍內的SNMP來管理正在運行的JVM進程。嘗試使用不同的SNMP客戶端爲每個端口監視它們。

我不敢肯定,但它應該工作。

4

下載Java MIB文件: Java MIB File,並把它放在:/usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt

  1. 因爲我們要遠程詢問SNMP,我們需要設置的網絡接口,以及:

    -Dcom.sun.management.snmp.port = 8161 -Dcom.sun.management.snmp.interface = 0.0.0.0

  2. 因爲有我們需要添加(頂部)沒有默認社區到snmpd.conf:

    rocommunity公共

  3. 因爲Java進程監聽特定的端口,我們要消滅計算機網絡拓撲之外 - 我們需要配置到特定的OID前綴轉發到代理服務器路由選擇的snmpd.conf中:

    代理-m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2C -c public localhost:8161 .1.3.6.1.4.1.42.2.145

  4. 因爲我們要問在同一臺機器上相同的OID,而機器運行的守護進程的多個實例 - 我們需要映射虛構OID爲每個實例Java進程OID在snmpd.conf中:

    proxy -m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2c -c public localhost:8161 .1.3.6.1.4.1.42.2.99 .1.3.6.1.4.1.42.2 .145

    proxy -m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2c -c public localhost:8162 .1.3.6.1.4.1.42.2.999 .1.3.6.1.4.1 .42.2。145

  5. 重啓snmpd,並與測試:

    snmpwalk的-v 2C -c公共本地主機.1.3.6.1.4.1.42.2.99

    運行snmpwalk -v 2c的公共-c localhost .1.3.6.1.4.1.42.2.999

相關問題