JMX简单介绍
全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。
优点: 可以详细的监控各类Java程序的运行状态
缺点:被监控机上需要安装zabbix-java-gateway
(1)server2搭建环境--->被监听客户端
搭建Java的运行环境:jdk+tomcat!
rpm -ivh jdk-8u121-linux-x64.rpm ##下载Java的类库(运行环境)
tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/ ##下载Java运行的服务器
cd /usr/local/ ln -s apache-tomcat-8.5.24/ tomcat ##制作软链接 -->便于升级
cd tomcat/bin/
vim catalina.sh ##编辑配置
## 编辑配置JMX参数(Java Management Extensions) ## Windows和Linux略有区别!
CATALINA_OPTS='-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 ##指定端口
-Dcom.sun.management.jmxremote.ssl=false ##是否对链接开启ssl加密,默认开启
-Dcom.sun.management.jmxremote.authenticate=false' ##是否开启用户验证,默认开启。
cd /usr/local/tomcat/bin
./startup.sh ##开启tomcat服务
(2)通过端口和日志看是否开启
###netstat -antlupe### 关注:8888和8080端口是否开启!
tcp6 0 0 :::8080 :::* LISTEN 0 28686 3560/java
tcp6 0 0 :::45042 :::* LISTEN 0 28679 3560/java
tcp6 0 0 :::22 :::* LISTEN 0 14592 601/sshd
tcp6 0 0 :::8888 :::* LISTEN 0 28680 3560/java
tcp6 0 0 ::1:25 :::* LISTEN 0 15766 844/master
tcp6 0 0 :::10050 :::* LISTEN 997 15079 614/zabbix_agentd
tcp6 0 0 :::8009 :::* LISTEN 0 28688 3560/java
(3)测试首页
# 默认的站点目录 -->tomcat/webapps/ROOT
# vim test.jsp -->自己写的测试页面
<%= new java.util.Date()%>
(4)工作原理
如下所示:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345(我们在上面开启的是8888)向Zabbix-JavaGateway提供请求数据。
补充:agent是不能探测JVM内部的参数信息,而tomcat对外表现就是一个进程,所以需要借助"Java网关"!
从上面的原理图中我们可以得出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等(上步已经做好了)。
明确:各端口关系,以及监听的逻辑原理!
核心:在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
(5)开始部署
yum install zabbix-java-gateway.x86_64 -y # 软件安装
vim /etc/zabbix/zabbix_java_gateway.conf # 编辑配置文件
# LISTEN_IP="0.0.0.0" -->默认监听所有的IP
# START_POLLERS=5 -->开启的线程数
# LISTEN_PORT=10052 -->监听端口
systemctl start zabbix-java-gateway.service
systemctl enable zabbix-java-gateway.service # 开机自启是良好的习惯!
netstat -antlupe # 端口开启
tcp6 0 0 :::10052 :::* LISTEN 997 74074 27206/java
了解:tomcat并发能力不强,压力测试并发是10个左右,不是企业级别!
注意:此时让Zabbix-Server还不能够连接Zabbix-JavaGateway,你得让它知道,需要进行配置
vim zabbix_server.conf
# JavaGateway=172.25.2.1 #Gateway的地址
# JavaGatewayPort=10052 #Gateway开启的端口
# StartJavaPollers=5 # server开启5个线程与上面指定IP:端口进行通信,收集信息!
systemctl restart zabbix-server.service
ps -ax ## 开启了五个关于java poller的线程
30019 ? S 0:00 /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000043 sec, idle 5 sec]
30020 ? S 0:00 /usr/sbin/zabbix_server: java poller #2 [got 0 values in 0.000011 sec, idle 5 sec]
30021 ? S 0:00 /usr/sbin/zabbix_server: java poller #3 [got 0 values in 0.000012 sec, idle 5 sec]
30022 ? S 0:00 /usr/sbin/zabbix_server: java poller #4 [got 0 values in 0.000010 sec, idle 5 sec]
30023 ? S 0:00 /usr/sbin/zabbix_server: java poller #5 [got 0 values in 0.000010 sec, idle 5 sec]
(6)zabbix监控页面进行相应的配置
说明:90%左右的都是使用agent的接口方式,tomcat选择JMX接口监听方式!
配置—> 主机—> server2—> 主机—> 添加JMX接口的信息 —> 添加
注意:端口要和配置文件中写的一样,最好在各个主机都做好本地解析!
主机 —> server2—>模板—> 选择图中的模板 —> 添加 —> 更新
j即得刷新一下可以看到server2的JMX变绿
mysql模板问题
主要:'历史数据(大存储)','性能瓶颈的最大可能出现在数据库中',当时经过考虑由于日志等相关数据(相对而言不是业务数据),所以就采用了'newsql新型的数据库tidb来承载数据',同时原来zabbix自带监控项有限,所以采用了mysql的第三方开发所提供的perconal的模版!