精华内容
下载资源
问答
  • 但是使用命令jstat只能查看一段时间的数据,不能总是盯着屏幕手动查看,于是想到了将jstat的数据通过zabbix进行绘图展现并报警。同时,一台服务器上可能会有多个Java程序在运行,包括不同的Tomcat,或者是其他Java...

    一 应用场景描述

    最近线上业务的Tomcat总是崩溃停止服务。使用jstat命令查看Java进程的JVM内存信息。但是使用命令jstat只能查看一段时间的数据,不能总是盯着屏幕手动查看,于是想到了将jstat的数据通过zabbix进行绘图展现并报警。同时,一台服务器上可能会有多个Java程序在运行,包括不同的Tomcat,或者是其他Java应用,例如Logstash,Elasticsearch等。这就需要用到Zabbix的Low Level Discovery功能。

    二 编写监控脚本

    在编写脚本之前需要了解jstat命令的使用,详细使用方法可以参考官方文档或者man手册。还有需要了解JVM虚拟机的内存管理和垃圾回收机制。知道什么是Eden Space,S0 Space,S1 Space和Old Space以及Perm Space等

    09946afa4ca3e3ea902d7a2e964fb1bf.png

    关于Java内存管理和垃圾回收的理论知识可以参考文章

    $ sudo /opt/app/jdk/bin/jstat -gc 30166

    S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT

    195904.0 195904.0 19609.5  0.0   1567680.0 561577.4 13769152.0 2668191.5  42944.0 42827.3   8714  345.808   0      0.000  345.808

    $ sudo /opt/app/jdk/bin/jstat -gcutil 30166

    S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT

    10.01   0.00  90.27  19.38  99.73   8714  345.808     0    0.000  345.808$ sudo /opt/app/jdk/bin/jstat -gccapacity 30166

    NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC

    1959488.0 1959488.0 1959488.0 195904.0 195904.0 1567680.0 13769152.0 13769152.0 13769152.0 13769152.0  21248.0 169984.0  42944.0  42944.0   8717     0

    -gc 和 -gccapacity显示的大小是KB

    显示两行信息

    如果通过zabbix agent的方式获取不同字段的值

    可以这样

    sudo /opt/app/jdk/bin/jstat -gcutil 30166|awk '{print $4}'|grep -E '^[0-9]'

    如果使用zabbix sender的方式发送数据,可以将显示的结果生成一个python字典

    {'S0':7.43,'S1':0.00,'E':86.62',.................}

    将这个字典中的数据全部通过zabbix_sender发送到zabbix_proxy或者zabbix_server,需要注意的是zabbix_sender指定的主机名需要和zabbix页面配置的主机名相同

    Java服务发现脚本

    java_discovery.py

    脚本中的发现规则根据情况自己定义,这里定义三个规则,/opt/app/下面所有tomcat-开头的tomcat服务,/opt/logs/logstash/和/opt/app/elasticsearch目录下的规则

    #/usr/bin/python

    #This script is used to discovery disk on the server

    import subprocess

    import os

    import socket

    import json

    import glob

    java_names_file='java_names.txt'

    javas=[]

    if os.path.isfile(java_names_file):

    #   print 'java_names_file exists!'

    #####

    ##### here should use % (java_names_file) instead of using the python variable java_names_file directly inside the '''   ''' quotes

    #####

    args='''awk -F':' '{print $1':'$2}' %s'''  % (java_names_file)

    t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]

    elif glob.glob('/opt/app/tomcat-*') and not os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen('ls /opt/app/tomcat-*|grep tomcat_',shell=True,stdout=subprocess.PIPE)

    elif not glob.glob('/opt/app/tomcat-*') and os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen(''' ls /opt/logs/logstash/|grep -E 'logstash_'|sed 's/.log//g' ''',shell=True,stdout=subprocess.PIPE)

    elif not glob.glob('/opt/app/tomcat-*') and not os.path.isdir('/opt/logs/logstash') and  os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen(''' ls /opt/app/elasticsearch/config|grep -E 'elasticsearch.yml'| sed 's/.yml//g' ''',shell=True,stdout=subprocess.PIPE)

    elif not glob.glob('/opt/app/tomcat-*') and os.path.isdir('/opt/logs/logstash') and  os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen(''' ls /opt/logs/logstash  /opt/app/elasticsearch/config|grep -E 'logstash_|elasticsearch.yml'| sed 's/.log\|.yml//g' ''',shell=True,stdout=subprocess.PIPE)

    elif  glob.glob('/opt/app/tomcat-*')  and os.path.isdir('/opt/logs/logstash') and not os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen('''ls /opt/app/tomcat-* /opt/logs/logstash/|grep -E 'tomcat_|logstash_'|sed 's/.log//g' ''',shell=True,stdout=subprocess.PIPE)

    elif  glob.glob('/opt/app/tomcat-*') and os.path.isdir('/opt/logs/logstash')  and os.path.isdir('/opt/app/elasticsearch/config'):

    t=subprocess.Popen('''ls  /opt/app/tomcat-* /opt/logs/logstash/ /opt/app/elasticsearch/config|grep -E 'tomcat_|logstash_|elasticsearch.yml'| sed 's/.log\|.yml//g' ''',shell=True,stdout=subprocess.PIPE)

    for java in t.stdout.readlines():

    if len(java) != 0:

    javas.append({'{#JAVA_NAME}':java.strip('\n')})

    print json.dumps({'data':javas},indent=4,separators=(',',':'))

    执行结果:$ python java_discovery.py

    {

    "data":[

    {

    "{#JAVA_NAME}":"elasticsearch"

    },

    {

    "{#JAVA_NAME}":"logstash_central"

    },

    {

    "{#JAVA_NAME}":"logstash_shipper"

    }

    ]

    }

    在模板中的items,graphs,triggers中使用{#JAVA_NAME}这个宏变量

    jstat状态信息获取脚本

    jstat_status.py

    脚本中主要做以下事情:

    找到指定Java服务的pid,然后执行jstat命令,然后执行zabbix_sender命令

    #!/usr/bin/python

    import subprocess

    import sys

    import os

    __maintainer__ = "John Wang"

    jps = '/opt/app/jdk/bin/jps'

    jstat = '/opt/app/jdk/bin/jstat'

    zabbix_sender = "/opt/app/zabbix/sbin/zabbix_sender"

    zabbix_conf = "/opt/app/zabbix/conf/zabbix_agentd.conf"

    send_to_zabbix = 1

    #"{#JAVA_NAME}":"tomcat_web_1"

    def usage():

    """Display program usage"""

    print "\nUsage : ", sys.argv[0], " java_name alive|all"

    print "Modes : \n\talive : Return pid of running processs\n\tall : Send jstat stats as well"

    sys.exit(1)

    class Jprocess:

    def __init__(self, arg):

    self.pdict = {

    "jpname": arg,

    }

    self.zdict = {

    "Heap_used" : 0,

    "Heap_ratio" : 0,

    "Heap_max" : 0,

    "Perm_used" : 0,

    "Perm_ratio" : 0,

    "Perm_max"  : 0,

    "S0_used"   : 0,

    "S0_ratio"  : 0,

    "S0_max"    : 0,

    "S1_used"   : 0,

    "S1_ratio"  : 0,

    "S1_max"    : 0,

    "Eden_used" : 0,

    "Eden_ratio" : 0,

    "Eden_max"  : 0,

    "Old_used"  : 0,

    "Old_ratio" : 0,

    "Old_max"   : 0,

    "YGC"       : 0,

    "YGCT"      : 0,

    "YGCT_avg"      : 0,

    "FGC"       : 0,

    "FGCT"      : 0,

    "FGCT_avg"      : 0,

    "GCT"       : 0,

    "GCT_avg"       : 0,

    }

    def chk_proc(self):

    #  ps -ef|grep java|grep tomcat_web_1|awk '{print $2}'

    #                print self.pdict['jpname']

    pidarg = '''ps -ef|grep java|grep %s|grep -v grep|awk '{print $2}' ''' %(self.pdict['jpname'])

    pidout = subprocess.Popen(pidarg,shell=True,stdout=subprocess.PIPE)

    pid = pidout.stdout.readline().strip('\n')

    if pid != "" :

    self.pdict['pid'] = pid

    #                   print "Process found :", java_name, "with pid :", self.pdict['pid']

    else:

    self.pdict['pid'] = ""

    #                   print "Process not found"

    return self.pdict['pid']

    def get_jstats(self):

    if self.pdict['pid'] == "":

    return False

    self.pdict.update(self.fill_jstats("-gc"))

    self.pdict.update(self.fill_jstats("-gccapacity"))

    self.pdict.update(self.fill_jstats("-gcutil"))

    #print "\nDumping collected stat dictionary\n-----\n", self.pdict, "\n-----\n"

    def fill_jstats(self, opts):

    #print "\nGetting", opts, "stats for process", self.pdict['pid'], "with command : sudo", jstat, opts, self.pdict['pid'] ,"\n"

    jstatout = subprocess.Popen(['sudo', jstat, opts, self.pdict['pid']], stdout=subprocess.PIPE)

    stdout, stderr = jstatout.communicate()

    legend, data = stdout.split('\n',1)

    mydict = dict(zip(legend.split(), data.split()))

    return mydict

    def compute_jstats(self):

    if self.pdict['pid'] == "":

    return False

    self.zdict['S0_used'] = format(float(self.pdict['S0U']) * 1024,'0.2f')

    self.zdict['S0_max'] =  format(float(self.pdict['S0C']) * 1024,'0.2f')

    self.zdict['S0_ratio'] = format(float(self.pdict['S0']),'0.2f')

    self.zdict['S1_used'] = format(float(self.pdict['S1U']) * 1024,'0.2f')

    self.zdict['S1_max'] = format(float(self.pdict['S1C']) * 1024,'0.2f')

    self.zdict['S1_ratio'] = format(float(self.pdict['S1']),'0.2f')

    self.zdict['Old_used'] = format(float(self.pdict['OU']) * 1024,'0.2f')

    self.zdict['Old_max'] =  format(float(self.pdict['OC']) * 1024,'0.2f')

    self.zdict['Old_ratio'] = format(float(self.pdict['O']),'0.2f')

    self.zdict['Eden_used'] = format(float(self.pdict['EU']) * 1024,'0.2f')

    self.zdict['Eden_max'] = format(float(self.pdict['EC']) * 1024,'0.2f')

    self.zdict['Eden_ratio'] = format(float(self.pdict['E']),'0.2f')

    self.zdict['Perm_used'] = format(float(self.pdict['PU']) * 1024,'0.2f')

    self.zdict['Perm_max'] = format(float(self.pdict['PC']) * 1024,'0.2f')

    self.zdict['Perm_ratio'] = format(float(self.pdict['P']),'0.2f')

    self.zdict['Heap_used'] = format((float(self.pdict['EU']) + float(self.pdict['S0U']) + float(self.pdict['S1U'])  + float(self.pdict['OU'])) * 1024,'0.2f')

    self.zdict['Heap_max'] = format((float(self.pdict['EC']) + float(self.pdict['S0C']) + float(self.pdict['S1C'])  + float(self.pdict['OC'])) * 1024,'0.2f')

    self.zdict['Heap_ratio'] = format(float(self.zdict['Heap_used']) / float(self.zdict['Heap_max'])*100,'0.2f')

    self.zdict['YGC'] = self.pdict['YGC']

    self.zdict['FGC'] = self.pdict['FGC']

    self.zdict['YGCT'] = format(float(self.pdict['YGCT']),'0.3f')

    self.zdict['FGCT'] = format(float(self.pdict['FGCT']),'0.3f')

    self.zdict['GCT'] = format(float(self.pdict['GCT']),'0.3f')

    if self.pdict['YGC'] == '0':

    self.zdict['YGCT_avg'] = '0'

    else:

    self.zdict['YGCT_avg'] = format(float(self.pdict['YGCT'])/float(self.pdict['YGC']),'0.3f')

    if self.pdict['FGC'] == '0':

    self.zdict['FGCT_avg'] = '0'

    else:

    self.zdict['FGCT_avg'] = format(float(self.pdict['FGCT'])/float(self.pdict['FGC']),'0.3f')

    if self.pdict['YGC'] == '0' and self.pdict['FGC'] == '0':

    self.zdict['GCT_avg'] = '0'

    else:

    self.zdict['GCT_avg'] = format(float(self.pdict['GCT'])/(float(self.pdict['YGC']) + float(self.pdict['FGC'])),'0.3f')

    #print "Dumping zabbix stat dictionary\n-----\n", self.zdict, "\n-----\n"

    def send_to_zabbix(self, metric):

    ####      {#JAVA_NAME} tomcat_web_1

    ####      UserParameter=java.discovery,/usr/bin/python /opt/app/zabbix/sbin/java_discovery.py

    ####      UserParameter=java.discovery_status[*],/opt/app/zabbix/sbin/jstat_status.sh $1 $2 $3 $4

    ####      java.discovery_status[tomcat_web_1,Perm_used]

    ####      java.discovery_status[{#JAVA_NAME},Perm_used]

    key = "java.discovery_status[" + self.pdict['jpname'] + "," + metric + "]"

    if self.pdict['pid'] != "" and  send_to_zabbix > 0:

    #                        print key + ":" + self.zdict[metric]

    try:

    subprocess.call([zabbix_sender, "-c", zabbix_conf, "-k", key, "-o", self.zdict[metric]], stdout=FNULL, stderr=FNULL, shell=False)

    except OSError, detail:

    print "Something went wrong while exectuting zabbix_sender : ", detail

    else:

    print "Simulation: the following command would be execucted :\n", zabbix_sender, "-c", zabbix_conf, "-k", key, "-o", self.zdict[metric], "\n"

    accepted_modes = ['alive', 'all']

    if len(sys.argv) == 3 and sys.argv[2] in accepted_modes:

    java_name = sys.argv[1]

    mode = sys.argv[2]

    else:

    usage()

    #Check if process is running / Get PID

    jproc = Jprocess(java_name)

    pid = jproc.chk_proc()

    if pid != "" and  mode == 'all':

    jproc.get_jstats()

    jproc.compute_jstats()

    FNULL = open(os.devnull, 'w')

    for key in jproc.zdict:

    jproc.send_to_zabbix(key)

    FNULL.close()

    print pid

    else:

    print 0

    执行这个脚本之前需要使zabbix agent账号具有执行jstat的sudo权限echo -e "zabbixagent ALL=(root)      NOPASSWD:/usr/bin/jstat,/opt/app/jdk/bin/jstat" >>/etc/sudoers

    sed -i  's/Defaults    requiretty/Defaults    !requiretty/' /etc/sudoers

    调试结果如下:$ sudo python jstat_status.py elasticsearch all

    java.discovery_status[elasticsearch,Perm_ratio]:99.73

    java.discovery_status[elasticsearch,GCT_avg]:0.040

    java.discovery_status[elasticsearch,S1_max]:200605696.00

    java.discovery_status[elasticsearch,Heap_max]:16106127360.00

    java.discovery_status[elasticsearch,Perm_used]:43855155.20

    java.discovery_status[elasticsearch,Perm_max]:43974656.00

    java.discovery_status[elasticsearch,YGCT_avg]:0.040

    java.discovery_status[elasticsearch,Old_max]:14099611648.00

    java.discovery_status[elasticsearch,S1_ratio]:0.00

    java.discovery_status[elasticsearch,FGCT_avg]:0

    java.discovery_status[elasticsearch,FGC]:0

    java.discovery_status[elasticsearch,Heap_used]:3156421529.60

    java.discovery_status[elasticsearch,Eden_max]:1605304320.00

    java.discovery_status[elasticsearch,Old_used]:2748808294.40

    java.discovery_status[elasticsearch,Eden_used]:392617062.40

    java.discovery_status[elasticsearch,YGC]:8794

    java.discovery_status[elasticsearch,YGCT]:348.801

    java.discovery_status[elasticsearch,Eden_ratio]:25.08

    java.discovery_status[elasticsearch,S0_used]:14996172.80

    java.discovery_status[elasticsearch,FGCT]:0.000

    java.discovery_status[elasticsearch,Old_ratio]:19.50

    java.discovery_status[elasticsearch,Heap_ratio]:19.60

    java.discovery_status[elasticsearch,S0_ratio]:7.48

    java.discovery_status[elasticsearch,S1_used]:0.00

    java.discovery_status[elasticsearch,S0_max]:200605696.00

    java.discovery_status[elasticsearch,GCT]:348.801

    30166

    注释掉调试信息:$ sudo python jstat_status.py elasticsearch all

    30166

    添加zabbix配置文件$ cat ../conf/zabbix_agentd.conf.d/discovery_java_status.conf

    UserParameter=java.discovery,/usr/bin/python /opt/app/zabbix/sbin/java_discovery.py

    UserParameter=java.discovery_status[*],/usr/bin/python /opt/app/zabbix/sbin/jstat_status.py $1 $2

    三 添加监控模板

    模板参见附件

    模板中只有一个item是通过zabbix agent获取,其他的都是通过zabbix sender获取

    java.discovery_status[{#JAVA_NAME},all]

    zabbix通过zabbix agent获取这个item的值时会调用jstat_status.py这个脚本通过zabbix_sender

    4eb2bf8da12e49f2efc88942f97df7db.png

    770ae8c603e182f622bf9329ba2fbbfd.png

    29138f1310b0c39abb4dc41d10ede4b1.png

    参考文档:

    展开全文
  • Tomcat java zabbix 监控

    2017-11-27 15:24:00
    ps-ef | grep java或jps –lvm 查看java pid进程 netstat –lntup | grep java 查看java 端口有没有启动 查看 tomcat 日志 tailf /application/tomcat/logs/catalina.out show-busy-java-threads.sh 打印系统排名...

    排除汤姆猫错误的步骤

    ps-ef | grep java或jps –lvm 查看java pid进程

    netstat –lntup | grep java 查看java 端口有没有启动

    查看 tomcat 日志 tailf /application/tomcat/logs/catalina.out

    show-busy-java-threads.sh 打印系统排名前五的java进程,查看那个进程占用内存高。

    tomcat java远程监控

    下载jkd http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

     

    在C:\Program Files\Java\jdk1.8.0_31\bin下 找 jconsole.exe

     

    开启tomcat远程监控功能

    1. vim /application/tomcat8_1/bin/catalina.sh +97

    1. CATALINA_OPTS="$CATALINA_OPTS
    2. -Dcom.sun.management.jmxremote
    3. -Dcom.sun.management.jmxremote.port=12345
    4. -Dcom.sun.management.jmxremote.authenticate=false
    5. -Dcom.sun.management.jmxremote.ssl=false
    6. -Djava.rmi.server.hostname=10.0.0.17"

    做解析不然报错

    1. 需要做解析 echo     "10.0.0.17 web03 " >> /etc/hosts

    重启汤姆猫查看端口

    1. /application/tomcat8_1/bin/shutdown.sh
    2. /application/tomcat8_1/bin/startup.sh
    3. netstat -tunlp|grep 12345
    4. tcp6 0 0 :::12345 :::* LISTEN 24388/java

    用jconsole连接

     

    端口12345

    jvisualvm远程链接

    右键添加主机

    右键添加jvm

     

     

    zabbix 监控 tomcat

    zabbix需要开启java监控

    修改zabbix-server配置文件

    1. sed -i -e '220a JavaGateway=127.0.0.1' -e '236a StartJavaPollers=5' /etc/zabbix/zabbix_server.conf

    JavaGateway=127.0.0.1 网关地址(本机ip地址)

    StartJavaPollers=5 java线程

    在服务端安装zabbix_java_gateway

    需要安装jdk(openjdk)

    yum 安装自动安装

    启动 zabbix_java_gateway

    1. systemctl start zabbix-java-gateway.service
    2. netstat -tunlp|grep java

    tomcat开启远程监控功能(每个实力都要做)

    新键主机

    搜索jmx 添加两默认模板

    jmx连接了

    Tomcat安全优化

    降权启动

    先杀掉java进程

    [root@web03 ~]# pkill java

    [root@web03 ~]# pkill java

    1. [root@web03 ~]# useradd tomcat 新建一个用户
    2. [root@web03 ~]# cp -a /application/tools/tomcat8_1 /home/tomcat/ 把测试文件复制到 home目录下
    3. [root@web03 ~]# chown -R tomcat.tomcat /home/tomcat/tomcat8_1/ 给文件权限
    4. [root@web03 ~]# su -c '/home/tomcat/tomcat8_1/bin/startup.sh 'tomcat 以tomcat用户启动
    5. Using CATALINA_BASE: /home/tomcat/tomcat8_1
    6. Using CATALINA_HOME: /home/tomcat/tomcat8_1
    7. Using CATALINA_TMPDIR: /home/tomcat/tomcat8_1/temp
    8. Using JRE_HOME: /application/jdk
    9. Using CLASSPATH: /home/tomcat/tomcat8_1/bin/bootstrap.jar:/home/tomcat/tomcat8_1/bin/tomcat-juli.jar
    10. Tomcat started.
    11. [root@web03 ~]# ps -ef|grep tomcat 查看tomcat进程用户

    其他安全优化都在http://www.cnblogs.com/jksbaduen/p/7903539.html

    Tomcat优化

    上策: java 代码优化

    中策: jvm 优化机制 垃圾回收机制,把不需要的内存回收。

    优化jvm—就是优化垃圾回收机制

    下策: 买买买加内存

    下下策: 定时重启tomcat

     

     

     

     

    简单的jvm优化

    1G内存优化

    内存给tomcat 75%左右或者 3/4

    修改核心配置文件

    1. vim/home/tomcat/tomcat8_1/bin/ catalina.sh +97

    插入下面的代码


    1. JAVA_OPTS="-Djava.awt.headless=true?-Dfile.encoding=UTF-8?-server?-Xms800m?-Xmx800m?-XX:NewSize=400m?-XX:MaxNewSize=400m?-XX:PermSize=400m?-XX:MaxPermSize=400m"

     

    1. server:一定要作为第一个参数,在多个CPU时性能佳
    2. -Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
    3. -Xmx:初始堆内存heap最大值,使用的最大内存
    4. 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
    5. -XX:PermSize:设定内存的永久保存区域
    6. -XX:MaxPermSize:设定最大内存的永久保存区域
    7. -XX:MaxNewSize:
    8. -Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
    9. +XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个Gswap
    10. -Xss:每个线程的Stack大小
    11. -verbose:gc 现实垃圾收集信息
    12. -Xloggc:gc.log 指定垃圾收集日志文件
    13. -Xmnyoung generationheap大小,一般设置为Xmx34分之一
    14. -XX:+UseParNewGC :缩短minor收集的时间
    15. -XX:+UseConcMarkSweepGC :缩短major收集的时间

     

    重启服务

    1. su -c '/home/tomcat/tomcat8_1/bin/ shutdown.sh ' tomcat
    2. su -c '/home/tomcat/tomcat8_1/bin/ startup.sh ' tomcat

    转载于:https://www.cnblogs.com/jksbaduen/p/7904334.html

    展开全文
  • zabbix 2.2.2 使用自带zabbix-java-gateway 监控java1、zabbix java gateway 配置及启动安装yum install -y zabbix-java-gateway.x86_64配置用默认即可,即javagateway和server在同一台服务器上2、server端配置### ...

    zabbix 2.2.2 使用自带zabbix-java-gateway 监控java

    1、zabbix java gateway 配置及启动

    安装

    yum install -y zabbix-java-gateway.x86_64

    配置用默认即可,即javagateway和server在同一台服务器上

    2、server端配置

    ### Option: java gateway

    JavaGateway=127.0.0.1

    JavaGatewayPort=10052

    StartJavaPollers=5

    3、java程序配置

    export CATALINA_OPTS="-Dcom.sun.management.jmxremote \

    -Dcom.sun.management.jmxremote.port=10085 \

    -Dcom.sun.management.jmxremote.ssl=false \

    -Dcom.sun.management.jmxremote.authenticate=false"

    #将上述配置加入到tomcat或者java程序的启动脚本内

    #port 每个java程序或者tomcat使用一个,同台服务器上不能重复

    4、zabbix web页面上配置

    主机上可以选择相应的jmx模版;

    jmx端口要同java或者tomcat启动脚本内端口一致

    阅读(6923) | 评论(0) | 转发(0) |

    展开全文
  • 贵州zabbix_server 开启java功能1、关闭zabbix_server/etc/init.d/zabbix_server stop2、zabbix_server 进行备份cp -r /tools/zabbix_server /tools/zabbix_server201912203、解压zabbix_server 源码包tar zxvf ...

    贵州zabbix_server 开启java功能

    1、关闭zabbix_server

    /etc/init.d/zabbix_server stop

    2、zabbix_server 进行备份

    cp -r /tools/zabbix_server /tools/zabbix_server20191220

    3、解压zabbix_server 源码包

    tar zxvf zabbix_server.tar.gz

    4、进行zabbix_server编译

    ./configure --prefix=/tools/zabbix_server --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-agent --enable-java、

    5、zabbix_server 进行源码安装

    make && make install

    6、将编译安装后的zabbix_server的配置文件进行备份

    mv /tools/zabbix_server/zabbix_server.conf /tools/zabbix_server/zabbix_server.conf20191220

    7、配置zabbix_server的配置文件开启

    cp -r /tools/zabbix_server20191220/zabbix_server.conf /tools/zabbix_server

    JavaGateway=127.0.0.1

    JavaGatewayPort=10052

    StartJavaPollers=50#按照客户端的数来写,具体参考南京应用的zabbix_server的配置

    8、启动zabbix_server

    /etc/init/zabbix_server

    9、启动zabbix_java

    /tools/zabbix_server/zabbix_java/startup.sh

    10、预估时间二十分钟,包含zabbix_server重新编译的时间

    展开全文
  • 参考http://blog.csdn.net/wych1981/article/details/46647451第一次编译安装的时候没有使用这个参数,后来用到了,就重新编译加上的JDK的安装export JAVA_HOME="/usr/local...$PATHexport CLASSPATH=.:$JAVA_HOME/l...
  • zabbix监控java1.安装java-getway[root@zabbix ~]# yum install zabbix-java-gateway.x86_64 -y2.配置[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.confSTART_POLLERS=5把这句话前面的注释删掉[root@...
  • API:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/user/login如果你使用jar包开发的话,会出现*** 1h ***,*** 1m ***这样类似的错误,是因为jar包里的实体类定义的属性类型不合适。所以目前...
  • 上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。于是我在zabbix网站各种...接下来继续说Java的API,如下:第一和第三都是连接zabbix server...
  • zabbix 是很强大的监控运维工具,但是无奈界面实在是又丑又不人性化,所以上面的大神决定要包装一下zabbix api获取数据自己画界面(其实还一种方法就是直接访问zabbix 的mysql数据库,但是这种逻辑要自己写了),但是...
  • 安装java-gateway[root@localhost ~]# yum install zabbix-java-gateway.x86_64 -y2.配置[root@localhost ~]# vim /etc/zabbix/zabbix_server.confJavaGateway=127.0.0.1JavaGatewayPort=1005...
  • 上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。于是我在zabbix网站各种...接下来继续说Java的API,如下:第一和第三都是连接zabbix server...
  • 02. 需要组件系统:ubuntu16.04基础组件(参照):zabbix-mysql-5.7、zabbix-server-3.4、zabbix-web-3.4、zabbix-agent增加组件:zabbix-java-gateway2.1 安装zabbix-java-gateway$ sudo apt-get inst...
  • 贵州zabbix_server 开启java功能1、关闭zabbix_server/etc/init.d/zabbix_server stop2、zabbix_server 进行备份cp -r /tools/zabbix_server /tools/zabbix_server201912203、解压zabbix_server 源码包tar zxvf ...
  • 要在zabbix上面监控tomcat的jvm情况需要用到zabbix-java-gatewayzabbix监控jvm工作流程:当zabbix-server需要获取jvm情况时的流程为:zabbix-server -> zabbix-java-gateway --> jvm注:zabbix-server和zabbix...
  • java连接Zabbix

    2020-07-14 13:16:45
    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util....
  • 在上一片博客中,我们已经做了httpd,mysql的监控,下面我们利用上次做好的环境,继续做java形式的监控 #####首先开启服务这是和zabbix相关的服务 systemctl start zabbix-server systemctl start zabbix-agent ...
  • JAVA访问Zabbix API

    千次阅读 2016-11-04 15:18:45
    java访问zabix API zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决...
  • 1.环境准备首先准备两台机器192.168.56.25 zabbix192.168.56.22 tomcat保证zabbix能够使用Template OS Linux监控tomcatzabbix监控tomcat使用的是zabbix-java-gateway,zabbix-java-gateway需要java环境这里,我的...
  • yum install -y zabbix-java-gateway zabbix-java-gateway 包所含内容如下 # rpm -ql zabbix-java-gateway /etc/zabbix/zabbix_java_gateway.conf /usr/lib/systemd/system/zabbix-java-gateway.s...
  • yum install -y zabbix-java-gateway zabbix-java-gateway 包所含内容如下 # rpm -ql zabbix-java-gateway /etc/zabbix/zabbix_java_gateway.conf /usr/lib/systemd/system/zabbix-java-gateway.s...
  • zabbix java api

    2019-09-16 06:00:00
    zabbix java api zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api Zabbix功能 概观 Zabbix是一个高度集成的网络监控解决方案,在单个软件包中提供了多种功能。 数...
  • 环境 server1 172.25.75.1 zabbix-server、zabbix-agen、mysql server2 ...zabbix-agent、http ...zabbix-agent、nginx ...一、配置Zabbix监控Java 1、server1配置tomcat服务 [root@server1 ~]# l...
  • 一:简介使用Python psutil模块,查找java模块,并获取启动命令,结合zabbix监控自动监控。点击下载二:操作发现脚本#!/usr/bin/env python# coding:utf-8import psutilimport reimport jsondef thread():try:data =...
  • Java使用zabbix示例

    千次阅读 2016-11-03 20:40:52
    * Do not necessary to call this method.If don not set id, ZabbixApi will auto set request auth.. * @param auth * @return */ public ZabbixRequestBuilder auth(String auth){ request....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,244
精华内容 497
关键字:

javazabbix

java 订阅