Zabbix监控实战-Tomcat监控
八、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监控相关推荐
- Zabbix JMX之tomcat监控
工作原理: 1.JAVA-GATEWAY Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...
- zabbix之通过jmx监控tomcat
zabbix监控tomcat 1.编译zabbix的时候需要添加参数--enable-java 关于如何安装zabbix,可以参考上一篇文章http://blog.unix178.com/ 备份zab ...
- zabbix模板_基于zabbix网页配置自定义tomcat监控模板--监控项、触发器
概述 zabbix监控tomcat只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达.Zabbix-J ...
- Zabbix分布式监控实战(2)—— Zabbix的API接口的使用方法
本实验是在<Zabbix分布式监控实战(1)--Zabbix简介及Zabbix监控平台的搭建>实验基础上进行的,已经配置好了zabbix-server和zabbix-agent主机,并在z ...
- 视频教程-Zabbix分布式企业级监控实战视频课程(完整版)-Linux
Zabbix分布式企业级监控实战视频课程(完整版) 京东商城运维架构师,京峰Linux云计算教学总监,担任国内多家知名社区运维专家网站Linux版主,专注Linux自动化运维,熟练LVS.Nginx, ...
- net start zabbix agent 服务没有相应控制功能_zabbix-基础系列(十七)--实战之监控 php-fpm...
zabbix 监控 php-fpm zabbix监控php-fpm主要是通过nginx配置php-fpm的状态输出页面,在正则取值.要nginx能输出php-fpm的状态首先要先修改php-fpm的配 ...
- Zabbix分布式监控实战(一)——Zabbix 5.0监控平台搭建与被监控端的添加
一.Zabbix概述 1.Zabbix简介 zabbix是一个基于WEB界面的提供 分布式系统监控以及网络监控功能 的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营: ...
- zabbix监控系统进阶专题篇(企业微信报警,邮箱报警,电话报警,监控数据库,监控磁盘性能)
一:zabbix配置文件详解 1. zabbix-server配置文件 Zabbix 日志 默认用文件记录,也可以发送给我们的 rsyslog 日志记录系统,如果我们 选择默认,则日志存放在LogFi ...
- mysql查询前五行_性能监控实战
用户响应时间=服务器响应时间+网络时间 系统性能分析思路 (1)整体系统CPU利用率 (2)内存利用率 (3)磁盘I/O的利用率和延迟 (4)网络利用率 cpu CPU:top.vmstat.upti ...
最新文章
- 手把手教你简单接入微信SDK
- Tomcat中配置多个端口
- BIOS系统服务 —— 直接磁盘服务(int 0x13)
- java第三方接口对接_调用多个第三方接口哪一种方案更好?
- reactjs ref属性:字符串类型的ref和createRef
- DOM树-Render树-RenderLayer树 对应关系
- 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
- c++ 静态变量赋值_Python变量及常量解释说明
- 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
- LeetCode 321. 拼接最大数(单调栈)*
- MATLAB安装“geoidegm2008grid.mat”数据(EGM2008模型计算大地水准面和高程异常)
- vm14 Ubuntu16不能复制粘贴
- 新华象形大字典隐私用户数据声明
- NGUI的长按事件以及检测按钮点击事件的常用方法
- 实验室计算机远程访问设置(Teamviewer+Frp)
- LeetCode 24.两两交换链表中的节点 C语言
- 神秘AI变脸软件风靡全球,让你秒变身迪士尼在逃主角
- 小说作者推荐:漫漫何其多合集
- C#中操作Word(8)—— 向Word中插入图表的三种方法(一)
- oracle dbms是什么意思,什么是Oracle特殊包和DBMS?