当前位置: > Linux服务器 > Tomcat >

Zabbix 监控 Tomcat

时间:2015-08-04 17:43来源:linux.it.net.cn 作者:IT

监控图如下:

zabbix-jmap

zabbix-jmap

 

 

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

 
 
 
 
 
 
Python
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/python
#-conding:utf-8--#
#-------------------------------------------------------------------------------
# Name:        Jmap.py
#
# Author:      LiuSha
#
# Created:     9/29/2014
# Copyright:   (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
import subprocess
import re
import os
 
def 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, stderrdata
 
def 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

 
 
 
 
 
 
Python
 
1
2
3
4
5
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如下:

 
 
 
 
Python
 
1
2
3
4
5
6
7
8
UserParameter=Tomcat.PSOldGeneration.capacity[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration capacity
UserParameter=Tomcat.PSOldGeneration.free[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration free
UserParameter=Tomcat.PSOldGeneration.used[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration used
UserParameter=Tomcat.PSOldGeneration.percent[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSOldGeneration percent
UserParameter=Tomcat.PSPermGeneration.capacity[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration capacity
UserParameter=Tomcat.PSPermGeneration.free[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration free
UserParameter=Tomcat.PSPermGeneration.used[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration used
UserParameter=Tomcat.PSPermGeneration.percent[*],/usr/bin/python /software/zabbix/scripts/Dict.py PSPermGeneration percent
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容