#!/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:
|