Tomcat 监控方法

方法1:.使用tomcat自带的status页

具体方法:

步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限。在<tomcat-users>中增加部分内容。具体如下:

<role rolename="manager-gui"/>

<user username=“manager" password=“1234" roles="manager-gui"/>

注:用户名:manager,密码:1234

步骤2:完成后,启动tomcat,输入:http://localhost:8080  --(IP,端口号,可远程访问)
点击status,输入账号,密码(manager,1234),进入status,时时刷新页面,查看当前tomcat状态。 或者直接访问:http://localhost:8080/manager/status页面。

备注1:若希望整个服务器的性能数据以一个单行的xml文件形式表示,则进入如下界面:http://localhost:8080/manager/status?XML=true

备注2:若服务器中存在几个项目,单独对某个项目进行监控,则需要另行增加代码。

步骤3:上面得到的只是当前情况下的性能数据,要获得一个阶段的性能数据,必须设定采样频率,定时读取,将数据汇总并分析。

步骤4:对得到的数据得出图表。参考以下示例:

通过Linux自带的Bash来实现,绘制图表采用的是Gnuplot。下列代码生成html的报表只是监控整个服务器的,并未实现对每个测试建立单独目录的功能。

#!/bin/bash

#
========================Default Settings===============================

# address of status page

STATUS_ADDR="http://localhost:8080/manager/status?XML=true"

USER="manager"

PASS="1234"

# sample rate, default: 5seconds

SAMPLE_RATE=5

# if press "Ctrl+c",
stop monitor

EXIT_SIGNAL=2

# connector to monitor

CONNECTOR="http-8080"

# result directory to store data

RESULT_DIR="/tmp"

# perf data file

PERF_DATA="perf_data"

# jvm data file

JVM_DATA="jvm_data"

# connector data file

CONNECTOR_DATA="connector_data"

# thread data file

THREAD_DATA="thread_data"

# request data file

REQUEST_DATA="request_data"

#
===========================Output Error Message========================

# Show Error Message and exit,
get one parameter

errorMsg()

{

if [[ $# -eq 1 ]]; then

echo "Runtime Error:
$1"

exit 1

else

echo "Function Error:
errorMsg"

exit 127

fi

}

# =========================Get
Data Function=============================

# Get performance data, no
parameter wanted

getPerfData()

{

cd $RESULT_DIR

wget --http-user="$USER"
--http-password="$PASS" "$STATUS_ADDR" -O
"$PERF_DATA" || errorMsg "Failed to get data, please check the
connection"

# JVM data

sed 's/.*<jvm>//g;s/<\/jvm>.*//g'
$PERF_DATA | awk -F \' '{ print $2, $4, $6 }' >> $JVM_DATA

# 'Connector data

sed
's/.*'$CONNECTOR'.>//g;s/<\/connector>.*//g' $PERF_DATA >>
$CONNECTOR_DATA

# Thread data

sed 's/.*<threadInfo//g;s/\/>.*//g'
$CONNECTOR_DATA | awk -F \" '{ print $2, $4, $6 }' >> $THREAD_DATA

# " Request data

sed
's/.*<requestInfo//g;s/\/>.*//g' $CONNECTOR_DATA | awk -F \" '{
print $2, $4, $6, $8, $10, $12 }' >> $REQUEST_DATA

}

# ========================Build
Chart Function==========================

# "according the data,
build the chart (use gnuplot)

buildChart()

{

TITLE=""

OUTPUT=""

PLOT=""

YRANGE="[0:]"

case "$1" in

"jvm" )

TITLE="JVM"

OUTPUT="jvm_graph.png"

PLOT="plot 'jvm_data'
using 1 title 'free' w linespoints, \

'jvm_data' using 2 title
'total' w linespoints,\

'jvm_data' using 3 title 'max'
w linespoints"

;;

"thread" )

TITLE="Thread"

OUTPUT="thread_graph.png"

PLOT="plot 'thread_data'
using 1 title 'max threads' w linespoints,\

'thread_data' using 2 title
'current thread count' w linespoints,\

'thread_data' using 3 title
'current thread busy' w linespoints"

;;

"request" )

TITLE="Request"

YRANGE="[-1:]"

OUTPUT="request_graph.png"

PLOT="plot 'request_data'
using 1 title 'max time' w linespoints,\

'request_data' using 2 title
'processing time' w linespoints,\

'request_data' using 3 title
'request count' w linespoints,\

'request_data' using 4 title
'error count' w linespoints,\

'request_data' using 5 title
'bytes received' w linespoints,\

'request_data' using 6 title 'bytes
sent' w linespoints"

;;

esac

# build graph

gnuplot <<EOF

set terminal png small size 480,360

set title "$TITLE"

set yrange $YRANGE

set grid

set xlabel "timeline (s)"

set output "$OUTPUT"

$PLOT

EOF

}

# ========================Build
Report Function=========================

# include data and chart, give a
readable html report

buildReport()

{

# build graph jvm, request,thread

buildChart "jvm" || errorMsg
"Function Error: build jvm graph"

buildChart "thread" ||
errorMsg "Function Error: build thread graph"

buildChart "request" ||
errorMsg "Function Error: build request graph"

# build html report

}

