!!!Tomcat服务器监控[{$latestVersion}]版 for Win,Linux(原创)

【工具技巧】PyCharm 中 Python 库(Package)的 Latest version 时常看不到,咋个回事 ?| 区块链 面试题:请简述区块链技术中的“硬分叉”和“软分叉”是什么? 在使用Pycharm的下载安装Python库的一个小技巧。 阅读详情
[{TableOfContents title=''}]

!!Tomcat 服务器监控软件 [{$latestVersion}] by beansoft@126.com
帮我自动重启无响应的 Tomcat(实际情况哦, 所有的程序都是有 BUG 的), 定时重启 Tomcat.//
后记: 推荐使用开源的Tomcat监控工具 [LambdaProbe|http://www.lambdaprobe.org/] 来全面了解 Tomcat Server 状况, 再配合本站的自动重启软件, 人工+自动+定时重启, 万无一失! 截屏: [http://www.lambdaprobe.org/d/screenshots.shtml]

!! 系统需求
JDK 1.4 或更高//
Tomcat 4 或更高(BAT方式安装)//
Windows 2K 或更高 或者 Linux (已测试过 RedHat 9 图形模式)

!!下载(含源码):
!最新版[{$latestVersion}]
[TomcatServerMonitor1_3.zip|http://www.blogjava.net/Files/beansoft/TomcatServerMonitor1_3.zip] 1.19 MB

!1.2版
[TomcatServerMonitor1_2.zip|http://www.blogjava.net/Files/beansoft/TomcatServerMonitor1_2.zip] (Windows, Linux RedHat 9)1155KB

!1.1版
[TomcatServerMonitor1_1.zip|http://www.blogjava.net/Files/beansoft/TomcatServerMonitor1_1.zip] (老版本, Windows Only)889KB
!1.2版EXE文件
[tsm_launcher.zip|http://www.blogjava.net/Files/beansoft/tsm_launcher.zip] (Windows EXE 启动文件,可选)10KB

!! 快速开始
假设你要在 Windows 下开始监控, 请按照下列说明进行, 只需要记事本即可.

1. 修改 conf/monitor.properties
[{Code lang=properties

######################################################
# 监控的通用选项配置文件
#Server Monitor Configuration File
######################################################
#
# 报警邮件接收人地址, 多人以分号隔开, 发送邮件的账户请修改 MailSender.ini
AlertEmails=username@test.com
# 需要探测的网页的地址
WebPageUrl=http/://localhost/:8080/
# 网页连接请求超时时间(单位: 毫秒)
DefaultTimeOut=100
# 需要重启服务器的网页连接请求超时时间(单位: 毫秒), 也就是说读取页面超过了这
# 个时间就认为是故障了, 然后就会重启服务器
RestartTimeOut=2000
# 监控探测时间间隔, 单位: 分钟
QueryTimeInternal=1
# 定时重启的第一次执行时间(格式: HH:mm:ss), 如果为0或者空, 则设置为 00:00:00
# 改动这个值需要重启应用才能生效
ScheduledRestartTime=01/:00/:00
# 定时重启时间间隔, 单位:分钟, 如果 <= 0, 则不需要定时重启
# 默认值是1440(60*24)分钟(一天), 改动这个值需要重启应用才能生效
ScheduledRestartPeriod=1440
}]

2. 修改 conf/tomcat_windows.properties 来指定 Tomcat 安装路径等信息
[{Code lang=properties

######################################################
# servermon.launcher.plugin.TomcatWindowsLauncher 类所使用的
# Windows 版本的 Tomcat 配置文件
# Laucher property file for servermon.launcher.plugin.TomcatWindowsLauncher
######################################################
#
# 服务器名称(可以任意取)
AppServerName=Tomcat
#服务器根目录(不含bin等路径)
AppServerHome=E/://_PortableJava//jakarta-tomcat-5.0.30
#服务器启动脚本名称
StartupScript=startup.bat
#服务器关闭脚本名称
StopScript=shutdown.bat
#默认等待关闭时间(秒为单位),即执行StopScript后等待的时间
ShutDownWaitTime=30
}]

3. 修改 conf/MailSender.ini 来启用邮件发送功能, 这一步可选, 不想发邮件忽略即可;

4. 配置好 Tomcat  BAT 方式启动所需的 JAVA_HOME 等变量, 如果已经配置好了, 忽略即可;

5. 运行 AutoMonitorWithGUI.bat 开始工作, 测试第一次监控, 测试成功后可以直接运行 TomcatMonitor.exe 开始自动后头监控;

6. 命令行参数说明://
__-autostart__ 启动后自动开始监控;//
__-nogui__ 不显示托盘图标和主窗体, 以隐藏的方式运行;//
__不带参数__ 启动后等待用户点击开始监控的菜单项后才开始监控.//

7. 可以用 javaw.exe 来避免显示 DOS 窗口.

!! Windows 下监控/重启 Tomcat/Weblogic 服务
2007-02-12//
用 Tomcat 的安装程序(EXE版本)安装后, 记得选中安装服务, 例如 jakarta-tomcat-5.0.30.exe, 安装后再系统控制面板里可以看到服务显示名为 tomcat5. 这时候修改 conf/tomcat_windows.properties 的内容如下所示即可用服务的方式开始,停止 Tomcat 了.

[{Code lang=properties

######################################################
# servermon.launcher.plugin.TomcatWindowsLauncher 类所使用的
# Windows 版本的 Tomcat 配置文件 - 服务模式
# Laucher property file for servermon.launcher.plugin.TomcatWindowsLauncher
######################################################
#
# 服务器名称(可以任意取)
AppServerName=Tomcat 5 Service
#服务器根目录(不含bin等路径)
AppServerHome=D://Program Files//Apache Software Foundation//Tomcat 5.0
#服务器启动脚本名称
StartupScript=net start tomcat5
#服务器关闭脚本名称
StopScript=net stop tomcat5
#默认等待关闭时间(秒为单位),即执行StopScript后等待的时间
ShutDownWaitTime=30
}]

上面的 tomcat5 即为服务的名称.

如果是 Weblogic, 同样的也会有个服务名称, 例如 beawls8, 其实这时候服务已经和 Java 没有关系了. 所要注意的是 AppServerHome 下面必须有个 bin 目录, 否则命令执行会失败, 因为原来实现的时候的起始目录是 $AppServerHome/bin, 也就是说这时候的 AppServerHome 的真实路径不会影响服务的执行, 完全可以设置成 JDK 的目录, 例如 d:/jdk1.5.0 .

原理很简单, 就是 net 命令可以用来开始和停止系统服务.//
开始服务: net start 服务名 //
停止服务: net stop 服务名

!! TODO
进一步分离, 加入事件监听机制?//

!!TomcatServerMonitor 1.3 的 UML 图
在线浏览: [http://beansoft.java-cn.org/ajax/tomcatmonitor/]
下载后离线浏览:

[TomcatServerMonitorUML.7z.zip|http://www.blogjava.net/Files/beansoft/TomcatServerMonitorUML.7z.zip] 126KB

详细请关注 servermon 包的内容. 其它的都是工具类.



注: 需要 JRE (Applet) 和 SVG 查看器(如 Adobe SVG Viewer).

开发工具: Together Community Edition for Eclipse v6.3(免费)

需要 Eclipse 3.0

下载: [ftp://ftpd.borland.com/download/together/tec63/TG_ECLIPSE_6_3_WIN_SETUP.ZIP]

!!更新历史//

!2007.02.10
在主界面里加入了更改配置文件的菜单, 然后启动可视化的属性文件编辑器, 这样所有工作都可以在本软件中完成; 参考[1];//
新增定时重启功能, 可以指定第一次重启的时间以及每次重启的时间间隔.//
当然定时重启可以使用 Windows 的计划任务或者 Linux 下的 [CronTab] 来完成.

!2006.12.17
1. Linux 版本, 测试过的是 RedHat 9 中文版.

要启用 Linux 支持, 首先记得给3个.sh文件执行权限, 自行配置好 Tomcat 的启动时候需要的 CATALINA_HOME 变量. 配置文件请关注:

conf/appserverplugin.properties, 修改文件内容为:

[{Code lang=properties

######################################################
# Tomcat 5, Linux
# 要使用的服务器启动类
AppServerLauncherPlugIn=servermon.launcher.plugin.TomcatLinuxLauncher
# 使用的启动参数文件
AppServerLauncherPlugIn.ConfigFile=tomcat_linux.properties
}]

然后修改 conf/tomcat_linux.properties 中的文件即可, 该文件中的参数说明:

[{Code lang=properties

# 服务器名称(可以任意取)
AppServerName=Tomcat
#服务器根目录(不含bin等路径)
AppServerHome=/opt/tomcat-5.0.30-test
#服务器启动脚本名称
StartupScript=startup.sh
#服务器关闭脚本名称
StopScript=shutdown.sh
#默认等待关闭时间(秒为单位),即执行StopScript后等待的时间
ShutDownWaitTime=30
}]


2. 引入插件机制, 只要您实现 servermon.launcher.IAppServerLauncher, 即可监控各个版本的服务器. 最简单的做法可以参考代码 servermon.launcher.plugin.TomcatWindowsLauncher, 基本上只需要实现

public void startServer();//
public void stopServer();

即可. 目前实现的有 Tomcat 的 Windows, Linux 版本, 以及 Weblogic 9 的 Windows 版本, Weblogic 8 的 Windows 版本支持正在开发中, 初步考虑用直接执行 java 命令的方式来做, 因为 Wls 8 缺省不带 shutdown 的脚本.

3. 纯命令行模式支持, 适用于 Linux 文本方式下, 停止监控请使用 ps 命令然后kill监控进程. 不过目前尚未在 Linux 文本模式下测试过, 请测试过的朋友反馈. 相关文件: AutoMonitorNoGUI.sh, AutoMonitorNoGUI.bat

Linux 图形模式下的截屏:

[{Image src = 'tomcat_monitor_redhat9_gui.png'}]

!2006.12.11
增加了一个 EXE 格式的启动文件, 带源码.//
解压缩, 把 EXE 文件复制到 TomcatServerMonitor 目录下.//
这对不喜欢用BAT格式启动的朋友们是个好消息, 也期待对希望自己做个 EXE 启动文件的兄弟们有所帮助. 解压缩后如果不需要源码只留下 TomcatMonitor.exe 10.0 KB 即可, 它执行了下列命令://
javaw -cp ./jdic/jdic.jar;.;./classes/;lib/activation.jar;lib/commons-dbutils-1.0.jar;lib/jspsmartupload.jar;lib/mail.jar;lib/servlet.jar; servermon.MonitorFrame -autostart//
因此需要事先设置 javaw.exe 在类路径中. 它相当于自动后台运行监控程序.bat 的命令行版本.//
本项目源码修改自 FreeMind [http://freemind.sourceforge.net/|http://freemind.sourceforge.net/] 的 EXE 启动文件源码, 使用 Dev-C++ 5 (一个免费 C++ 开发环境 [http://www.bloodshed.net/devcpp.html|http://www.bloodshed.net/devcpp.html]) 编译, 并用 ASPACK 压缩(这是商业软件...俺只不过想让EXE变的更小一点, 没压缩的时候是 20KB). 安装后打开项目文件编译即可.//
!2006.12.10
更新:

1. 增加托盘图标功能, 最小化主窗口到托盘, 便于监控同一机器上的多个 Server(需要手工复制多份主程序)//
2. 定位监控的 Tomcat 目录, 使用内置 IE 浏览监控页面功能(在托盘菜单中)//
3. 自动监控(用 -autostart 参数即可), 使用启动文件 "自动后台运行监控程序.bat" 可以不带 DOS 窗口启动并自动开始监控//
4. 在托盘气泡中显示报警和出错信息, 便于随时掌握 Server 状态, 并根据监控状态显示不同的状态图标//
4. 小改动://
更改按钮和菜单默认字体大小, 使更容易看清楚;//
发送邮件的配置文件路径移动到 conf 下面, 便于手工修改;//
监控页面的超时单位改为毫秒

!2005.07.09
1.0 版本推出, 用于监控远程托管的 Tomcat 网站服务器, 只能用来监控 Windows 平台下面的 Tomcat.
----

!!使用说明(请参考更新历史)

本软件每隔固定时间就监测一次给定的 Web 站点的页面是否可以访问, 如果请求超时或者失败, 就发送彩E/邮件到给定的手机/信箱(手机的话必须自行申请了手机邮箱, 例如彩E, 和普通邮箱一样发送), 进行通知, 在系统托盘区显示气泡进行警告,//
并尝试根据配置的 Tomcat 服务器路径重启本机的 Tomcat 进程, 首先尝试执行 "shutdown.bat", 然后等待 30 秒后执行 "startup.bat" 完成操作.//
更有定时重启的功能, 可以指定第一次重启的时间以及每次重启的时间间隔.//

首先请设置要监测的内容和参数, 然后再点击按钮"开始监测"即可.//
可以点击 "浏览监测日志" 查看以往监控结果.//
点击 "立即监测" 可以查看当前的网页访问情况.

软件启动后, 在工具栏上点击按钮"设置"就可以修改所有的监控和邮件等参数了.

目录结构//
/src  源代码目录//
/classes 编译后的类文件//
/conf  系统配置文件参数所在地//
    appserverplugin.properties 服务器启动插件类//
    MailSender.ini 发邮件配置//
    monitor.properties 监控配置, 可以使用图形界面来修改(注: TomcatHomePath 变量已经不再此处设置)//
    其它: 启动插件对应的配置文件   //
/lib  用到的第三方类库//
/jdic  Sun 提供的 JDIC(JDesktop Integration Components, [https://jdic.dev.java.net/|https://jdic.dev.java.net/]) 组件(托盘, 浏览器), Win, Linux 版本//
/images  图片//
/logs  监控日志文件目录//
/AutoMonitorNoGUI.bat, AutoMonitorNoGUI.sh 不带图形窗口自动监控//
/AutoMonitorWithGUI.bat, AutoMonitorWithGUI.sh 带图形窗口自动监控//
/ManMonitorWithGUI.bat, ManMonitorWithGUI.sh  带图形窗口人工启动监控//
/COPYING 许可协议文件

!!许可协议: GPL
请阅读 [LICENSE]//
开发工具: Eclipse + Jigloo//
后记: 用这个软件可以监控 Weblogic 9(Windows版本), 请修改配置文件 conf/appserverplugin.properties 和 conf/weblogic9_windows.properties, 因为 Weblogic 9 也是有两个启动脚本的. Weblogic 8 的监控功能正在开发中.

!! 实现
首先定时重启我用 java.util.Timer, 当前版本的主要流程位于类 servermon.MonitorThread.

[{QuickJavaDocPlugin

/*
* @(#)MonitorThread.java 1.00 2005-7-19
*
* Copyright 2005 beansoft studio. All rights reserved.
* PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package servermon;

import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Timer;
import java.util.TimerTask;


import servermon.launcher.AppServerPluginManager;
import servermon.launcher.IAppServerLauncher;
import servermon.persistance.ConfigurationManager;
import servermon.persistance.LogManager;
import servermon.tray.TrayIndicator;
import servermon.valuebean.Configuration;
import beansoft.jsp.StringUtil;
import beansoft.smtp.MailSender;
import beansoft.util.thread.ThreadPool;

/**
* MonitorThread, 监控器线程类, 处理所有监控操作.
*
* @author BeanSoft
* @version 1.3 2007-02-11
* version 1.00 2005-7-19
*/
public class MonitorThread extends Thread {
/** 暂停标志 */
private boolean paused = false;
/** 邮件发送器 */
private MailSender sender = new MailSender();
/** 线程池 */
private ThreadPool threadPool = new ThreadPool(new ThreadGroup("Tomcat 监控线程"));

/** 托盘指示图标 */
TrayIndicator tray = TrayIndicator.getInstance();

/** If all data is read from url done successfully,
* then this value is set to true
* Added at 2006-12-27
*/
protected static boolean dataReaded = false;
/**
* 监控时尝试读取服务器页面所用的 HTTP 输入流.
*/
protected static InputStream httpIn = null;

/**
* 是否正在重启操作中, 使用此变量避免监控线程和定时重启线程同时进行重启操作.
* @since 1.3
*/
protected static boolean isRestartInProgress = false;

/**
* 执行一次监控操作并返回日志报告.
* @return 操作结果日志
*/
public String doMonitor() {
String msg = "";
final Configuration cfg = ConfigurationManager.getConfiguration();

final long startTime = System.currentTimeMillis();

dataReaded = false;

// Add time out restart support, such as server is core but not down
final Timer timer = new Timer();

// 检查数据读取是否超时的定时任务
TimerTask checkReadTimeTask = new TimerTask() {
public void run() {
System.out.println( System.currentTimeMillis() - startTime);

if(!dataReaded) {
long deltaTime = System.currentTimeMillis() - startTime;

try {
httpIn.close();
} catch (Exception e) {
// TODO: handle exception
}

String msg = StringUtil.dateToChineseString(new java.util.Date()) + " : " +
"[错误] 访问服务器页面超过最大限时, 用时" + deltaTime + "毫秒, 即将重启 Tomcat/n";
tray.displayErrorTomcat(msg);
dataReaded = true;
// 重新启动 Tomcat
restartTomcat();
// 发送报警邮件
sendMail("服务器出错", msg, cfg);
} else {
this.cancel();
timer.cancel();
}
}
};

try {

URL url = new URL(cfg.getWebPageUrl());
// Schedule the max timeout reader check task
timer.schedule(checkReadTimeTask, cfg.getRestartTimeOut());

int data;
InputStream in = url.openStream();
httpIn = in;

while((data = in.read()) != -1) {
// if(dataReaded) {
// break;
// }
}


try {
in.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
}

dataReaded = true;

long deltaTime = System.currentTimeMillis() - startTime;

if(cfg.getDefaultTimeOut() != 0 && deltaTime > cfg.getDefaultTimeOut()) {
msg += StringUtil.dateToChineseString(new java.util.Date()) + " : " +
"[警告] 访问服务器页面超时, 用时" + deltaTime + "毫秒/n";

tray.displayWarningTomcat(msg);

// 发送报警邮件
sendMail("服务器可能故障", msg, cfg);
} else {
msg += StringUtil.dateToChineseString(new java.util.Date()) + " : "
+ "[正常] 访问" + cfg.getWebPageUrl() + "用时" + deltaTime + "毫秒/n";
tray.displayRunningTomcat(msg);
}

} catch (Exception e) {
long deltaTime = System.currentTimeMillis() - startTime;
msg += StringUtil.dateToChineseString(new java.util.Date()) + " : " +
"[错误] 无法访问服务器页面, 用时" + deltaTime + "毫秒, 即将重启 Tomcat/n";
tray.displayErrorTomcat(msg);
dataReaded = true;
// 重新启动 Tomcat
restartTomcat();
// 发送报警邮件
sendMail("服务器出错", msg, cfg);
}

LogManager.writeLog(msg);

return msg;
}

/**
* 初始化重启的计划任务.
* 如果给定的重启的时间为空或者<= 0, 就不启动重启定时任务.
* @since 1.3
*/
protected void initScheduledRestartTimer() {
Configuration cfg = ConfigurationManager.getConfiguration();

// Parse scheduled time
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");

Date today = new Date();

try {
LogManager.writeLog("第一次重启的时间为:" + cfg.getScheduledRestartTime() + "/n");

Date scheduledDate = df.parse(cfg.getScheduledRestartTime());

// TODO Fix these warnings
today.setHours(scheduledDate.getHours());
today.setMinutes(scheduledDate.getMinutes());
today.setSeconds(scheduledDate.getSeconds());

System.out.println(today.toLocaleString());
} catch (java.text.ParseException e1) {
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
}

if(cfg.getScheduledRestartPeriod() > 0) {
LogManager.writeLog("重启的时间间隔为:" + cfg.getScheduledRestartPeriod() + "分钟/n");

Timer scheduledRestartTimer = new Timer();
TimerTask scheduledRestartTimerTask = new TimerTask() {

public void run() {
String msg = StringUtil.dateToChineseString(new java.util.Date()) + " : " +
"[警告] 即将定时重启服务器/n";

tray.displayWarningTomcat(msg);
LogManager.writeLog(msg);

if(!isPaused()) {
restartTomcat();
}
}
};

scheduledRestartTimer.schedule(scheduledRestartTimerTask, today,
cfg.getScheduledRestartPeriod() * 1000 * 60);// 分钟为单位
}
}

/**
* 监控的主循环流程.
* 首先初始化定时重启的任务;
* 接着定时进行监控, 如果访问页面超时, 就发送邮件报警, 并在系统
* 托盘指示状态;
* 如果打开访问时间太久, 就尝试重启服务器, 注意这里有可能会造成
* 死循环;
* 所有的参数都从配置文件中读取.
* TODO 是否用 Spring 显的更灵活???
*
* @see #initScheduledRestartTimer()
* @see #doMonitor()
*/
public void run() {
initScheduledRestartTimer();

while(true) {

// 未暂停时执行监控操作
if(!isPaused()) {
doMonitor();
} else {
tray.displayPausedTomcat("监控已暂停");
}

Configuration cfg = ConfigurationManager.getConfiguration();

// 默认休眠 10 分钟后检测
try {
if(cfg.getQueryTimeInternal() > 0) {
Thread.sleep(cfg.getQueryTimeInternal() * 60 * 1000);
} else {
Thread.sleep(10 * 60 * 1000);
}
} catch (Exception e) {
// e.printStackTrace();
}
}
}

/**
* 发送邮件到监控人的信箱.
* @param subject 信件主题
* @param msg 信件内容
* @param cfg 配置参数
*/
private void sendMail(String subject, String msg, Configuration cfg) {
String mailCfg = MailSender.readConfigurationString();


String from = null;// 发件人地址

try {
Properties props = new Properties();
props.load(new java.io.ByteArrayInputStream(mailCfg.getBytes()));

from = props.getProperty("username", "beansoft@beansoft studio");
} catch (Exception e) {
// TODO: handle exception
}

sender.setFrom(from);

String toStr = cfg.getAlertEmails();

StringTokenizer token = new StringTokenizer(toStr, ";,");

while(token.hasMoreElements()) {
String value = token.nextElement().toString();

sender.setTo(value);
sender.setSubject(subject + new Date().toLocaleString());
sender.setBody(msg);

sender.sendMail();
}
}

/**
* 重新启动 Tomcat 服务器. 首先执行 shutdown.bat 关闭服务器, 等待30秒后运行 startup.bat.
* @param cfg 服务器监控配置参数
*/
private void restartTomcat() {
if(isRestartInProgress == true) {
return;
}

final IAppServerLauncher launcher = AppServerPluginManager.getAppServerLauncher();

Runnable run = new Runnable() {
public void run() {
isRestartInProgress = true;
launcher.stopServer();

// 等待一段时间来确保服务器已经停止
try {
Thread.currentThread().sleep(launcher.getShutDownWaitTime() * 1000);
} catch (Exception e) {
}

// 启动服务器
launcher.startServer();

isRestartInProgress = false;
}
};

threadPool.execute(run, "Restart " + launcher.getAppServerName());
}


/**
* @return returns 是否暂停线程.
*/
public boolean isPaused() {
return paused;
}

/**
* @param paused The 是否暂停线程 to set.
*/
public void setPaused(boolean paused) {
this.paused = paused;
}

}
}]

!!截屏
[{Image src = 'tomcat_monitor_main.gif'}]//
图1: 主界面//
[{Image src = 'TomcatMonitor-Tray.png'}]//
图2:气泡和托盘图标//
[{Image src = 'tomcat_monitor_trays.png'}]//
图3: 托盘图标状态//
[{Image src = 'tomcat_monitor.gif'}]//
图4: 启动和运行动画(Windows 2003 Server, English)//
[propedit.gif]//
图5: [#1]属性文件编辑器


----

     AutoMonitorNoGUI.sh脚本有问题,Linux下AutoMonitorNoGUI.sh脚本好像使用Windows的配置文件。希望出一个Linux下稳定的
无GUI版本,必定用tomcat的还是Linux服务器多,且大多数无GUI界面。
      建议程序写成客户端/服务器模式,因为很少有人爬在Tomcat服务器上盯着服务运行!可以在Tomcat所在服务器上部署服务器端
,并发送Tomcat监控信息到客户端。这样相对较好。

--[220.231.31.203|mailto:toakee@iwmusic.com], 27-Feb-2007


----

开源软件, 稍微看看代码修改一下即可实现, 大部分的监控代码已经写好了, 你提的这些算是远程记录 log 的功能, 可以考虑 log4j. 正因为是无担保无技术支持的开源软件, 所以你的这些需求我暂时还没打算做.

--[beansoft|], 06-Mar-2007
 
TomcatMonitor loadrunner 中对tomcat的监控. 立即下载

相关推荐

latest-version:获取最新版本的npm软件包

最新版本 获取最新版本的npm软件包 直接从注册表中获取版本,而不是像模块那样依赖大型模块。 安装 $ npm install latest-version 用法 const latestVersion = require ( 'latest-version' ) ; ( async ( ) => { console . log ( await latestVersion ( 'ava' ) ) ; //=> '0.18.0' console . log ( await latestVersion ( '@sindresorhus/df' ) ) ; //=> '1.0.1' // Also works with semver ranges and dist-tags console . log ( await latestVersion ( 'npm' , { version

监控tomcat几种方法

通过JConsole监控Tomcat 1、打开tomcat5的bin目录中的catalina.bat文件,在头部注释部分的后面加上: set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana

hualusiyu的专栏 1906

TomcatServerMonitor,tomcat监控程序

Tomcat 服务器监控软件 1.3 by beansoft@126.com 帮您自动重启无响应的 Tomcat(实际情况哦, 并非每个公司的程序都是健壮的).

推荐开源项目:最新版本追踪工具 —— `latest-version`

推荐开源项目:最新版本追踪工具 —— latest-version 在日新月异的Node.js生态中,保持你的依赖库处于最新状态是至关重要的。今天要给大家介绍的是一个轻量级且高效的工具——latest-version。这是一款简单却强大的npm包,能让你轻松获取任何npm包的最新版本信息,无需依赖庞大复杂的npm本身或类似的第三方工具。 项目介绍 latest-version直击开发者痛点,提供了...

gitblog_00174的博客 948

phpservermon

phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, phpserver monitor, 验证码填写错误

TomcatMoni(TOMCAT监控助手)

TomcatMoni(TOMCAT监控助手)此程序用于运行在服务器中,预留在内存中,监控网站是否可以正常打开。 原理即间隔性的访问指定的服务器中运行的网站,如果能够打开就正常,打不开就执行重启命令 使用前,请修改conf.properties文件,其中有各项配置 网站的监控日志,在log.txt中 【注意】 此程序目前为0.1 beta版,运行时并无界面 程序在后台运行,要关闭程序 请从进程关闭 进程名称:Tomcatmoni.exe. 【程序不能放在中文路径,也不能放在带空格的路径中】

最新版号查询工具:latest-version 使用指南

最新版号查询工具:latest-version 使用指南 一、项目目录结构及介绍 该项目latest-version位于GitHub上,地址是 https://github.com/sindresorhus/latest-version.git。它是一个简单的Node.js工具,用于获取npm包或GitHub仓库的最新版本。其目录结构简洁明了,以下是主要组成部分: src: 源代码目录,包含了主...

gitblog_00468的博客 1038

servermon-开源

Servermon旨在收集和存储系统参数,例如网络中多个服务器的cpu负载和内存使用情况。 可以在Web前端中显示和比较收集的信息。

!!!Tomcat服务器监控[{$latestVersion}]版 for Win,Linux(转载)

[{TableOfContents title=''}] !!Tomcat 服务器监控软件 [{$latestVersion}] by beansoft@126.com 帮我自动重启无响应的 Tomcat(实际情况哦, 所有的程序都是有 BUG 的), 定时重启 Tomcat.// 后记: 推荐使用开源的Tomcat监控工具 [LambdaProbe|http://www.lambdap

鲜土豆的专栏 1124

从ViT到Swin Transformer:一文搞懂Transformer在CV中的进化史(附实战代码)

本文系统梳理了Transformer在计算机视觉领域的演进历程,从开创性的Vision Transformer(ViT)引入全局注意力机制,到DETR实现端到端目标检测,再到里程碑式的Swin Transformer通过滑动窗口和层次化设计高效桥接CNN与ViT。文章深入剖析了各模型的核心思想、技术突破与实战应用,并提供了可运行的代码示例,帮助读者从理论到实践全面掌握这一关键技术脉络。

cola5的博客 713

CH32V IAP跳转避坑指南:为什么你的APP跳不过去?从mstatus寄存器配置到函数属性详解

本文深入解析CH32V系列MCU的IAP跳转机制,从mstatus寄存器配置到函数属性优化,详细讲解如何避免APP跳转失败。文章涵盖地址准备、模式切换、跳转执行等关键步骤,并提供调试技巧与实战案例,帮助开发者快速解决CH32V IAP跳转中的常见问题。

weixin_30955617的博客 141

Tomcat学习--tomcat运行状态监控

上一篇博客Tomcat学习--war服务相关状态信息监控中我们已经了解了一下对war包的启动、停止、运行状态、重载和卸载操作的实现机制,接下来我们用这篇博客了解一下tomcat运行过程中服务器,操作系统,jvm和war的一些状态信息。 目前tomcat将运行的过程中的一些状态信息通过JMX的MBeanServer机制保存起来,所以目前的实现就是通过MBeanServer来获取数据就好...

井底之蛙 1万+

科研软件|Adobe Photoshop 2024 (PS 2024)

科研软件|Adobe Photoshop 2024 (PS 2024)

m0_55499682的博客 5517

ServerMmon青蛇探针,一个超好用的服务器状态监控-搭建教程

serverMmon(青蛇探针)是nodeJs开发的一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~。在线演示:http://106.126.11.114:5880/

blog.jichun29.cn 1233

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6197

Sparse4Dv3 代码复现

打包数据集的元信息和标签,并生成所需的.pkl文件。最后还输出了很多跟踪相关的东西...然后通过K-means生成锚点。编译可变形聚合CUDA算子。安装motmetrics。

m0_60857098的博客 4490

PHP Server Monitor (phpservermon) 安装与配置指南

PHP Server Monitor 是一个开源的服务器监控工具,使用PHP和MySQL开发。它能够监控服务器和网站的运行状态,并在服务异常时通过电子邮件、短信等多种方式发送通知。本文将详细介绍该工具的安装、配置和升级过程。 ## 安装准备 在开始安装前,请确保您的环境满足以下要求: - Web服务器(如Apache、Nginx) - PHP 5.6或更高版本 - MySQL数据库 - 基本的...

gitblog_00541的博客 429

以太网MII、RMII、GMII、RGMII(三)

RMII接口收发的数据位宽为2bit,因此管脚数目大为减少,在高密端口PHY中应用较多,但是由于其是MAC和PHY共用一个参考时钟,接口之间的距离不能太远;一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK,两者的方向是不一样的,前者有PHY提供(同MII),后者由MAC或外部参考时钟源提供,绝大多数GMII接口都是兼容MII接口的,在用作MII模式时,使用TX_CLK和8根数据线中的4根。MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的。

qq_42357877的博客 2333

docker

docker

u014536047的博客 257

【图像超分】论文精读:SRConvNet: A Transformer-Style ConvNet for Lightweight Image Super-Resolution

本文提出了一种轻量级图像超分辨率重建方法SRConvNet,结合了卷积神经网络和Transformer的优势。针对传统Transformer计算复杂度高的问题,设计了傅立叶调制注意力(FMA)替代自注意力机制,通过区域频率空间调制实现高效的全局依赖建模;同时引入动态混合层(DML),采用混合尺度动态卷积结合通道拆分机制增强局部特征提取。实验表明,SRConvNet在计算效率和参数数量上显著优于现有轻量级超分方法,同时保持了优异的重建性能。该方法为移动端部署提供了有效的解决方案,在精度与复杂度间取得了良好平衡

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 808

【异常】Warp终端AI功能403封禁报错I‘m sorry, I couldn‘t complete that request.Request failed with error: ErrorSta

本文针对Warp终端出现的AI功能定向封禁报错,完整还原脱敏后的报错信息、深度解读报错本质,并提供分优先级的全流程可落地解决方案,可直接用于技术排查、内部知识库归档。

奶爸的编程之路,也就一周冷个三天 267

docker安装tomcat

1、查找Docker Hub上的tomcat镜像 docker search tomcat 2、拉取官方的镜像 docker pull tomcat #默认是最新版 latest,命令效果一样 docker pull tomcat:latest 拉取官方的镜像可以选择你想要的版本 docker pull 镜像名:tag docker pull tomcat:jdk8-openjdk-slim-buster # tag 查看官网:https://hub.docker.com/ 拉取镜像要知

我是泛滥 787

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Maven中使用<version>LATEST</version>自动依赖最新版本引发的问题

今天在打包项目的过程中出现了编译问题,奇怪的是这个项目已经好久没有修改过了,报错如下。 找不到符号 [ERROR] 符号: 方法 intent(java.lang.String) [ERROR] 位置: 类型为com.paypal.orders.OrderRequest的变量 orderRequest 找不到符号 [ERROR] 符号: 方法 amo...

anhe1364的博客 5243

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

github 图片选择 Matisse

Matisse 本地图像和视频选择器,知乎使用的图片选择器,支持显示序列号(1,2,3,4) https://github.com/zhihu/Matisse 1、下载 app-> repositories { jcenter() ...

chongbianpang0485的博客 1054

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

windows下TOMCAT监控工具TomcatMoni

--------在WINDOWS 2008 R2 64位系统,JDK1.7 64BIT,TOMCAT 7.0.11 64BIT,APACHE2.2.19 64BIT 环境下无法运行--------- TomcatMoni(TOMCAT监控助手)此程序用于运行在服务器中,预留在内存中,监控网站是否可以正常打开。 原理即间隔性的访问指定的服务器中运行的网站,如果能够打开就正常,打不开就执行重启命令

冷月宫主的专栏 2917
上一篇: struts 国际化 i18n
下一篇: Sql List
eyejava
博客等级 码龄20年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值