美文网首页
监控tomcat的jvm

监控tomcat的jvm

作者: 老夫刘某 | 来源:发表于2017-10-28 11:57 被阅读0次

    线上要做zabbix监控jvm,但是使用一般的方法通常是要重新编译zabbix-server,让其增加java模块,然后安装jmx,这样做的代价就是要停止server,这期间,使用jmx多少也会对tomcat的性能有所影响,所以就自己用tomcat自带的jvm查询工具,通过自己收集,自定义jvm收集项目,但是要是通过shell函数编写的话,我大概算了下,下来得160多行,最后放弃了,感觉还是用python的字典弄比较简单:

    #!/usr/bin/python
    #coding: UTF-8
    import psutil
    import os
    import sys
    import re
    import string
    tttt='''
    
        NGCMN:新生代最小容量
        NGCMX:新生代最大容量
        NGC:当前新生代容量
        S0C:第一个幸存区大小
        S1C:第二个幸存区的大小
        EC:伊甸园区的大小
        OGCMN:老年代最小容量
        OGCMX:老年代最大容量
        OGC:当前老年代大小
        OC:当前老年代大小
        MCMN:最小元数据容量
        MCMX:最大元数据容量
        MC:当前元数据空间大小
        CCSMN:最小压缩类空间大小
        CCSMX:最大压缩类空间大小
        CCSC:当前压缩类空间大小
        YGC:年轻代gc次数
        FGC:老年代GC次数
    
    '''
    #获取tomcat程序pid
    tt=os.popen('jps|grep -v "[a-zA-Z]"').read()
    even=tt.split()
    
    #print(tttt)
    #pids = psutil.pids()
    #count=0
    #tt=[]
    #for pid in pids:
    #    count+=1
    #    p = psutil.Process(pid)
    #    t=p.name()
    #    if t == "jsvc" and count <= '8':
    #        print("pid:%d" %(pid))
    #        tt.append(pid)
    #    else:
    #        pass
    
    projt=os.popen('ls /usr/local/services/apache-tomcat/').readlines()
    #上面这不也可以用os.listdir以及os的其他模块来获得
    dd = ''.join(projt).split('\n')
    #even=tt[1::2]
    dictl={}
    for i in even:
        proj=os.popen('ps aux|grep %s' %(i)).readlines()
        String=''.join(proj)
        for keyword in dd:
            result = String.find(keyword)
            if result == -1:
                break
            else:
               # print(keyword)
    
                dictl[keyword]=i
    #根据ppid获取相应项目的jvm使用情况
    ppid=dictl[sys.argv[1]]
    ttt=os.popen('jstat -gccapacity %s' %(ppid)).readlines() 
    name=ttt[0].split()
    value=ttt[1].split()
    all_dic=dict(zip(name,value))
    print(all_dic[sys.argv[2]])      #其中sys.argv[1]是项目名称,sys.argv[2]是最上面的tttt变量的注释中的某一个值
    

    如下执行结果:

    [root@soa-prod-admin-glb-010177210101 /home/liujiangbo] 22:55:39 0
    # python test5.py disconf  NGCMX
    524288.0
    

    相关文章

      网友评论

          本文标题:监控tomcat的jvm

          本文链接:https://www.haomeiwen.com/subject/cbojpxtx.html