#!/usr/bin/env python
#fileencoding: utf-8
ITEMS = [
'jmx["java.lang:type=ClassLoading",LoadedClassCount]' ,
'jmx["java.lang:type=ClassLoading",TotalLoadedClassCount]' ,
'jmx["java.lang:type=ClassLoading",UnloadedClassCount]' ,
'jmx["java.lang:type=Memory",HeapMemoryUsage.committed]' ,
'jmx["java.lang:type=Memory",HeapMemoryUsage.max]' ,
'jmx["java.lang:type=Memory",HeapMemoryUsage.used]' ,
'jmx["java.lang:type=Memory",NonHeapMemoryUsage.committed]' ,
'jmx["java.lang:type=Memory",NonHeapMemoryUsage.max]' ,
'jmx["java.lang:type=Memory",NonHeapMemoryUsage.used]' ,
'jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.committed]' ,
'jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.max]' ,
'jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.used]' ,
'jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.committed]' ,
'jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.max]' ,
'jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.used]' ,
'jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.committed]' ,
'jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.max]' ,
'jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.used]' ,
'jmx["java.lang:type=MemoryPool,name=PS Perm Gen",Usage.committed]' ,
'jmx["java.lang:type=MemoryPool,name=PS Perm Gen",Usage.max]' ,
'jmx["java.lang:type=MemoryPool,name=PS Perm Gen",Usage.used]' ,
'jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.committed]' ,
'jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.max]' ,
'jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.used]' ,
'jmx["java.lang:type=OperatingSystem",MaxFileDescriptorCount]' ,
'jmx["java.lang:type=OperatingSystem",OpenFileDescriptorCount]' ,
'jmx["java.lang:type=Runtime",Uptime]' ,
'jmx["java.lang:type=Threading",DaemonThreadCount]' ,
'jmx["java.lang:type=Threading",PeakThreadCount]' ,
'jmx["java.lang:type=Threading",ThreadCount]' ,
'jmx["java.lang:type=Threading",TotalStartedThreadCount]' ,
'jmx["Standalone:type=GlobalRequestProcessor,name=http-8090",bytesReceived]' ,
'jmx["Standalone:type=GlobalRequestProcessor,name=http-8090",bytesSent]' ,
'jmx["Standalone:type=GlobalRequestProcessor,name=http-8090",errorCount]' ,
'jmx["Standalone:type=GlobalRequestProcessor,name=http-8090",processingTime]' ,
'jmx["Standalone:type=GlobalRequestProcessor,name=http-8090",requestCount]' ,
'jmx["Standalone:type=Manager,path=/,host=localhost",activeSessions]' ,
'jmx["Standalone:type=Manager,path=/,host=localhost",maxActiveSessions]' ,
'jmx["Standalone:type=Manager,path=/,host=localhost",maxActive]' ,
'jmx["Standalone:type=Manager,path=/,host=localhost",rejectedSessions]' ,
'jmx["Standalone:type=Manager,path=/,host=localhost",sessionCounter]' ,
'jmx["Standalone:type=ProtocolHandler,port=8090",compression]' ,
'jmx["Standalone:type=ThreadPool,name=http-8090",currentThreadCount]' ,
'jmx["Standalone:type=ThreadPool,name=http-8090",currentThreadsBusy]' ,
'jmx["Standalone:type=ThreadPool,name=http-8090",maxThreads]' ,
]
from zabbix import Zabbix
from zabbix import json
def getjmxkey(key):
# key = key.replace('http-8080', '\\"http-bio-8080\\"')
# key = key.replace('path=/', 'context=/')
return key
def getjmxvalue(value):
if isinstance (value, dict ):
return value.get( 'value' , u' ').encode(' utf8')
return ''
if __name__ = = '__main__' :
host = 'it-tw01'
zbx = Zabbix()
jmxkeys = [getjmxkey(x) for x in ITEMS]
data = zbx.getjmx( 'it-tw01' , '8410' , jmxkeys)
try :
results = json.loads(data)
except :
results = {}
if isinstance (results, dict ) and results[ 'response' ] = = 'success' :
jmxvalues = [getjmxvalue(x) for x in results.get( 'data' , [])]
hostvalues = {host: dict ( zip (ITEMS, jmxvalues))}
Zabbix(hostvalues).run()
# vim: set sta sw=4 et:
|