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):
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()