八、Zabbix监控实战-Tomcat监控

1、方法一:开发java监控页面

[root@qfedu.com tomcat8_1]# cat /application/tomcat/webapps/memtest/meminfo.jsp
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory:"+tm+"MB"+"<br>");
out.println("Free memory:"+fm+"MB"+"<br>");
out.println("Available memory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>

2、方法二:使用jps命令进行监控

[root@qfedu.com ~]# jps -lvm31906 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/application/tomcat8_1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat8_1/endorsed -Dcatalina.base=/application/tomcat8_1 -Dcatalina.home=/application/tomcat8_1 -Djava.io.tmpdir=/application/tomcat8_1/temp31812 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat/endorsed -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp31932 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/application/tomcat8_2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat8_2/endorsed -Dcatalina.base=/application/tomcat8_2 -Dcatalina.home=/application/tomcat8_2 -Djava.io.tmpdir=/application/tomcat8_2/temp32079 sun.tools.jps.Jps -lvm -Denv.class.path=.:/application/jdk/lib:/application/jdk/jre/lib:/application/jdk/lib/tools.jar -Dapplication.home=/application/jdk1.8.0_60 -Xms8m

3、Tomcat 远程监控功能

1、修改配置文件,开启远程监控

[root@qfedu.com ~]# vim /application/tomcat8_1/bin/catalina.sh +97
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.0.0.17"

2、重启服务,检查12345端口是否开启

[root@qfedu.com ~]# /application/tomcat8_1/bin/shutdown.sh
[root@qfedu.com ~]# /application/tomcat8_1/bin/startup.sh
[root@qfedu.com ~]# netstat -tunlp|grep 12345

3、 检查端口

[root@qfedu.com ~]# netstat -tunlp|grep 12345
tcp6       0      0 :::12345           :::*          LISTEN      33158/java

4、在windows上监控tomcat

注意:windwos需要安装jdk环境!

查考:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1、软件路径
C:\Program Files\Java\jdk1.8.0_31\bin
jconsole.exe   jvisualvm.exe

2、jconsole.exe 使用说明

连接成功即可进行监控,连接的时候注意端口信息。

3、jvisualvm.exe 使用说明


输入ip地址

主机添加完成,添加JMX监控


注意添加的时候输入端口信息

​ 添加完成后就能够多tomcat程序进行监控。

4、zabbix 监控 tomcat 程序

1、zabbix 服务端安装配置 java监控服务
[root@qfedu.com ~]# yum install zabbix-java-gateway -y
2、查看配置文件
配置文件路径:/etc/zabbix/zabbix_java_gateway.conf
[root@qfedu.com ~]# sed -i -e '220a JavaGateway=127.0.0.1' -e '236a StartJavaPollers=5'  /etc/zabbix/zabbix_server.conf
3、启动zabbix-java-gateway服务,与zabbix服务
[root@qfedu.com ~]# systemctl start zabbix-java-gateway.service
[root@qfedu.com ~]# systemctl restart zabbix-server.service
4、检查java端口是否开启
[root@qfedu.com ~]# netstat -lntup |grep java
tcp6       0      0 :::10052   :::*    LISTEN      72971/java
5、检查java进程是否存在
[root@qfedu.com ~]# ps -ef |grep [j]ava
zabbix    72971      1  0 11:29 ?        00:00:00 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-3.0.13.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.timeout=3 -Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
zabbix    73255  73226  0 11:35 ?        00:00:00 /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    73256  73226  0 11:35 ?        00:00:00 /usr/sbin/zabbix_server: java poller #2 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    73257  73226  0 11:35 ?        00:00:00 /usr/sbin/zabbix_server: java poller #3 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    73258  73226  0 11:35 ?        00:00:00 /usr/sbin/zabbix_server: java poller #4 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    73259  73226  0 11:35 ?        00:00:00 /usr/sbin/zabbix_server: java poller #5 [got 0 values in 0.000004 sec, idle 5 sec]
6、web界面添加
1、添加主机


2、主机管理模板,注意是JMX模板


3、监控完成

5、排除 tomcat 故障步骤

1、查看 catalina.out
2、使用 sh show-busy-java-threads.sh 脚本进行检测
#!/bin/bash
# @Function
# Find out the highest cpu consumed threads of java, and print the stack of these threads.
#
# @Usage
#   $ ./show-busy-java-threads.sh
#
# @author Jerry Leereadonly PROG=`basename $0`
readonly -a COMMAND_LINE=("$0" "$@")usage() {cat <<EOF
Usage: ${PROG} [OPTION]...
Find out the highest cpu consumed threads of java, and print the stack of these threads.
Example: ${PROG} -c 10Options:-p, --pid       find out the highest cpu consumed threads from the specifed java process,default from all java process.-c, --count     set the thread count to show, default is 5-h, --help      display this help and exit
EOFexit $1
}readonly ARGS=`getopt -n "$PROG" -a -o c:p:h -l count:,pid:,help -- "$@"`
[ $? -ne 0 ] && usage 1
eval set -- "${ARGS}"while true; docase "$1" in-c|--count)count="$2"shift 2;;-p|--pid)pid="$2"shift 2;;-h|--help)usage;;--)shiftbreak;;esac
done
count=${count:-5}redEcho() {[ -c /dev/stdout ] && {# if stdout is console, turn on color output.echo -ne "\033[1;31m"echo -n "$@"echo -e "\033[0m"} || echo "$@"
}yellowEcho() {[ -c /dev/stdout ] && {# if stdout is console, turn on color output.echo -ne "\033[1;33m"echo -n "$@"echo -e "\033[0m"} || echo "$@"
}blueEcho() {[ -c /dev/stdout ] && {# if stdout is console, turn on color output.echo -ne "\033[1;36m"echo -n "$@"echo -e "\033[0m"} || echo "$@"
}# Check the existence of jstack command!
if ! which jstack &> /dev/null; then[ -z "$JAVA_HOME" ] && {redEcho "Error: jstack not found on PATH!"exit 1}! [ -f "$JAVA_HOME/bin/jstack" ] && {redEcho "Error: jstack not found on PATH and $JAVA_HOME/bin/jstack file does NOT exists!"exit 1}! [ -x "$JAVA_HOME/bin/jstack" ] && {redEcho "Error: jstack not found on PATH and $JAVA_HOME/bin/jstack is NOT executalbe!"exit 1}export PATH="$JAVA_HOME/bin:$PATH"
fireadonly uuid=`date +%s`_${RANDOM}_$$cleanupWhenExit() {rm /tmp/${uuid}_* &> /dev/null
}
trap "cleanupWhenExit" EXITprintStackOfThread() {local linelocal count=1while IFS=" " read -a line ; dolocal pid=${line[0]}local threadId=${line[1]}local threadId0x=`printf %x ${threadId}`local user=${line[2]}local pcpu=${line[4]}local jstackFile=/tmp/${uuid}_${pid}[ ! -f "${jstackFile}" ] && {{if [ "${user}" == "${USER}" ]; thenjstack ${pid} > ${jstackFile}elseif [ $UID == 0 ]; thensudo -u ${user} jstack ${pid} > ${jstackFile}elseredEcho "[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}/0x${threadId0x}) stack of java process(${pid}) under user(${user})."redEcho "User of java process($user) is not current user($USER), need sudo to run again:"yellowEcho "    sudo ${COMMAND_LINE[@]}"echocontinuefifi} || {redEcho "[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}/0x${threadId0x}) stack of java process(${pid}) under user(${user})."echorm ${jstackFile}continue}}blueEcho "[$((count++))] Busy(${pcpu}%) thread(${threadId}/0x${threadId0x}) stack of java process(${pid}) under user(${user}):"sed "/nid=0x${threadId0x} /,/^$/p" -n ${jstackFile}done
}ps -Leo pid,lwp,user,comm,pcpu --no-headers | {[ -z "${pid}" ] &&awk '$4=="java"{print $0}' ||awk -v "pid=${pid}" '$1==pid,$4=="java"{print $0}'
} | sort -k5 -r -n | head --lines "${count}" | printStackOfThread

Zabbix监控实战-Tomcat监控相关推荐

  1. Zabbix JMX之tomcat监控

    工作原理: 1.JAVA-GATEWAY  Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...

  2. zabbix之通过jmx监控tomcat

    zabbix监控tomcat 1.编译zabbix的时候需要添加参数--enable-java 关于如何安装zabbix,可以参考上一篇文章http://blog.unix178.com/ 备份zab ...

  3. zabbix模板_基于zabbix网页配置自定义tomcat监控模板--监控项、触发器

    概述 zabbix监控tomcat只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达.Zabbix-J ...

  4. Zabbix分布式监控实战(2)—— Zabbix的API接口的使用方法

    本实验是在<Zabbix分布式监控实战(1)--Zabbix简介及Zabbix监控平台的搭建>实验基础上进行的,已经配置好了zabbix-server和zabbix-agent主机,并在z ...

  5. 视频教程-Zabbix分布式企业级监控实战视频课程(完整版)-Linux

    Zabbix分布式企业级监控实战视频课程(完整版) 京东商城运维架构师,京峰Linux云计算教学总监,担任国内多家知名社区运维专家网站Linux版主,专注Linux自动化运维,熟练LVS.Nginx, ...

  6. net start zabbix agent 服务没有相应控制功能_zabbix-基础系列(十七)--实战之监控 php-fpm...

    zabbix 监控 php-fpm zabbix监控php-fpm主要是通过nginx配置php-fpm的状态输出页面,在正则取值.要nginx能输出php-fpm的状态首先要先修改php-fpm的配 ...

  7. Zabbix分布式监控实战(一)——Zabbix 5.0监控平台搭建与被监控端的添加

    一.Zabbix概述 1.Zabbix简介  zabbix是一个基于WEB界面的提供 分布式系统监控以及网络监控功能 的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营: ...

  8. zabbix监控系统进阶专题篇(企业微信报警,邮箱报警,电话报警,监控数据库,监控磁盘性能)

    一:zabbix配置文件详解 1. zabbix-server配置文件 Zabbix 日志 默认用文件记录,也可以发送给我们的 rsyslog 日志记录系统,如果我们 选择默认,则日志存放在LogFi ...

  9. mysql查询前五行_性能监控实战

    用户响应时间=服务器响应时间+网络时间 系统性能分析思路 (1)整体系统CPU利用率 (2)内存利用率 (3)磁盘I/O的利用率和延迟 (4)网络利用率 cpu CPU:top.vmstat.upti ...

最新文章

  1. 手把手教你简单接入微信SDK
  2. Tomcat中配置多个端口
  3. BIOS系统服务 —— 直接磁盘服务(int 0x13)
  4. java第三方接口对接_调用多个第三方接口哪一种方案更好?
  5. reactjs ref属性:字符串类型的ref和createRef
  6. DOM树-Render树-RenderLayer树 对应关系
  7. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
  8. c++ 静态变量赋值_Python变量及常量解释说明
  9. 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
  10. LeetCode 321. 拼接最大数(单调栈)*
  11. MATLAB安装“geoidegm2008grid.mat”数据(EGM2008模型计算大地水准面和高程异常)
  12. vm14 Ubuntu16不能复制粘贴
  13. 新华象形大字典隐私用户数据声明
  14. NGUI的长按事件以及检测按钮点击事件的常用方法
  15. 实验室计算机远程访问设置(Teamviewer+Frp)
  16. LeetCode 24.两两交换链表中的节点 C语言
  17. 神秘AI变脸软件风靡全球,让你秒变身迪士尼在逃主角
  18. 小说作者推荐:漫漫何其多合集
  19. C#中操作Word(8)—— 向Word中插入图表的三种方法(一)
  20. oracle dbms是什么意思,什么是Oracle特殊包和DBMS?

热门文章

  1. 先睹为快:基于OPC协议的远程IO模块
  2. VMware15.5虚拟机安装教程+配置详解(附上每一步操作流程截图及说明)【一看就懂】
  3. 使用Django开发一个简易的留言板
  4. 一步步学习微软InfoPath2010和SP2010--第十一章节--创建批准流程(7)--approval节
  5. 一个简易的OJ导航界面
  6. post office 问题
  7. c语言 人工智能程序入门,C语言程序设计——快速入门与提高
  8. 中国旅游与民宿发展协会正式发布《2021年H1国内民宿行业发展研究报告》
  9. 祈福、赏花、戏冰雪:春节北京公园将开展46项游园活动
  10. Android货币单位获取方法