Zabbix 监控Tomcat

使用Zabbix监控Tomcat 我早期使用了Zabbix的内置模板,因为得到的数据没太多用,后改用去调jmap的输出,现在每三分钟执行一次脚本,每30秒取一次值,PSPermGeneration和PSOldGeneration做为报警标准.

监控图如下:

zabbix-jmap

代码如下,通过执行jmap heap处理堆信息生成一个Dict,实现的比较妖孽 需要依赖crontab 定时执行….(模板文末下载)

#!/usr/bin/python#-conding:utf-8--##-------------------------------------------------------------------------------# Name:        Jmap.py## Author:      LiuSha## Created:     9/29/2014# Copyright:   (c) WDZJ-SA 2014#-------------------------------------------------------------------------------import subprocessimport reimport osdef runCommand(cmd,stdinstr = ''):    p=subprocess.Popen(cmd, shell=True, universal_newlines=True, stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)    stdoutdata, stderrdata = p.communicate(stdinstr)    return p.returncode, stdoutdata, stderrdatadef FormatValue():    Dict = {'PSOldGeneration':{'percent':''},'PSPermGeneration':{'percent':''}}    _Output = runCommand("""jmap -heap `ps aux | grep "/home/tomcat/tomcat/apache-tomcat-7.0.53/conf/logging.properties" | awk '!/grep/{print $2}'`""")[1].replace(' ','').split('\n')    _NewOpt = [x for x in _Output if x]    for i in _NewOpt[-10:-7]:        Dict['PSOldGeneration'][i.split('=')[0]] =  re.findall('\d+',i.split('=')[1])[0]    Dict['PSOldGeneration']['percent'] = re.findall('\d+\D+\d+',_NewOpt[-7])[0]    for i in _NewOpt[-5:-2]:        Dict['PSPermGeneration'][i.split('=')[0]] =  re.findall('\d+',i.split('=')[1])[0]    Dict['PSPermGeneration']['percent'] = re.findall('\d+\D+\d+',_NewOpt[-2])[0]    file = open('%s/Dict.py'%os.path.dirname(__file__),'w')    file.write("""Dict = %s\n\nif __name__ == '__main__':    import sys    print Dict[sys.argv[1]][sys.argv[2]]"""%repr(Dict))    file.close()if __name__ == '__main__':    FormatValue()

生成的Dict.py

Dict = {'PSOldGeneration': {'capacity': '602406912', 'used': '101426704', 'percent': '16.8369090691974', 'free': '500980208'}, 'PSPermGeneration': {'capacity': '268435456', 'used': '71036880', 'percent': '26.463299989700317', 'free': '197398576'}}if __name__ == '__main__':    import sys    print Dict[sys.argv[1]][sys.argv[2]]

相关Key如下:

UserParameter=Tomcat.PSOldGeneration.capacity[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration capacityUserParameter=Tomcat.PSOldGeneration.free[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration freeUserParameter=Tomcat.PSOldGeneration.used[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration usedUserParameter=Tomcat.PSOldGeneration.percent[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration percentUserParameter=Tomcat.PSPermGeneration.capacity[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration capacityUserParameter=Tomcat.PSPermGeneration.free[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration freeUserParameter=Tomcat.PSPermGeneration.used[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration usedUserParameter=Tomcat.PSPermGeneration.percent[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration percent
Zabbix-tomcat模板下载地址

相关文章:

你感兴趣的文章:

标签云: