使用Nagios Core和jmx4perl监视Tomcat
时间:2020-03-21 11:47:35 来源:igfitidea点击:
本文用作Nagios插件check_jmx4perl的参考,并不旨在提供任何安装或者配置说明。
Nagios环境
我们的环境:
- CentOS7
- Nagios核心4.3.4
- jmx4perl 1.12
JMX(Java管理扩展)是Java世界中的标准管理解决方案。
- jmx4perl是用于收集JMX信息的CLI工具,
- check_jmx4perl是一个Nagios插件,用于远程访问JMX数据。
以下是我们的应用程序服务器以及代理可访问的URL的摘要。
# jmx4perl http://example.com/j4psecured Name: Apache Tomcat Vendor: Apache Version: 8.0.35
以下内容可用于列出所有JMX MBean及其属性和操作:
# jmx4perl http://example.com/j4psecured list
插件版本:
# /usr/local/nagios/libexec/check_jmx4perl -V check_jmx4perl 1.12 [http://www.jmx4perl.org]
使用jmx4perl监视Tomcat
别名是某些MBean属性和操作的快捷方式。
如何获取可用别名列表(输出被截断):
# perl -MJMX::Jmx4Perl::Alias -e 'JMX::Jmx4Perl::Alias::help' CL_LOADED attr Number of currently loaded classes CL_TOTAL attr Number of classes loaded in total ... MEMORY_HEAP_MAX attr Maximum available heap memory MEMORY_HEAP_USED attr Used heap memory ... MEMORY_NONHEAP_MAX attr Maximum available non-heap memory MEMORY_NONHEAP_USED attr Used non-heap memory (like a 'method area') ... THREAD_COUNT attr Active threads in the system THREAD_COUNT_PEAK attr Peak thread count THREAD_COUNT_STARTED attr Count of threads started since system start ...
如何检查可用的堆内存:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias MEMORY_HEAP_MAX
如何检查已使用的堆内存:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias MEMORY_HEAP_USED
如果愿意,我们可以使用MBean属性实现相同的目的:
# ./check_jmx4perl --url http://example.com/j4psecured \ --mbean "java.lang:type=Memory" \ --attribute HeapMemoryUsage \ --path max
# ./check_jmx4perl --url http://example.com/j4psecured \ --mbean "java.lang:type=Memory" \ --attribute HeapMemoryUsage \ --path used
现在,虽然收集实际值对于图形和表示目的是有用的,但是使它们的相对值在0 ...范围内是更好的。
我们可以配置Nagios在值达到90%时发送电子邮件。
如何检查已使用的堆内存是否少于可用内存的90%:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias MEMORY_HEAP_USED \ --base MEMORY_HEAP_MAX \ --critical 90
与上面相同的结果,但是使用了MBean属性:
# ./check_jmx4perl --url http://example.com/j4psecured \ --value "java.lang:type=Memory/HeapMemoryUsage/used" \ --base "java.lang:type=Memory/HeapMemoryUsage/max" \ --critical 90
如何检查垃圾收集时间:
# ./check_jmx4perl --url http://example.com/j4psecured \ --mbean "java.lang:type=GarbageCollector,name=PS MarkSweep" \ --attribute CollectionTime \ --name GC_CollectionTime
如何检查垃圾收集计数:
# ./check_jmx4perl --url http://example.com/j4psecured \ --mbean "java.lang:type=GarbageCollector,name=PS MarkSweep" \ --attribute CollectionTime \ --name GC_CollectionCount
如何检查在一小时(3600秒)内启动的线程数:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias THREAD_COUNT_STARTED \ --delta 3600 \ --critical 200
与系统启动以来启动的线程数相比,如何检查活动线程:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias THREAD_COUNT \ --base THREAD_COUNT_STARTED
如何检查元空间使用情况:
# ./check_jmx4perl --url http://example.com/j4psecured \ --value "java.lang:type=MemoryPool,name=Metaspace/Usage/used" \ --base "java.lang:type=MemoryPool,name=Metaspace/Usage/max" \ --critical 90
如何检查代码缓存的使用情况:
# ./check_jmx4perl --url http://example.com/j4psecured \ --value "java.lang:type=MemoryPool,name=Code Cache/Usage/used" \ --base "java.lang:type=MemoryPool,name=Code Cache/Usage/max" \ --critical 95
如何检查已加载的类用法:
# ./check_jmx4perl --url http://example.com/j4psecured \ --alias CL_LOADED \ --base CL_TOTAL \ --critical 95