网站首页 > 开源技术 正文
概述
zabbix监控tomcat只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据,zabbix-server只要向zabbix-java-gateway取数据添加到数据库即可。但zabbix官方提供的jvm和tomcat监控模版,存在item书写格式的坑,导致很多内容无法获取到监控。
所以就自己写脚本来监控了,先介绍一下传统方式的监控。
一、tomcat+jvm监控点
1、tomcat监控
Tomcat请求数:包括每秒请求数,每秒出错数;Tomcat网络流量统计:包括进流量统计,出流量统计;Tomcat线程:包括最大线程数,当前线程数,当前繁忙线程数。
2、JVM监控
内存使用状态:堆内存(Heap memory)和非堆内存(No Heap memory),包括已用值、最大值、已提交;
堆内存内存池:新生代(eden space),survivor space,老年代(old gen)的内存使用状态;
非堆内存内存池:代码缓存(Code cache),元空间(meta space),压缩类空间(compressed class space);
类加载:加载总数,已加载,已卸载。
Java线程:总开启线程,活动线程,线程峰值
这里没有在zabbix中添加垃圾回收(gc)的监控,而是在catalina配置里面添加gc日输入来给开发进行分析,设置方式如下。
CATALINA_OPTS=”-XX:ParallelGCThreads=4 -XX:+PrintGCDetails -Xloggc:日志存放路径”
二、zabbix客户端配置
1、部署zabbix_agent
rpm -ivh zabbix-agent-4.2.6-1.el7.x86_64.rpm
2、修改zabbix_agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
=======================================================================
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log #错误日志
LogFileSize=0
ListenPort=10050 #启动监听端口
StartAgents=3 #被动模式下选择,主动模式则为0
ListenIP=0.0.0.0 #监听所有IP
Server=xxxx #被动模式下必填,将zabbix-server端的ip填入
ServerActive=xxxx #主动模式下填写这个参数
Hostname=xxx #本机的hostname,此值必须与zabbix的网页上创建的主机名一致
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
=======================================================================
3、启动zabbix_agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
4、添加catalina-jmx-remote.jar
下载地址:http://archive.apache.org/dist/tomcat/tomcat-8/
找到对应tomcat版本的catalina-jmx-remote.jar,catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目录下,然后放到tomcat/lib下
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/extras/catalina-jmx-remote.jar
chmod u+x catalina-jmx-remote.jar
5、添加tomact中JMX的参数
打开tomcat/bin/catalina.sh文件,在#!/bin/sh下面添加如下,注意hostname填本机的ip地址。
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=12345
-Djava.rmi.server.hostname=xxxx4"
6、重启tomcat与监控测试
6.1、下载cmdline-jmxclient-0.10.3.jar
cmdline-jmxclient.jar主要用于抓取jmx的信息。
下载地址:http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar
6.2、测试jmx监控项
7、监控项数据采集
--堆内存
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
--内存池eden space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=PS\ Eden\ Space Usage
--内存池survivor space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=PS\ Survivor\ Space Usage
--内存池old gen
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:name=PS\ Old\ Gen,type=MemoryPool Usage
--非堆内存
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Memory NonHeapMemoryUsage
--内存池meta space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Metaspace Usage
--内存池code cache
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Code\ Cache Usage
--内存池compressed class space
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=MemoryPool,name=Compressed\ Class\ Space Usage
--类加载
加载总数: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading TotalLoadedClassCount
已加载: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading LoadedClassCount
已卸载: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=ClassLoading UnloadedClassCount
--JAVA线程
总开启线程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading TotalStartedThreadCount
活动线程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading PeakThreadCount
线程峰值: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:12345 java.lang:type=Threading PeakThreadCount
--tomcat线程
最大线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool maxThreads
当前线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool currentThreadCount
繁忙线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool currentThreadsBusy
--网络流量
接收的字节:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor bytesReceived
发送的字节:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor bytesSent
--tomcat请求
tomcat请求数:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor requestCount
tomcat出错请求:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor errorCount
三、配置zabbix服务端
1、安装zabbix-java-gateway
仓库地址:https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/
zabbix-java-gateway默认工作在10052端口(zabbix-server默认工作在10051端口,zabbix-agent默认工作在10050端口)
#安装
wget https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-java-gateway-4.2.6-1.el7.x86_64.rpm
rpm -ivh zabbix-java-gateway-4.2.6-1.el7.x86_64.rpm
#启动
systemctl start zabbix-java-gateway
#开机启动
systemctl enable zabbix-java-gateway
2、配置zabbix_java_gateway.conf和zabbix_server.conf
重点:Java-gateway配置文件的START_POLLERS参数 >= zabbix_server配置文件的StartJavaPollers参数,建议一样,都设为5。
2.1、配置zabbix_java_gateway.cnf
# vim /etc/zabbix/zabbix_java_gateway.conf
==================================================================================================
PID_FILE="/var/run/zabbix/zabbix_java.pid"
#LISTEN_IP="xxxx" #本机ip地址,如果和server安装在相同的位置可以不修改
LISTEN_PORT=10052 #端口可以修改为其他,在server段需要相同的配置
START_POLLERS=5 #设置启动多个线程,这里和server段相同
TIMEOUT=3 #超时时间
==================================================================================================
2.2、配置zabbix_server.conf:
让zabbix-server服务能连接到zabbix-java-gateway服务
# vim /data/zabbix/etc/zabbix_server.conf
==================================================================================================
JavaGateway=xxx #如果是本机安装直接使用127.0.0.1
JavaGatewayPort=10052 #端口号和javagateway要对应
StartJavaPollers=5 #线程数和客户端配置对应 不能少于客户端数目 StartJavaPollers<=START_POLLERS
==================================================================================================
3、重启zabbix-server和zabbix-java-gateway服务
systemctl restart zabbix_server
systemctl restart zabbix-java-gateway
四、web界面配置jmx监控
Zabbix-server通过JavaPollers进程调用zabbix-java-gateway获得tomcat数据,而zabbix-java-gateway就是通过这里配置的tomcat地址和端口,连接到tomcat从而获取到数据。
1、配置-->主机-->创建主机-->JMX添加-->输入IP(tomcat服务器IP)和端口(12345)
2、配置-->主机-->tomcat服务器-->模版-->Template App Apache Tomcat JMX、Template App Generic Java JMX-->添加-->更新
3、配置成功显示
找到主机,如果JMX显示颜色,则配置成功。
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
猜你喜欢
- 2024-10-25 JAR、WAR、EAR的使用和区别(jars和wars)
- 2024-10-25 详解如何用同一个zabbix监控模板来监控tomcat不同端口
- 2024-10-25 mybatis-generator 初体验(mybatisplus generator)
- 2024-10-25 01. struts2介绍(struts2入门)
- 2024-10-25 MyBatis系列-2-日志配置(mybatis 日志)
- 2024-10-25 Java初学者不得不知的概念:抽丝剥茧JDK、JRE、JVM之间的区别
- 2024-10-25 mysql-connector-java与MySQL 8.X版本建立连接
- 2024-10-25 Jmeter中间件处理-ActiveMQ(jmeter常用的组件有哪些)
- 2024-10-25 苏州众里Apache Log4j2 漏洞处置建议
- 2024-10-25 操作 PDF 文件的常用JAR包(pdfreader java)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)