zabbix4 监控Tomcat

临时记录的随笔,比较乱~

我已经源码方式安装好了zabbix-server,并开始了正常监控。

  • 需求描述及工作场景

    • 添加一台服务器并监控Tomcat
    • Zabbix Server 为阿里云的CentOS 7.4 内网IP:192.168.66.255 Hostname: TsO-04
    • Zabbix Agent 为阿里云的CentOS7.4 以及在正常运行的Java环境 内网IP:192.168.66.224 Hostname: TsO-03
    • Tomcat 运行的端口修改为8008,并运行在TsO-03主机上

Zabbix 如何监控JIM

此处为填坑找的相关资料

  1. zabbixl连接到Java网关的TCP端口(默认10052),因为我是源码安装的,所以配置"zabbix安装目录/sbin/zabbix_java/settings.sh" 的“LISTEN_PORT”即可(为下文的“./configure --enable-java --prefix=/tskj/conf/zabbix4.0.1/
    ”)。

  2. Java网关将尝试使用TCP端口12345(默认)访问远程主机上的JMX,需要使用此Java命令行参数“-Dcom.sun.management.jmxremote.port”在远程主机上设置JMX。通常它是在JAVA_OPTS环境变量中配置的。(我使用的是12366端口,见下文的客户端配置)。

  1. 远程主机将回答zabbix-java-gateway建议使用另一个随机端口来访问RMI信息。发生这种情况是因为RMI实现为使用RPC(远程过程调用)。当您在zabbix-java-gateway和运行Java的远程主机之间使用防火墙时,这是一个有问题的步骤,因为您不知道将协商哪个TCP端口。解决办法是通过’-Dcom.sun.management.jmxremote.rmi.port ‘来指定这个端口
  • ps:以上问题的解决方式为在远程主机指定好通信主机名字跟所需端口号即可。报错如下:

    com.zabbix.gateway.ZabbixException: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
    java.net.ConnectException: Connection refused

在远程计算机上,将这两个参数与其他JMX选项一起添加到JAVA_OPTS中:-Djava.rmi.server.hostname = $ REMOTE_HOST_IP_ADDR -Dcom.sun.management.jmxremote.rmi.port = 12367。(具体见下文客户端Tomcat配置)

  • “Djava.rmi.server.hostname” 参数用于解决上面的报错问题
  • “Dcom.sun.management.jmxremote.rmi.port”参数将告诉Java仅使用该定义的端口来建立RMI连接。因此,当远程主机上的Java回答zabbix-java-getway JMX请求时,它不会尝试协商随机TCP端口。它将告诉zabbix-java-gateway连接到12367端口。

RMI如何工作

服务端 (Zabbix_Server)

  • 已经源码安装了zabbix4.0.1 安装目录为“/tskj/conf/zabbix4.0.1/”

[root@TsO-04 ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
[root@TsO-04 etc]# hostname
TsO-04
[root@TsO-04 etc]# hostname -i
192.168.66.225


[root@TsO-04 etc]# yum install java*    #Java 环境准备
[root@TsO-04 etc]# cd /tskj/temp/zabbix-4.0.1   #进入到已经解压的源码包
[root@TsO-04 zabbix-4.0.1]# ./configure --enable-java --prefix=/tskj/conf/zabbix4.0.1/

[root@TsO-04 zabbix-4.0.1]# make
[root@TsO-04 zabbix-4.0.1]# make install      # 以上两部建议分开执行,以便排错

[root@TsO-04 zabbix-4.0.1]# cd /tskj/conf/zabbix4.0.1/sbin/zabbix_java/
[root@TsO-04 zabbix_java]# ls
bin  lib  settings.sh  shutdown.sh  startup.sh
[root@TsO-04 zabbix_java]# cgrep settings.sh 
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5         #开启的线程数,要大于或是等于一会’zabbix_server.conf‘配置文件的'StartJavaPollers'值
[root@TsO-04 zabbix_java]# chmod +x settings.sh
[root@TsO-04 zabbix_java]# ./startup.sh
[root@TsO-04 zabbix_java]# netstat -ntpl | grep 10052
tcp        0      0 0.0.0.0:10052           0.0.0.0:*               LISTEN      17256/java 


[root@TsO-04 zabbix_java]# cd ../../etc
[root@TsO-04 etc]# pwd
/tskj/conf/zabbix4.0.1/etc
[root@TsO-04 etc]# cgrep zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=cc_zabbix
DBPassword=Tsxxxxxxxxxxxxx9!
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3506
JavaGateway=192.168.66.225  #服务器IP
JavaGatewayPort=10052       # JavaGateway开启的端口
StartJavaPollers=5          # 开启的进程数
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
LogSlowQueries=3000
[root@TsO-04 etc]# systemctl restart zabbix_service

客户端 (Zabbix_agent Tomcat)

[root@TsO-03 ~]# netstat -ntpl | grep 8008   #Tomcat 对外提供的端口为8008
tcp        0      0 0.0.0.0:8008            0.0.0.0:*               LISTEN      18588/java 
[root@TsO-03 ~]# cd -
/tskj/conf/tomcat8  # 进入tomcat安装目录
[root@TsO-03 tomcat8]# hostname && hostname -i
TsO-03
192.168.66.224
[root@TsO-03 tomcat8]# sed -n 2,9p bin/catalina.sh 

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=12366
-Dcom.sun.management.jmxremote.rmi.port=12367 
-Djava.rmi.server.hostname=192.168.66.224"   #在zabbix如何监控JIM浪费很多口舌,说的几乎都是这几项的配置原因。注意防火墙开放以上两个端口,如果是阿里云服务器并且跟zabbix_server不在一个安全组的话需要单独放行此处的两个端口。在Zabbix Web界面主机监控JIMX接口处填写的端口是’Dcom.sun.management.jmxremote.port‘指定的12366端口。



[root@TsO-03 tomcat8]#  wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.41/bin/extras/catalina-jmx-remote.jar -P lib/

[root@TsO-03 tomcat8]# ./bin/shutdown.sh
[root@TsO-03 tomcat8]# su tomcat /tskj/conf/tomcat8/bin/startup.sh 

[root@TsO-03 ~]# ps -ef | grep tomcat
root       862   752  0 04:34 pts/0    00:00:00 grep --color=auto tomcat
tomcat   18588     1  0 5月31 ?       00:00:40 /usr/bin/java -Djava.util.logging.config.file=/tskj/conf/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12366 -Dcom.sun.management.jmxremote.rmi.port=12367 -Djava.rmi.server.hostname=192.168.66.224 -Dignore.endorsed.dirs= -classpath /tskj/conf/tomcat8/bin/bootstrap.jar:/tskj/conf/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/tskj/conf/tomcat8 -Dcatalina.home=/tskj/conf/tomcat8 -Djava.io.tmpdir=/tskj/conf/tomcat8/temp org.apache.catalina.startup.Bootstrap start


你可能感兴趣的:(zabbix4 监控Tomcat)