tomcat 8集合memcache所需完整jar包_使用 zabbix 监控 tomcat(包含jvm监控)
点击上方“民工哥技术之路”选择“星标”
每天10点为你分享不一样的干货
读者福利!多达 2048G 各种资源免费赠送
1.前言:
我们的监控系统是zabbix,最近刚做完jvm还有tomcat的监控,需要吐槽以下内容:
- zabbix官方提供的jvm和tomcat监控模版,存在item书写格式的坑,导致很多内容无法获取到监控。
- 网友写的zabbix监控java文章,99%就只有环境的搭建,没有zabbix item键值,所以环境监控上了,item键值不知道怎么写。
本文监控jvm内容如下:
内存使用状态:堆内存(Heap memory)和非堆内存(No Heap memory),包括已用值、最大值、已提交;堆内存内存池:新生代(eden space),survivor space,老年代(old gen)的内存使用状态;非堆内存内存池:代码缓存(Code cache),元空间(meta space),压缩类空间(compressed class space);类加载:加载总数,已加载,已卸载。Java线程:总开启线程,活动线程,线程峰值。
本文监控tomcat内容如下:
Tomcat请求数:包括每秒请求数,每秒出错数;Tomcat网络流量统计:包括进流量统计,出流量统计;Tomcat线程:包括最大线程数,当前线程数,当前繁忙线程数。
我没有在zabbix中添加垃圾回收(gc)的监控,而是在catalina配置里面添加gc日输入来给开发进行分析,设置方式如下。CATALINA_OPTS=”-XX:ParallelGCThreads=4 -XX:+PrintGCDetails -Xloggc:日志存放路径”监控效果如下:
2.监控环境搭建
环境介绍:
[root@tomcat-01 ~]# /usr/local/tomcat/bin/version.shServer version: Apache Tomcat/8.0.23Server built: May 19 2015 14:58:38 UTCServer number: 8.0.23.0OS Name: LinuxOS Version: 2.6.32-573.22.1.el6.x86_64Architecture: amd64JVM Version: 1.8.0_65-b17JVM Vendor: Oracle Corporation
2.1.Server端配置
1、 Zabbix server端安装java jdk环境并开启javaGateway支持java监控。javaGateway 启用方式如下:Zabbix通过rpm包安装:只需要安装zabbix-java-gateway包即可。Zabbix通过编译安装:在编译时需要加上—enable-java以支持jmx监控,如果之前没加需要重新编译。2、修改zabbix-java-gateway配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.confLISTEN_IP="192.168.10.3"LISTEN_PORT=10052PID_FILE="/var/run/zabbix/zabbix_java.pid"START_POLLERS=5
修改zabbix-server配置文件[root@zabbix ~]# vim /etc/zabbix/zabbix_server.confJavaGateway=192.168.10.3JavaGatewayPort=10052StartJavaPollers=5
启动zabbix-java-gateway服务[root@zabbix ~]# /etc/init.d/zabbix-java-gateway start
2.2.Tomcat服务器配置
1、下载catalina-jmx-remote.jar包,到tomcat安装目录下的lib目录
wget -O /usr/local/tomcat/lib/catalina-jmx-remote.jar http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/extras/catalina-jmx-remote.jar
2、修改catalina.sh添加如下内容
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
3、重启tomcat与监控测试(1)下载cmdline-jmxclient-0.10.3.jar文件,下载地址http://crawler.archive.org/cmdline-jmxclient/downloads.html(2)本地执行如下命令查看tomcat的堆内存信息
[root@tomcat-01 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage11/04/2016 15:23:16 +0800 org.archive.jmx.Client HeapMemoryUsage:committed: 2146959360init: 2147483648max: 2146959360used: 407611808
3.监控数据采集
3.1.堆内存
Tomcat本地查看堆内存信息:
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage11/04/2016 15:36:58 +0800 org.archive.jmx.Client HeapMemoryUsage:committed: 2145910784init: 2147483648max: 2145910784used: 741540536
zabbix监控堆内存键值:
堆内存最大值:jmx["java.lang:type=Memory","HeapMemoryUsage.max"]已用堆内存:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]已提交堆内存:jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
一个完整的zabbix item填写方式如下,不同内容填写不同的键值即可:
3.2.内存池eden space:
Tomcat本地查看eden space:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS\ Eden\ Space Usage
zabbix监控eden区域键值:
最大空间:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.max]已用空间:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.used]提交空间:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.committed]
3.3.内存池survivor space:
Tomcat本地查看Survivor space区域:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS\ Survivor\ Space Usage
zabbix监控Survivor 键值:
jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.committed]jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.max]jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.used]
3.4.内存池old gen:
Tomcat本地查看old gen区域使用:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Old\ Gen,type=MemoryPool Usage
zabbix监控old gen键值:
jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.committed]jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.max]jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.used]
3.5.非堆内存:
Tomcat 本地查看非堆内存使用:
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Memory NonHeapMemoryUsag1zabbix监控非堆内存使用1jmx["java.lang:type=Memory","NonHeapMemoryUsag.committed"]jmx["java.lang:type=Memory","NonHeapMemoryUsag.used"]
3.6.内存池meta space:
Tomcat 本地查看meta space区域使用:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Metaspace Usage
zabbix监控mete space区域键值
jmx["java.lang:type=MemoryPool,name=Metaspace",Usage.committed]jmx["java.lang:type=MemoryPool,name=Metaspace",Usage.used]
3.7.内存池code cache:
Tomcat 本地查看code cache区域使用:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Code\ Cache Usage
zabbix监控code cache区域使用:
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.committed]jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.max]jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.used]
3.8.内存池compressed class space:
Tomcat 本地查看compressed class space区域使用:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Compressed\ Class\ Space Usage
zabbix监控 compressed class space区域使用键值:
jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.committed]jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.max]jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.used]
3.9.类加载:
Tomcat本地查看类加载信息:
加载总数: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading TotalLoadedClassCoun已加载: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading LoadedClassCount已卸载: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading UnloadedClassCount
Zabbix监控类加载键值:
加载总数: jmx["java.lang:type=ClassLoading","TotalLoadedClassCount"]已加载: jmx["java.lang:type=ClassLoading","LoadedClassCount"]已卸载: jmx["java.lang:type=ClassLoading","UnloadedClassCount"]
3.10.java线程:
tomcat本地查看java线程:
总开启线程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading TotalStartedThreadCount活动线程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading PeakThreadCount线程峰值: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading PeakThreadCount
Zabbix监控java线程键值:
总开启线程: jmx["java.lang:type=Threading","TotalStartedThreadCount"]活动线程: jmx["java.lang:type=Threading","ThreadCount"]线程峰值: jmx["java.lang:type=Threading","PeakThreadCount"]
3.11.tomcat线程:
本地查看tomcat线程信息:
最大线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool maxThreads当前线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool currentThreadCount繁忙线程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool currentThreadsBusy
Zabbix监控tomcat线程键值:
最大线程:jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",maxThreads]当前线程:jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",currentThreadCount]繁忙线程 jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",currentThreadsBusy]
3.12.网络流量:
Tomcat本地查看接收的字节:
接收的字节:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor bytesReceived发送的字节:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor bytesSent
Zabbix监控tomcat接受字节键值:
接收的字节:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",bytesReceived]发送的字节:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",bytesSent]
3.13.tomcat请求,出错请求:
tomcat本地查看tomcat请求数:
tomcat请求数: java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.46:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor requestCounttomcat出错请求: java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.46:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor errorCount
zabbix监控tomcat请求数:
tomcat请求数: jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",requestCount]tomcat出错请求:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",errorCount]
4.问题的解答最近有网友联系我说,看着我的博文搭建完了环境,获取不到数据,我帮助排查了一下,找到了问题所在,特此记录。网友的报错如下:
# java -jar /root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:type=MemoryPool,name=PS\ Eden\ Space Usag11/11/2016 10:03:37 +0800org.archive.jmx.Client java.lang:name=PS Eden Space,type=MemoryPool is not a registered bean
4.1.解决思路
- 如果你使用命令行监控获取不到数据,那么就先使用jconsole看看有没有数据,
- 如果jconsole有数据,那么就往下看,反之检查你的环境。
- 如果jconsole有数据,但是命令行没有数据,那么就是Mbean的Object Name或者属性有问题,网友都是复制我的,但是自己本地环境和我的环境不一样所以导致获取不到数据,查询自己的本地Mbean方法有两种,分别是图形和命令行,网友的报错说事自己的Eden Space空间有问题,那么我就贴出来查看本地内存池的Object Name和属性的方法。
(1)通过jconsole查看:
(2)通过命令行查看:直接使用java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:8090命令可以获取所有的Mbean信息,输出太多这里就不贴输出结果了。我通过grep命令获取所有内存池的监控信息方式如下。
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 | grep MemoryPooljava.lang:name=Compressed Class Space,type=MemoryPooljava.lang:name=Metaspace,type=MemoryPooljava.lang:name=PS Old Gen,type=MemoryPooljava.lang:name=PS Eden Space,type=MemoryPooljava.lang:name=PS Survivor Space,type=MemoryPooljava.lang:name=Code Cache,type=MemoryPool
然后我要获取Eden Space的所有属性信息方式如下:(一些特殊字符需要转义)
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Eden\ Space,type=MemoryPoolAttributes: Usage: Usage (type=javax.management.openmbean.CompositeData) PeakUsage: PeakUsage (type=javax.management.openmbean.CompositeData) MemoryManagerNames: MemoryManagerNames (type=[Ljava.lang.String;) UsageThreshold: UsageThreshold (type=long) UsageThresholdExceeded: UsageThresholdExceeded (type=boolean) UsageThresholdCount: UsageThresholdCount (type=long) UsageThresholdSupported: UsageThresholdSupported (type=boolean) CollectionUsageThreshold: CollectionUsageThreshold (type=long) CollectionUsageThresholdExceeded: CollectionUsageThresholdExceeded (type=boolean) CollectionUsageThresholdCount: CollectionUsageThresholdCount (type=long) CollectionUsage: CollectionUsage (type=javax.management.openmbean.CompositeData) CollectionUsageThresholdSupported: CollectionUsageThresholdSupported (type=boolean) Valid: Valid (type=boolean) Name: Name (type=java.lang.String) Type: Type (type=java.lang.String) ObjectName: ObjectName (type=javax.management.ObjectName)Operations: resetPeakUsage: resetPeakUsage Parameters 0, return type=void
那么我们在查看Eden Space空间的使用信息。就看到已经出来数据了
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Eden\ Space,type=MemoryPool Usage12/03/2016 08:33:58 +0800 org.archive.jmx.Client Usage:committed: 712507392init: 537395200max: 712507392used: 396006304
文章系作者原创投稿,作者:西门飞冰,一名90后it男,一直在北京工作,热爱运动,热爱冒险,热爱旅行。原文:西门飞冰的博客-专注于Linux运维 » zabbix监控tomcat(包含jvm监控)。
在 民工哥技术之路 微信公众号对话框回复关键字:1024 可以获取一份最新整理的技术干货。
怎么选?毕竟可以上网的浏览器只剩下四款了...
想要高可用?搞定负载均衡架构是关键
一键实现自动化部署(灰度发布)实践
创业公司技术总监,去上市公司面试,结果凉了!
华为方舟编译器开源官网正式上线
8年了,再见!Python 2
整理了一些 IDEA 中比较骚的技巧,发现第一个就没用过!
点击【阅读原文】和民工哥一起学技术、搞事情~~
不管怎样
点“在看”一定不能放弃啊
tomcat 8集合memcache所需完整jar包_使用 zabbix 监控 tomcat(包含jvm监控)相关推荐
- jsp 模板引擎。无需 tomcat,只需一个 jar 包直接根据 jsp 源文件渲染得到 html 页面
jsp 模板引擎.无需 tomcat,只需一个 jar 包直接根据 jsp 源文件渲染得到 html 页面. 背景 说到模板引擎,大家能想到的一般都是 freemarker.thymeleaf 之类的 ...
- java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)
JPA 开发所需的Jar包 (基于Hibernate) (一)下载Sun 的JPA规范(即:Jar包)登陆JavaEE 的 Technologies 页面: http://java.sun.com/j ...
- 在改版的Spring官网下载所需的jar包
1.第一步:打开官网:http://www.springsource.org/download/community 2.第二步:点击"SPRING FRAMEWORK"图片 3.第 ...
- 使用 zabbix 监控 tomcat(包含jvm监控)
点击上方"民工哥技术之路"选择"星标" 每天10点为你分享不一样的干货 读者福利!多达 2048G 各种资源免费赠送 1.前言: 我们的监控系统是zabbix ...
- gradle 项目打包成多个jar包_永不失优雅——高效管理Springboot项目
猿灯塔 全文略长 希望能帮到各位 另外!文末有你们想要的白嫖惊喜哦! 本文主要讲述一下如何优雅地管理SpringBoot项目. 第一种方式:使用SHELL脚本 As we known 作为一个后端程序 ...
- 记一次帮同学搭建项目Tomcat启动失败,至少有一个JAR被扫描用于TLD但尚未包含TLD。
文章目录 1.Tomcat报的错误 2.我是直接换个Tomcat就成功了,建议大家以后不要只安装一个Tomcat,有的问题是版本问题(本问题应该不是版本问题),比较复杂,如果以后遇到其他问题搞了半天是 ...
- sql server jar包_老王,怎么完整SQL的显示日志,而不是???...
点击蓝色"Java面试那些事儿"关注我哟 加个"星标",优质文章,第一时间送达 来源:http://1t.click/ag6q在常规项目的开发中可能最容易出问题 ...
- 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao
1 创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyaut ...
- idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
来源:https://mp.weixin.qq.com/s/Rzrssod0ngoQiEsxvRzTQg 作者:java面试那些事儿 来源:微信公众号 声明:本文为二次转载,侵删 IDEA有两大版本, ...
最新文章
- Beautiful Subarrays (01字典树 瞎搞)
- mysql简单索引_mysql简单索引
- 遍历查询ldap服务器用户
- android多屏幕适配资源生成,android – 多屏幕适配相关
- javascript高级程序设计 学习笔记 第五章 上
- Opencv和C++实现canny边缘检测
- linux修改容器内的mysql端口_Linux系统下修改phpstudy集成环境中的MySQL端口号的步骤...
- 小程序中 swiper设置圆角在真机上不显示问题
- 超越 PyTorch,他立志做全球最有影响力的深度学习框架!
- 标贝科技推出情感合成 TTS,让语音交互更有温度!
- LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS...
- Cloudflare的介绍可以防DDOS 能防多少G呢?
- 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(三)——抵抗侧信道攻击设计方案
- win10计算机不显示usb,win10系统U盘不识别怎么办 没有显示U盘的解决方法
- ACM大学生程序设计竞赛在线题库最新精选题解(赵端阳)解析
- php spider视频教程,phpspider的简单使用
- vue 填空题组件封装
- Uml 类图 stereotype的值含义,该怎么解决
- 独木舟上的旅行-OJ
- cad调了比例因子没反应_CAD入门学习之如何修改比例因子
热门文章
- 七月文章导读【TCP/IP相关】:解密 TCP/IP;什么是公网ip?什么是内网ip?为什么ip地址通常以192.168开头?
- ANSI C typedef
- vscode remote 第三方库_还能这么玩?用VsCode画类图、流程图、时序图、...不要太爽
- mybatis基于XML(二)
- 单体内置对象_单体内置对象
- spring 处理带有特殊字符的请求_程序员笔记|常见的Spring异常分析及处理
- java 拆箱 类型不对,Java基本类型于对象类型的拆箱和装箱
- dev控件调用html页面,Chrome开发工具 扩展 DevTools
- OpenShift 4 Tekton - 用Webhook实现CI/CD
- .net core精彩实例分享 -- 序列化