2014年12月19日 星期五

JVM Monitoring using SNMP in Cacti

Cacti 是個監控工具,可以透過 SNMP 監控主機的運行狀態,預設可以監控 OS 的 CPU、Memory、Disk、Network usage,這裡我們說明透過 JVM-MANAGEMENT-MIB 讓 JVM 也能被 Cacti 監控。

步驟:
  1. 在被監控端安裝 snmpd,參考:Monitoring Performance with Net-SNMP
  2. 在監控端安裝 Cacti,CentOS / Fedora 用戶直接執行 yum install cacti。
  3. 啟動 JVM SNMP 功能,在執行 java command 加上:
    1. -Dcom.sun.management.snmp.port=1610
    2. -Dcom.sun.management.snmp.acl.file=snmp.acl
  4. snmp.acl 從 $JAVA_HOME/jre/lib/management/snmp.acl.template 複製,將最後的 acl、trap 區塊 uncomment。
  5. 修改 snmpd.conf,加上 proxy -v 2c -c public localhost:1610 .1.3.6.1.4.1.42。
  6. 複製 jvm_mem_pool.xmljvm_gc.xml 到 Cacti 的 snmp_queries 目錄下。
  7. 到 Cacti 的管理介面匯入 cacti_host_template_jvm_snmp_host.xml
  8. 成功匯入後會看到 Host Templates 多了一個名為 JVM SNMP Host 的 template,其下有:
    1. Associated Graph Templates
      1. JVM - Classes Count
      2. JVM - Heap Usage
      3. JVM - NonHeap Usage
      4. JVM - Thread Usage
    2. Associated Data Queries
      1. JVM - Garbage Collection Query
      2. JVM - Memory Pool Query
      3. SNMP - Get Mounted Partitions
      4. SNMP - Get Processor Information
      5. SNMP - Interface Statistics
  9. 在 Cacti 新增 Device 時,Host Template 選取 JVM SNMP Host。
  10. 相關檔案可在 https://github.com/linuschien/Cacti 取得。
  11. 範例 JVM Heap Memory Usage 圖: