设为首页 收藏本站
查看: 7966|回复: 0

[经验分享] zabbix使用zabbix-java-gateway监控jvm/tomcat性能

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-9 11:19:59 | 显示全部楼层 |阅读模式
JAVA-GATEWAY
Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway;Java有了JMX,全称是Java Management Extensions,即Java管理扩展。

双方的工作原理
wKiom1fQ8ISB5WJBAABeYvFn7D8394.jpg
比如:当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)环境准备
系统环境
1
2
3
4
[iyunv@linux-node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[iyunv@linux-node1 ~]# /application/zabbix/sbin/zabbix_server -V
zabbix_server (Zabbix) 3.0.3



特别注意:
编译安装zabbix server需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装,参考编译参数
1
./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环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[iyunv@linux-node1 tools]# tar xf jdk-8u73-linux-x64.gz
[iyunv@linux-node1 tools]# tar xf apache-tomcat-8.0.36.tar.gz
[iyunv@linux-node1 tools]# mv jdk1.8.0_73 /application/
[iyunv@linux-node1 tools]# ln -s /application/jdk1.8.0_73/ /application/jdk
[iyunv@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
[iyunv@linux-node1 tools]# source /etc/profile
[iyunv@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)
[iyunv@linux-node1 ~]# ln -s /application/apache-tomcat-8.0.36/ tomcat
[iyunv@linux-node1 ~]# echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
[iyunv@linux-node1 ~]# source /etc/profile
[iyunv@linux-node1 ~]# chown -R root.root /application/jdk/ /application/tomcat/
[iyunv@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
[iyunv@linux-node1 ~]# /application/tomcat/bin/startup.sh #开启tomcat
[iyunv@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)安装软件
1
yum install -y java java-devel zabbix-java-gateway




3)配置zabbix_java_gateway端口10052
1
2
3
4
5
6
[iyunv@linux-node1 zabbix]# vim /etc/zabbix/zabbix_java_gateway.conf
#zabbix_java_gateway配置文件里有默认端口等设置,这里我们保持默认即可
[iyunv@linux-node1 zabbix]# systemctl start zabbix-java-gateway.service
[iyunv@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
1
2
3
4
[iyunv@linux-node1 ~]# vim /application/zabbix/etc/zabbix_server.conf
JavaGateway=172.16.2.150 #gateway地址
StartJavaPollers=5  #预启动进程轮训个数
[iyunv@linux-node1 ~]# systemctl restart zabbix_server.service




5)开启JMX远程监控
1
2
3
4
5
6
7
8
9
10
11
[iyunv@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的主机地址)
[iyunv@linux-node1 application]# /application/tomcat/bin/shutdown.sh
[iyunv@linux-node1 application]# /application/tomcat/bin/startup.sh
[iyunv@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)



注意:
如果端口起不来,看日志
1
2
3
[iyunv@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



添加主机名解析解决
1
2
[iyunv@linux-node1 logs]# cat /etc/hosts
172.16.2.150 linux-node1.lichengbing.cn




6)此时我们就也可以使用windowsJava工具JConsole测试(提前安装好java)
wKioL1fQ8JOC61WuAABvPe9sE7E131.jpg

7)在zabbix中添加主机和模板开始监控Java
添加主机
wKioL1fQ8J_wJNYkAAB5nP5gBQ4766.jpg
wKiom1fQ8K_geZjPAAAmlKOjVIg318.jpg
模板中添加两个JMX模板
wKiom1fQ8LmAMydMAABthF0E8g0029.jpg
wKiom1fQ8MOAUDhUAACeIe_dIu8069.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-269939-1-1.html 上篇帖子: zabbix提示swap space不足的解决方法 下篇帖子: zabbix3.0之agent端加入监控 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表