# ========================Stop
Monitor Function

# call buildReport function

stopMonitor()

{

echo "Monitor stopped, and we are
building the report ..."

buildReport || errorMsg "Function
Error: buildReport"

exit

}

#
=============================Main Function=============================

trap "stopMonitor"
$EXIT_SIGNAL

while :

do

getPerfData || errorMsg "Failed to
get performance data"

sleep $SAMPLE_RATE

done

方法2:使用JDK自带工具,Jconsole
具体方法:

步骤1:.编辑%tomcat安装路径%\bin\catalina.bat文件。添加下列内容:
  set
JAVA_OPTS= -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=10004
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

步骤2启动tomcat,进入JDK安装路径\jdk1.5.0_22\bin 下双击打开Jconsole文件,显示Jconsole连接页面。选择进程点击连接即可。

方法3:使用SiteScope(可与lR结合)
 具体方法:

步骤1安装SiteScope,(LR安装文件夹下有安装文件:在Additional Components文件夹内)。安装后需重启,重启后还会有SiteScope后续的安装操作。
步骤2自动打开SiteScope页面,需输入注册码注册:
步骤3修改%tomcat安装路径%\conf \tomcat-users文件 (见方法1)。添加部分代码如下:
  <tomcat-users>
  <user password="1234" roles="manager"
username="admin"/>
  </tomcat-users>
 通过http://localhost:8080/Status可访问。
步骤4编辑%tomcat安装路径%\bin下catalina.bat文件;
    加入:
    set JAVA_OPTS= -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=10004
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
保证进入JDK安装路径\jdk1.5.0_22\bin 下双击打开Jconsole文件,显示Jconsole连接页面。显示可连接的进程。
步骤5tomcat配置完成后,重启。
步骤6输入SiteScope地址,显示SiteScope配置页面:
    http://IP:端口号/SiteScope
     Add Group--Add Montior--选择JMX
     需注意:JMX URL 为 :service:jmx:rmi:///jndi/rmi://10.110.100.128:10004/jmxrmi
username 和password与tomcat-users文件中设置一致,此处分别为:manager,1234
点击Get Counters添加计数器。此时会显示tomcat可监控的计数器。
例如:
  java.lang/Memory/HeapMemoryUsage/used

  java.lang/Memory/HeapMemoryUsage/max

  Catalina/ThreadPool/jk-8010/currentThreadCount

  Catalina/ThreadPool/jk-8010/maxSpareThreads

  Catalina/ThreadPool/jk-8010/minSpareThreads

其它项根据自己情况自己填写即可。完成后点击OK。

步骤8进入LR Controller中,选择:Available Graphs\System Resouce Graphs 中的SiteScope,添加计数器即可。

步骤9修改LR脚本:

在录制好的LR脚本中添加如下代码:
double
atof(const char *string);

float FreeMemory,TotalMemory,MaxMemory;

//定义tomcat内存使用情况的监视器事务;

lr_start_transaction("monitor tomcat");

//保存3个参数;

web_reg_save_param("JVMFreeMemory",

"LB=Free memory: ",

"RB= MB",

"Ord=1",

LAST);

web_reg_save_param("JVMTotalMemory",

"LB=Total memory: ",

"RB= MB",

"Ord=1",

LAST);

web_reg_save_param("JVMMaxMemory",

"LB=Max memory: ",

"RB= MB",

"Ord=1",

LAST);

//通过LR去访问tomcat监控页

web_set_user("admin","1234","localhost:8080");

web_url("status",

"URL=http://localhost:8080/manager/status",

"Resource=0",

"RecContentType=text/html",

"Referer=",

"Snapshot=t1.inf",

"Mode=HTTP",

LAST);

