点击上方“民工哥技术之路”选择“星标”

每天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监控)相关推荐

  1. jsp 模板引擎。无需 tomcat,只需一个 jar 包直接根据 jsp 源文件渲染得到 html 页面

    jsp 模板引擎.无需 tomcat,只需一个 jar 包直接根据 jsp 源文件渲染得到 html 页面. 背景 说到模板引擎,大家能想到的一般都是 freemarker.thymeleaf 之类的 ...

  2. java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)

    JPA 开发所需的Jar包 (基于Hibernate) (一)下载Sun 的JPA规范(即:Jar包)登陆JavaEE 的 Technologies 页面: http://java.sun.com/j ...

  3. 在改版的Spring官网下载所需的jar包

    1.第一步:打开官网:http://www.springsource.org/download/community 2.第二步:点击"SPRING FRAMEWORK"图片 3.第 ...

  4. 使用 zabbix 监控 tomcat(包含jvm监控)

    点击上方"民工哥技术之路"选择"星标" 每天10点为你分享不一样的干货  读者福利!多达 2048G 各种资源免费赠送 1.前言: 我们的监控系统是zabbix ...

  5. gradle 项目打包成多个jar包_永不失优雅——高效管理Springboot项目

    猿灯塔 全文略长 希望能帮到各位 另外!文末有你们想要的白嫖惊喜哦! 本文主要讲述一下如何优雅地管理SpringBoot项目. 第一种方式:使用SHELL脚本 As we known 作为一个后端程序 ...

  6. 记一次帮同学搭建项目Tomcat启动失败,至少有一个JAR被扫描用于TLD但尚未包含TLD。

    文章目录 1.Tomcat报的错误 2.我是直接换个Tomcat就成功了,建议大家以后不要只安装一个Tomcat,有的问题是版本问题(本问题应该不是版本问题),比较复杂,如果以后遇到其他问题搞了半天是 ...

  7. sql server jar包_老王,怎么完整SQL的显示日志,而不是???...

    点击蓝色"Java面试那些事儿"关注我哟 加个"星标",优质文章,第一时间送达 来源:http://1t.click/ag6q在常规项目的开发中可能最容易出问题 ...

  8. 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 ...

  9. idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?

    来源:https://mp.weixin.qq.com/s/Rzrssod0ngoQiEsxvRzTQg 作者:java面试那些事儿 来源:微信公众号 声明:本文为二次转载,侵删 IDEA有两大版本, ...

最新文章

  1. Beautiful Subarrays (01字典树 瞎搞)
  2. mysql简单索引_mysql简单索引
  3. 遍历查询ldap服务器用户
  4. android多屏幕适配资源生成,android – 多屏幕适配相关
  5. javascript高级程序设计 学习笔记 第五章 上
  6. Opencv和C++实现canny边缘检测
  7. linux修改容器内的mysql端口_Linux系统下修改phpstudy集成环境中的MySQL端口号的步骤...
  8. 小程序中 swiper设置圆角在真机上不显示问题
  9. 超越 PyTorch,他立志做全球最有影响力的深度学习框架!
  10. 标贝科技推出情感合成 TTS,让语音交互更有温度!
  11. LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS...
  12. Cloudflare的介绍可以防DDOS 能防多少G呢?
  13. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(三)——抵抗侧信道攻击设计方案
  14. win10计算机不显示usb,win10系统U盘不识别怎么办 没有显示U盘的解决方法
  15. ACM大学生程序设计竞赛在线题库最新精选题解(赵端阳)解析
  16. php spider视频教程,phpspider的简单使用
  17. vue 填空题组件封装
  18. Uml 类图 stereotype的值含义,该怎么解决
  19. 独木舟上的旅行-OJ
  20. cad调了比例因子没反应_CAD入门学习之如何修改比例因子

热门文章

  1. 七月文章导读【TCP/IP相关】:解密 TCP/IP;什么是公网ip?什么是内网ip?为什么ip地址通常以192.168开头?
  2. ANSI C typedef
  3. vscode remote 第三方库_还能这么玩?用VsCode画类图、流程图、时序图、...不要太爽
  4. mybatis基于XML(二)
  5. 单体内置对象_单体内置对象
  6. spring 处理带有特殊字符的请求_程序员笔记|常见的Spring异常分析及处理
  7. java 拆箱 类型不对,Java基本类型于对象类型的拆箱和装箱
  8. dev控件调用html页面,Chrome开发工具 扩展 DevTools
  9. OpenShift 4 Tekton - 用Webhook实现CI/CD
  10. .net core精彩实例分享 -- 序列化