第十三篇、【Zabbix监控项之Jvm监控】

0、注意事项

如果编译Zabbix Server端的时候,没有开启--enable-java   (Zabbix Java gateway),那需要重新编译源码。

1、重新编译源码

源码安装建议不要删除,保存起来,以后需要重新编译很快,因为编译过的*.o,不用再进行重新编译,只编译新功能的代码

 

[root@filestore-v2 ~ ]# cd zabbix-4.4.3

[root@filestore-v2 zabbix-4.4.3]# ./configure --prefix=/data/application/zabbix-4.4.3 \
--enable-server \
--enable-agent \
--with-mysql=/data/application/mysql-5.7.25/bin/mysql_config \
--enable-ipv6 \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--enable-java

[root@filestore-v2 zabbix-4.4.3]# make && make install

#查看安装好,多出的程序
[root@filestore-v2 ~]# tree /data/application/zabbix-4.4.3/sbin/
/data/application/zabbix-4.4.3/sbin/
├── zabbix_agentd
├── zabbix_java
│   ├── bin
│   │   └── zabbix-java-gateway-4.4.3.jar
│   ├── lib
│   │   ├── android-json-4.3_r3.1.jar
│   │   ├── logback-classic-0.9.27.jar
│   │   ├── logback-console.xml
│   │   ├── logback-core-0.9.27.jar
│   │   ├── logback.xml
│   │   └── slf4j-api-1.6.1.jar
│   ├── settings.sh
│   ├── shutdown.sh
│   └── startup.sh
└── zabbix_server

2、配置zabbix-java-gateway

[root@filestore-v2 zabbix_java]# vi /data/application/zabbix-4.4.3/sbin/zabbix_java/settings.sh
...
      4 ### Option: zabbix.listenIP
      5 #       IP address to listen on.
      6 #
      7 # Mandatory: no
      8 # Default:
        #监听的网口地址
      9 LISTEN_IP="0.0.0.0"
     10 
     11 ### Option: zabbix.listenPort
     12 #       Port to listen on.
     13 #
     14 # Mandatory: no
     15 # Range: 1024-32767
     16 # Default:
        #监听的端口
     17 LISTEN_PORT=10052
     19 ### Option: zabbix.pidFile
     20 #       Name of PID file.
     21 #       If omitted, Zabbix Java Gateway is started as a console application.
     22 #
     23 # Mandatory: no
     24 # Default:
     25 # PID_FILE=
     26 # 服务启动的pid文件
     27 PID_FILE="/data/application/zabbix-4.4.3/log/zabbix_java.pid"
     28 
     29 ### Option: zabbix.startPollers
     30 #       Number of worker threads to start.
     31 #
     32 # Mandatory: no
     33 # Range: 1-1000
     34 # Default:
        # 开启的工作线程数
     35 START_POLLERS=5

3、zabbix-java-gateway的服务开启

# 开启zabbix-java-gateway的服务
[root@filestore-v2 zabbix-4.4.3]# /data/application/zabbix-4.4.3/sbin/zabbix_java/startup.sh 

# 检查端口是否开启
[root@filestore-v2 ~]# netstat -tunlp | grep java
tcp6       0      0 :::10052                :::*                    LISTEN      95040/java          

4、配置Zabbix Server端

# 配置Zabbix Server端的配置文件
[root@filestore-v2 ~]# vi /data/application/zabbix-4.4.3/etc/zabbix_server.conf
...
    276 ### Option: JavaGateway
    277 #       IP address (or hostname) of Zabbix Java gateway.
    278 #       Only required if Java pollers are started.
    279 #
    280 # Mandatory: no
    281 # Default:
    282 JavaGateway=192.168.10.96
    283 
    284 ### Option: JavaGatewayPort
    285 #       Port that Zabbix Java gateway listens on.
    286 #
    287 # Mandatory: no
    288 # Range: 1024-32767
    289 # Default:
    290 JavaGatewayPort=10052
    291 
    292 ### Option: StartJavaPollers
    293 #       Number of pre-forked instances of Java pollers.
    294 #
    295 # Mandatory: no
    296 # Range: 0-1000
    297 # Default:
    298 StartJavaPollers=5
...

# 重启Zabbix Server端服务
[root@filestore-v2 ~]# /etc/init.d/zabbix_server restart

5、在Tomcat服务开启JMX协议

5.1、JMX协议开启会产生两个端口:

一、注册端口(即是我们配置【sun.management.jmxremote.port=12345】)
二、JMX服务端口,这个端口是随机生成,所以在固定下来,可以防火墙开放

注意:以上两个端口必须在防火墙开启出来。否则JMX一定不会开启成功

5.2、固定服务端口的方法