FreeMemory=atof(lr_eval_string("{JVMFreeMemory}"));
 TotalMemory=atof(lr_eval_string("{JVMTotalMemory}"));
 MaxMemory=atof(lr_eval_string("{JVMMaxMemory}"));
 lr_output_message("%.2f %.2f
%.2f",FreeMemory,TotalMemory,MaxMemory);

// Tomcat JVM metrics  使用lr_user_data_point()添加数据到图表中去
    lr_user_data_point("Tomcat JVM Free memory",
FreeMemory);
    lr_user_data_point("Tomcat JVM Total memory",
TotalMemory);
    lr_user_data_point("Tomcat JVM Max memory",
MaxMemory);
 lr_end_transaction("monitor tomcat", LR_AUTO);
return 0;

在设置过程中可能会存在问题:

  1. 每次启动tomcat后,SiteScope都不能访问;

怀疑端口冲突:将tomcat为默认的设置:8005 8080 8009

查看SiteScope的配置如下:SiteScope安装路径\Tomcat\conf下server文件:

8005 58999 8009 后更改SiteScope中的8005 8009端口,重启后问题解决。

tomcat与SiteScope可同时启动。

    1. SiteScope中添加计数器时,username与password要和tomcat中的tomcat-users中配置一致。
    2. SiteScope中添加计数器时,JMX URL 中的端口要与tomcat中catalina.bat文件jmxremote.port 端口一致。
    3. SiteScope中不能得到计数器时,查看各项配置是否有误,http://localhost:8080/Status能否访问与Jconsole中有无进程可连接。保证配置无误。
    4. SiteScope重启服务可以在我的电脑--右击--管理--服务中去找。
    5. SiteScope安装在被监测的应用服务器或数据库服务器上。(自已没试远程。)
    6. 通过修改LR脚本监控tomcat时,如果使用atof函数,需先声明。否则会影响输出结果。

Tomcat 监控方法的更多相关文章

  1. Tomcat 监控的几种方法

    Tomcat 监控方法 方法1:.使用tomcat自带的status页 具体方法: 步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限.在<t ...

  2. Tomcat(JVM)性能监控方法

    Tomcat(JVM)监控方法 1.Tomcat自带的监控页面 配置详见Tomcat安装配置监控一文,如图所示为监控页面: 2.LoadRunner编写脚本实现Tomcat监控 采用编写VuGen脚本 ...

  3. tomcat监控(二)

    标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 这里介绍二种监控Tomcat的方法 使用windows版本的jdk监控 使用zabbix监控 ...

  4. 在windows 上自动重启 tomcat 的方法

    在windows 上自动重启 tomcat 的方法 实现思路: Windows 上监控tomcat 进程并且自动重启的脚本 一类是 定时重启 tomcat 一类是 监控并重启 写一个守护tomcat进 ...

  5. zabbix 基于JMX的Tomcat监控

    zabbix 基于JMX的Tomcat监控 一.环境 ubuntu14.04 LTS Java 1.7.0 zabbix 2.4.5 二.安装配置 1.安装JavaGateway 在ubuntu14. ...

  6. 最简单的 RabbitMQ 监控方法 - 每天5分钟玩转 OpenStack(158)

    这是 OpenStack 实施经验分享系列的第 8 篇. 先来看张图:这是 Nova 的架构图,我们可以看到有两个组件处于架构的中心位置:数据库和Queue.数据库保存状态信息,而几乎所有的 nova ...

  7. Tomcat更新方法

    tomcat更新方法最简单的就是上官网下载最新版的压缩包,然后用新版本的 lib 文件替换掉旧版本的 lib 文件 具体方法(偷懒做个搬运工):https://jingyan.baidu.com/ar ...

  8. tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)

    服务器环境:centos7.2 64位 tomcat8.5.6 tomcat 监控功能共需要两个脚本,如下: initMonitor.sh #!/bin/sh #初始化监控脚本相关变量 export ...

  9. 首发:极简的Centos主机监控方法,分分钟即可使用【转】

    需求天天有,今年事更多.硬盘测试刚刚完成,就又来了性能监控的需求.一般我们生产就用zabbix了,用起来还行,就是蛮多脚本要写.开发和测试都是分散的,经常还要重装系统,用zabbix就算了,开发和测试 ...

随机推荐

  1. codeforces 444 C. DZY Loves Colors(线段树)

    题目大意: 1 l r x操作 讲 [l,r]上的节点涂成x颜色,而且每一个节点的值都加上 |y-x| y为涂之前的颜色 2 l r  操作,求出[l,r]上的和. 思路分析: 假设一个区间为同样的颜 ...

  2. Vim global命令和重复操作

    Vim global命令和重复操作 Vim global命令允许我们在某个指定模式的所有匹配行上运行可执行的 Ex 命令,缩写形式为 :g,其处理重复工作的效率极高. 一.Vim global命令介绍 ...

  3. 【BZOJ】【3771】Triple

    生成函数+FFT Orz PoPoQQQ 这个题要算组合的方案,而且范围特别大……所以我们可以利用生成函数来算 生成函数是一个形式幂级数,普通生成函数可以拿来算多重集组合……好吧我承认以上是在瞎扯→_ ...

  4. Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存

    默认情况下,在为高速缓存配置查找转换时,PowerCenter 将创建静态查找高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.P ...

  5. go语言基础之append函数的使用

    1.append函数的使用 作用:在原切片的末尾添加元素 示例: package main //必须有个main包 import "fmt" func main() { s1 := ...

  6. iphone手机微信端html5 Geolocation定位失效的问题

    使用Geolocation方法存在错误信息error.POSITION_UNAVAILABLE 其实问题不局限于微信端而是iphone升级到ios10后,对获取地理位置信息作出了限制,只有https的 ...

  7. spring boot常用注解使用小结

    1.@RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解. 4.0之前的版本,Sprin ...

  8. Splunk的安装与使用

    一.简单介绍         Splunk 是机器数据的引擎.使用 Splunk 可收集.索引和利用全部应用程序.server和设备(物理.虚拟和云中)生成的高速移动型计算机数据 .从一个位置搜索并分 ...

  9. 2.Dynamic Programming on Stolen Values【dp】

    Problem: There are  n houses built in a line, each of which contains some value in it. A thief is go ...

  10. Linux kernel模块管理相关详解

    Linux内核模块化设计 1. Linux内核设计:单内核.模块化(动态装载和卸载) (1) Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制:(2) 内核的组成部分 ...