设为首页 收藏本站
查看: 2574|回复: 3

[经验分享] zabbix通过JMX监控tomcat状态

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-10 08:40:30 | 显示全部楼层 |阅读模式
本帖最后由 sgdfh 于 2015-9-10 08:41 编辑

因为公司大量使用tomcat作为应用服务,所以,这两天催生了一个想法,通过zabbix监控tomcat的运行状态,从而能够更快的发现tomcat服务出现的问题以及判断问题出现在哪块。
在网上找了一些资料来看,写的都不是很全面(PS:对于我这种菜鸟来说,还有很多东西不知道的,所以需要有解释的详细点的文档来帮助我更好理解原理,于是就有了本篇博文的诞生!)
首先,zabbix监控tomcat等这一类java平台的应用不是直接通过agentd来实现的,而是使用jmx来获取到tomcat这类应用的状态,然后再将数据交给server端,生成监控图。
好了,废话不多说,我们开始tomcat监控的配置之旅吧!
首先,如果需要用到jmx监控的话需要在客户端和服务端都安装java环境,至于java环境可以通过源码安装,不过我这里为了省事,直接通过yum安装java和java-devel这两个包:
1
yum -y install java java-devel



然后是服务端的配置:
服务端需要重新安装zabbix服务端,需要将--enable-java添加到编译参数中去,参数如下所示:
1
./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java



安装好服务端之后可以在软件安装目录找到如下这个目录:

1
2
3
4
[iyunv@test1 zabbix_java]# pwd
/usr/local/zabbix/sbin/zabbix_java
[iyunv@test1 zabbix_java]# ls
bin  lib  settings.sh  shutdown.sh  startup.sh



修改settings.sh中得参数,其中大部分都是以#开头的,修改的参数如下面所示:

1
2
3
4
5
[iyunv@test1 zabbix_java]# egrep -v "^#|^$" settings.sh
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5



然后修改zabbix_server.conf的配置,修改的参数如下面所示:
1
2
3
4
5
6
7
8
9
[iyunv@test1 zabbix_java]# egrep -v "^#|^$" /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBPassword=xxxxxx
DBSocket=/tmp/mysql.sock
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5



其中上面的5行和以前配置一样,下面的三行是需要将前面的#删掉,并进行修改的。
修改完以后,重启zabbixserver并且启动zabbix_java_Gateway启动zabbix_java_Gateway的方法为
1
sh /usr/local/zabbix/sbin/zabbix_java/startup.sh



启动之后,在服务端会多出一个侦听端口10052来,效果如下:
1
2
3
[iyunv@test1 zabbix_java]# netstat -antlp|grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      15371/java         
tcp6       0      0 127.0.0.1:10052         127.0.0.1:38661         TIME_WAIT



  -      

看到上面这些信息,证明服务端已经配置好了,接下来需要配置tomcat客户端了。

tomcat客户端的配置为如下:
首先安装java环境
也和上面一样使用yum安装:
1
yum -y install java java-devel



然后下载tomcat的源码包,解压后放在相应的目录,我这里放在/usrlocal/tomcat-8.0.26/目录下。
然后需要下载对应tomcat的jmx版本,我这里安装的是最新的tomcat,版本是8.0.26,于是下载路径为如下:
wget http://archive.apache.org/dist/t ... lina-jmx-remote.jar
使用其他版本的可以自行选择相对应的jmx版本下载。
下载后将该文件放在tomcat的lib目录下,然后修改catalina.sh文件,catalina.sh文件在tomcat的bin目录下。在#!bin/sh下方添加一行参数,如下所示:
1
2
#!/bin/sh
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.6.0.176"



其中的10.6.0.176是该tomcat客户端的IP。然后需要修改服务器的配置文件server.xml:
1
2
3
4
5
6
[iyunv@test3 tomcat-8.0.26]# tail -6 ./conf/server.xml
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"  rmiRegistryPortPlatform="8090" rmiServerPortPlatform="8090" />
      </Host>
    </Engine>
  </Service>
</Server>



