共计 3654 个字符,预计需要花费 10 分钟才能阅读完成。
一、现 状
对于 Zabbix 通过 JMX 来监控 Tomcat,网络上有很多文章,但大都是相同或类似的,且都是没有设置防火墙的,所以就安装而言百度就行。现在为了服务的安全,是必须开启防火墙的。于是出现了一系列的问题。
二、当前环境
1、Zabbix_server 的 Zabbix 版本是 3.0.4,系统是 CentOS 7.0,使用 YUM 安装。
Centos7.0 YUM 安装地址:http://www.linuxidc.com/Linux/2016-11/137638.htm
2、Zabbix-server 的 zabbix_server.conf 配置文件
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
JavaGateway=127.0.0.1 # gateway 地址
JavaGatewayPort=10052 # 监听端口
StartJavaPollers=5
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
3、zabbix_java_gateway.conf 配置文件
LISTEN_IP=”0.0.0.0″
LISTEN_PORT=10052
PID_FILE=”/var/run/zabbix/zabbix_java.pid”
START_POLLERS=5
TIMEOUT=3
4、zabbix 被监控端 catalina.sh 添加的内容
CATALINA_OPTS=”$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.1.13″ # tomcat 服务器 IP
5、防火墙策略添加
Zabbix_server 端 firewall-cmd –zone=public –add-port=10052/tcp –permanent
被监控端 iptables -I INPUT 4 -m state –state NEW -m tcp -p tcp –dport 12345 -j ACCEPT
注:Zabbix_server 和 Zabbix_java_gateway 可在不同服务器安装。
三、分析问题
1、当所有配置完成,Zabbix 显示不通,如下图
Zabbix_server 日志显示
2、我以为配置有问题,于是就修改配置,修改了几次还是不行,让我意识到可能不是配置的问题,既然不是配置问题,那最大的可能就是防火墙,关闭防火墙进行测试。让我惊喜的是居然真的通了。被监控端的防火墙端口开了,为什么不通呢,难道还有一个端口没有开吗?于是重新开启防火墙,查看端口,如下
3、真的有端口被调用了,而且是动态的,当重启 tomcat 后端口又被改变,所以说,开启端口这种方法是行不通的,还有就是开放多端口,将一系列端口开放,但端口多了,容易出现问题,和开不开防火墙差不多。那么到底如何呢,只能是将另一端口固定调用。怎么做呢,方法如下:
4、修改 tomcat/bin/catalina.sh 添加的内容
CATALINA_OPTS=”$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=12345 #将端口这条去掉,
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.1.13″ # tomcat 服务器 IP
注:必须去的,如果不去掉,将会导致不成功!
5、在 tomcat/conf/server.xml 添加以下内容
<Server port=”9005″ shutdown=”SHUTDOWN”>
<Listener className=”org.apache.catalina.startup.VersionLoggerListener” />
<!– Security listener. Documentation at /docs/config/listeners.html
<Listener className=”org.apache.catalina.security.SecurityListener” />
–>
<!–APR library loader. Documentation at /docs/apr.html –>
<Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />
<!– Prevent memory leaks due to use of particular java/javax APIs–>
<Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />
<Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />
<Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />
<Listener className=”org.apache.catalina.mbeans.JmxRemoteLifecycleListener”
rmiRegistryPortPlatform=”12345″ rmiServerPortPlatform=”12346″ />
# 添加最后一条
6、添加被监控端防火墙策略
iptables -I INPUT 4 -m state –state NEW -m tcp -p tcp –dport 12346 -j ACCEPT
7、下载 catalina-jmx-remote.jar 将此文件放到 tomcat/lib 目录下
http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.37/bin/extras/catalina-jmx-remote.jar
8、成功,重启服务
一些 Zabbix 相关教程集合:
Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装 http://www.linuxidc.com/Linux/2015-05/117657.htm
CentOS 7 LNMP 环境搭建 Zabbix3.0 http://www.linuxidc.com/Linux/2017-02/140134.htm
Ubuntu 16.04 安装部署监控系统 Zabbix2.4 http://www.linuxidc.com/Linux/2017-03/141436.htm
Zabbix 监控安装部署及警报配置 http://www.linuxidc.com/Linux/2017-03/141611.htm
Ubuntu 16.04 下安装部署 Zabbix3.0 http://www.linuxidc.com/Linux/2017-02/140395.htm
CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm
CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm
64 位 CentOS 6.2 下安装 Zabbix 2.0.6 http://www.linuxidc.com/Linux/2014-11/109541.htm
ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141774.htm