首先到官网(https://tomcat.apache.org)下载jmx扩展插件:这里使用的是Tomcat 7,根据自己版本,自己行下载,因为是官方提供的,所以放心下载。

 

 

 

 

 

 

 

 

 

5.3、linux下载方法

#进入tomcat jar库的目录
[root@sms-v2 ~]# cd /data/application/apache-tomcat-8.5.38_custom/lib/

#直接使用wget下载jar包
[root@sms-v2 lib]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.99/bin/extras/catalina-jmx-remote.jar

5.4、注册到tomcat使之生效
[root@sms-v2 ~]# vi /data/application/apache-tomcat-8.5.38_custom/conf/server.xml 

5.4、注册到tomcat使之生效

...
22 <Server port="8006" shutdown="SHUTDOWN">
23 <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
24 <!-- Security listener. Documentation at /docs/config/listeners.html
25 <Listener className="org.apache.catalina.security.SecurityListener" />
26 -->
27 <!--APR library loader. Documentation at /docs/apr.html -->
28 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
29 <!-- Prevent memory leaks due to use of particular java/javax APIs-->
30 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
31 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
32 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- rmiRegistryPortPlatform : 注册端口,rmiServerPortPlatform : jmx服务端口-->
33 <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="10002" />
...

 

 

5.5、Tomcat 开启jmx的配置

#复制配置密码的文件
[root@sms-v2 ~]# cp /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.password.template /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.password

#配置jmx密码文件,设置只有root用户才读写权限
[root@sms-v2 ~]# chmod 600 /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.password

#配置jmx用户权限文件,设置只有root用户才读写权限
[root@sms-v2 ~]# chmod 600 /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.access 

#设置监控的账号和密码
[root@sms-v2 ~]# vi /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.password
     59 # Following are two commented-out entries.  The "measureRole" role has
     60 # password "QED".  The "controlRole" role has password "R&D".
     61 #
        #账号        密码
     62 monitorRole  abcabc123
     63 # controlRole   R&D
     
#设置角色的权限
[root@sms-v2 ~]# vi /data/application/jdk1.8.0_152/jre/lib/management/jmxremote.access 
     72 # o The "monitorRole" role has readonly access.
     73 # o The "controlRole" role has readwrite access and can create the standard
     74 #   Timer and Monitor MBeans defined by the JMX API.
     75 
     76 monitorRole   readonly
     77 controlRole   readwrite \
     78               create javax.management.monitor.*,javax.management.timer.* \
     79               unregister
     


[root@sms-v2 ~]# vi /data/application/apache-tomcat-8.5.38_custom/bin/catalina.sh 
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.10.95
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/data/application/jdk1.8.0_152/jre/lib/management/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/data/application/jdk1.8.0_152/jre/lib/management/jmxremote.access"

5.6、重启tomcat服务(略)

5.7、检查开启的端口

[root@sms-v2 ~]# netstat -tunlp | grep java     
tcp6       0      0 :::10002                :::*                    LISTEN      106539/java         
tcp6       0      0 :::8088                 :::*                    LISTEN      106539/java         
tcp6       0      0 :::12345                :::*                    LISTEN      106539/java         
tcp6       0      0 :::8443                 :::*                    LISTEN      72188/java  

6、在tomcat服务器防火墙放行jmx协议的12345和10002端口

[root@sms-v2 ~]# firewall-cmd --permanent --add-port=12345/tcp
success
[root@sms-v2 ~]# firewall-cmd --permanent --add-port=10002/tcp
success
[root@sms-v2 ~]# firewall-cmd --reload success

7、用java自带的工具测试【jconsole.exe】和【jvisualvm.exe】

7.1、【jconsole.exe】

显示效果

7.2、【jvisualvm.exe】

 

显示效果

8、开始在Zabbix Server配置JMX

9、增加JMX的模板

点击【更新】

由于设置账号和密码,批量修改用户名和密码

10、查看JMX是否配置成功


 

11、利用jmx协议自定义监控jvm堆使用内存(必须会)

11.1、利用【jconsole.exe】工具查询key项的值【这里以堆使用内存为例】

键值格式:
jmx["ObjectName",属性值]

11.2、组装jmx[]第一项值

 

jmx["java.lang:type=Memory",]

11.3、组装jmx[]第二项

#最终监控项组装成功
jmx["java.lang:type=Memory",HeapMemoryUsage.used]

11.4、开始配置该监控项

 

11.5、配置画图

 

11.6、查看画图的效果

 

 

12、有关JVM更多参数的监控自行利用上面的工具,获取参数进行监控

 

下一篇【Zabbix监控项之Zabbix采集器(Trapper)监控】请点击查看

posted @ 2020-01-03 23:49  小粉优化大师  阅读(1139)  评论(0编辑  收藏  举报