首页 > 代码库 > zabbix使用zabbix-java-gateway监控jvm/tomcat性能
zabbix使用zabbix-java-gateway监控jvm/tomcat性能
JAVA-GATEWAY
Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway;Java有了JMX,全称是Java Management Extensions,即Java管理扩展。
双方的工作原理
比如:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
开始监控部署
从上面的原理图中我们可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等
1)环境准备
系统环境
[root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@linux-node1 ~]# /application/zabbix/sbin/zabbix_server -V zabbix_server (Zabbix) 3.0.3
特别注意:
编译安装zabbix server需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装,参考编译参数
./configure --prefix=/application/zabbix-3.0.3 --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql=/application/mysql-5.5.49/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl
由于要使用到tomcat作为监控示例,所以简单部署一个tomcat环境
[root@linux-node1 tools]# tar xf jdk-8u73-linux-x64.gz [root@linux-node1 tools]# tar xf apache-tomcat-8.0.36.tar.gz [root@linux-node1 tools]# mv jdk1.8.0_73 /application/ [root@linux-node1 tools]# ln -s /application/jdk1.8.0_73/ /application/jdk [root@linux-node1 tools]# sed -i.ori ‘$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar‘ /etc/profile [root@linux-node1 tools]# source /etc/profile [root@linux-node1 tools]# java -version java version "1.8.0_73" Java(TM) SE Runtime Environment (build 1.8.0_73-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode) [root@linux-node1 ~]# ln -s /application/apache-tomcat-8.0.36/ tomcat [root@linux-node1 ~]# echo ‘export TOMCAT_HOME=/application/tomcat‘>>/etc/profile [root@linux-node1 ~]# source /etc/profile [root@linux-node1 ~]# chown -R root.root /application/jdk/ /application/tomcat/ [root@linux-node1 ~]# tail -4 /etc/profile export JAVA_HOME=/application/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar export TOMCAT_HOME=/application/tomcat [root@linux-node1 ~]# /application/tomcat/bin/startup.sh #开启tomcat [root@linux-node1 ~]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 40859 root 47u IPv6 71038 0t0 TCP *:webcache (LISTEN)
2)安装软件
yum install -y java java-devel zabbix-java-gateway
3)配置zabbix_java_gateway端口10052
[root@linux-node1 zabbix]# vim /etc/zabbix/zabbix_java_gateway.conf #zabbix_java_gateway配置文件里有默认端口等设置,这里我们保持默认即可 [root@linux-node1 zabbix]# systemctl start zabbix-java-gateway.service [root@linux-node1 ~]# lsof -i:10052 USER FD TYPE DEVICE SIZE/OFF NODE NAME java 92222 root 11u IPv6 1360516 0t0 TCP *:10052 (LISTEN)
4)配置zabbix-server访问gateway
[root@linux-node1 ~]# vim /application/zabbix/etc/zabbix_server.conf JavaGateway=172.16.2.150 #gateway地址 StartJavaPollers=5 #预启动进程轮训个数 [root@linux-node1 ~]# systemctl restart zabbix_server.service
5)开启JMX远程监控
[root@linux-node1 application]# vim /application/tomcat/bin/catalina.sh #tomcat的远程调用脚本 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #开启远程监控 -Dcom.sun.management.jmxremote.port=12345 #远程监控端口 -Dcom.sun.management.jmxremote.ssl=false #远程ssl验证为false -Dcom.sun.management.jmxremote.authenticate=false #关闭权限认证 -Djava.rmi.server.hostname=172.16.2.150" #提供数据的的主机地址(由于我是用的一台机器,所以IP相同,如果是生产环境不同的机器,这个地址是部署了tomcat的主机地址) [root@linux-node1 application]# /application/tomcat/bin/shutdown.sh [root@linux-node1 application]# /application/tomcat/bin/startup.sh [root@linux-node1 application]# lsof -i:12345 #JVM监听端口 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 41062 root 20u IPv6 72478 0t0 TCP *:ddi-tcp-1 (LISTEN)
注意:
如果端口起不来,看日志
[root@linux-node1 logs]# tail /application/tomcat/logs/catalina.out … Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: linux-node1.lichengbing.cn: linux-node1.lichengbing.cn: unknown error
添加主机名解析解决
[root@linux-node1 logs]# cat /etc/hosts 172.16.2.150 linux-node1.lichengbing.cn
6)此时我们就也可以使用windowsJava工具JConsole测试(提前安装好java)
7)在zabbix中添加主机和模板开始监控Java
添加主机
模板中添加两个JMX模板
本文出自 “改变从每一天开始” 博客,请务必保留此出处http://lilongzi.blog.51cto.com/5519072/1850669
zabbix使用zabbix-java-gateway监控jvm/tomcat性能