如上面所示,第一行就是我们添加进去的配置,其中的8090就是zabbix server端监控tomcat需要使用的端口。
保存之后退出,然后启动tomcat和zabbix的agentd,至于zabbix_agentd怎么配置,在我之前写的博客中有记载,有兴趣的可以去看看。
启动完成之后通过ps命令和netstat命令查看是否正常的侦听了相应的端口,zabbix_agentd默认侦听10050端口,tomcat默认侦听8080端口,8090端口是开给jmx使用的,应该也是开启的,效果如下:

1
2
3
4
5
6
7
8
9
10
[iyunv@test3 tomcat-8.0.26]# netstat -antlp|grep LISTEN      
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      19592/./sbin/zabbix
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      836/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1503/master         
tcp6       0      0 :::8090                 :::*                    LISTEN      21026/java         
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      21026/java         
tcp6       0      0 :::8009                 :::*                    LISTEN      21026/java         
tcp6       0      0 :::8080                 :::*                    LISTEN      21026/java         
tcp6       0      0 :::40438                :::*                    LISTEN      21026/java         
tcp6       0      0 :::22                   :::*                    LISTEN      836/sshd



这时候可以在zabbix_server端尝试获取tomcat的相关数据了。这时候需要使用到一个工具cmdline-jmxclient-0.10.3.jar
这个工具可以自己到网上下载,我的附件中也会有这个工具,使用方法为如下:
1
2
3
4
5
6
[iyunv@test1 zabbix_java]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 10.6.0.176:8090 java.lang:type=Memory NonHeapMemoryUsage
09/09/2015 17:56:49 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 24313856
init: 24313856
max: 224395264
used: 20066808



上面已经获取到了相应的tomcat数据,好了,到这里配置就差不多要大功告成了,但是还需要在web端配置相应的模版,刚开始我使用系统自带的模板,发现出不来数据,于是我去网上找到了某个网友自己做的模板,终于可以获取到tomcat的数据了,模板我也将一并打包放在附件中。
好了,在web端开始配置了,配置如下图所示:
QQ截图20150910083913.png
其中的端口需要填写两个,第一个是agentd的侦听端口,第二个是jmx的侦听端口,这个端口8090是我们在tomcat客户端的server.xml文件中定义的。
将该主机关联到相应的模板上去:
QQ截图20150910083922.png
之后就等待出数据了,该模板中的某些键值在tomcat中不支持,我目前还不知道是什么情况,可能和tomcat中得配置参数有关系吧。下面展示一下出图的效果,这个模板各位也可以拿回去自己进行修改:
QQ截图20150910083933.png QQ截图20150910083942.png QQ截图20150910083954.png

百度云附件:tomcat监控模板及相关工具.rar   

运维网声明 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-111701-1-1.html 上篇帖子: zabbix------定义触发器trigger与动作action 下篇帖子: zabbix企业应用之监控动作是否有被关闭 监控
累计签到:10 天
连续签到:1 天
发表于 2015-9-15 11:42:34 | 显示全部楼层
修改tomcat客户端的配置文件server.xml,<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"  rmiRegistryPortPlatform="8090" rmiServerPortPlatform="8090" />,这个有问题,导致tomcat不能正常启动

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

累计签到:383 天
连续签到:1 天
发表于 2016-4-22 16:17:47 | 显示全部楼层
Apr 22, 2016 4:05:39 PM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1282)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1555)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:616)
        at java.lang.reflect.Method.invoke(Method.java:606)

Apr 22, 2016 4:05:39 PM org.apache.catalina.startup.Catalina load
WARNING: Catalina.start using conf/server.xml: Error at (140, 148) : org.apache.catalina.mbeans.JmxRemoteLifecycleListener
Apr 22, 2016 4:05:39 PM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1282)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1555)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:616)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:681)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)

Apr 22, 2016 4:05:39 PM org.apache.catalina.startup.Catalina load
WARNING: Catalina.start using conf/server.xml: Error at (140, 148) : org.apache.catalina.mbeans.JmxRemoteLifecycleListener
Apr 22, 2016 4:05:39 PM org.apache.catalina.startup.Catalina start
SEVERE: Cannot start server. Server instance is not configured.


tomcat启动之后立即报错

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

累计签到:236 天
连续签到:1 天
发表于 2016-8-11 15:08:55 | 显示全部楼层
多谢楼主的分享

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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