📄 servermonitor.java
字号:
/**
* <p>Title: 任务管理系统</p>
*
* <p>Description: 提供任务管理、分配、调度、通知等功能。</p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: 卓博信息科技有限公司</p>
*
* @author Henry
* @version 1.0
*/
package com.jobcn.task;
import java.io.*;
import java.lang.reflect.Method;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.Date;
import com.jobcn.control.Common;
import com.jobcn.control.MessageCenter;
/** ServerMonitor.java
* function:
* describe:
*/
public class ServerMonitor {
private static boolean executeTask() {
boolean result = false;
if (server.equals("192.168.60.118")
|| server.equals("192.168.80.118")) { // web servers
result = monitorWebservers();
}
else if (server.equals("192.168.60.222")
|| server.equals("192.168.60.229")) { // db servers
result = monitorDbservers();
}
// write log.
String log = outputStr.replaceAll("<", "<").replaceAll(">", ">");
Common.writeLog(taskListName, taskID, log, result);
return result;
}
private static boolean monitorWebservers() {
boolean result = false;
outputStr = Common.getDateString(new Date(), "yyyy-MM-dd HH:mm:ss");
outputStr += " 任务<<"+taskName+">>已执行!执行结果:";
String htmCode = "";
try {
htmCode = Common.getherHtmlCode(url);
}
catch (java.net.UnknownHostException e){
outputStr += "服务器运行异常:未知主机!\r\n"+e.getMessage();
return false;
}
catch (ConnectException e){
outputStr += "服务器运行异常:连接拒绝!\r\n"+e.getMessage();
return false;
}
catch (SocketTimeoutException e){
outputStr += "服务器运行异常:连接超时!\r\n"+e.getMessage();
return false;
}
catch (FileNotFoundException e){
outputStr += "服务器运行异常:找不到该文件!\r\n"+e.getMessage();
return false;
}
catch (Exception e) {
outputStr += "服务器运行异常:" + e.getMessage();
return false;
}
if (server.lastIndexOf("118") != -1) {
startStr = "<td align=right>";
endStr = "</td>";
int active = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int pooled = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int connTimeout = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int liveTime = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int deadTime = getThreadNum(htmCode, startStr, endStr);
if (active <= 15 && pooled <= 15 && connTimeout <= 15 && liveTime <= 15
&& deadTime <= 15) {
outputStr += "服务器运行正常!";
result = true;
}
else {
outputStr += "服务器运行异常:过载!";
}
}
else if (server.lastIndexOf("119") != -1) {
startStr = "<tr align='right'>";
htmCode = htmCode.substring(htmCode.indexOf(startStr));
startStr = "<td>";
endStr = "\r\n <td>";
int active2 = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int pooled2 = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int connTimeout2 = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
int liveTime2 = getThreadNum(htmCode, startStr, endStr);
htmCode = htmCode.substring(htmCode.indexOf(startStr)
+ startStr.length());
endStr = "\r\n</table>";
int deadTime2 = getThreadNum(htmCode, startStr, endStr);
if (active2 <= 50 && pooled2 <= 50 && connTimeout2 <= 100 && liveTime2 <= 150
&& deadTime2 <= 50) {
outputStr += "服务器运行正常!";
result = true;
} else {
outputStr += "服务器运行异常:过载!";
}
}
return result;
}
private static boolean monitorDbservers() {
return false;
}
private static int getThreadNum(String src, String startStr, String endStr) {
int result;
int index = src.indexOf(startStr) + startStr.length();
String sub = src.substring(index);
result = Integer.parseInt(sub.substring(0, sub.indexOf(endStr)));
return result;
}
public static Object[] getTaskExecuteInfo(
String taskListName, int taskID, String taskName, String[] mails) {
ServerMonitor.taskListName = taskListName;
ServerMonitor.taskID = taskID;
ServerMonitor.taskName = taskName;
server = "192.168.80.118";
url = "http://192.168.80.118/scripts/isapi_srun.dll/caucho-status";
// 测试一个无效地址
//url = "http://192.168.80.118/ascripts/isapi_srun.dll/caucho-status";
boolean result = executeTask();
// 当任务运行过程中出现异常时,以EMAIL方式通知管理员。
if (!result) {
String[] sendAdds = new String[]{"daibing@jobcn.com", mails[0], mails[1], ""};
new MessageCenter().sendHtmlWithImg(
"任务执行异常", outputStr, null, sendAdds);
}
return new Object[]{result, outputStr};
}
/**
* @param args
*/
public static void main(String[] args) {
try {
Class c = Class.forName("com.jobcn.task.ServerMonitor");
Method getMessage =
c.getMethod("getTaskExecuteInfo", new Class[]{
String.class, int.class, String.class, String[].class});
Object[] message =
(Object[])getMessage.invoke(null, new Object[]{
"my task tabel", 1000, "test task", new String[]{"daibing@jobcn.com", "daibing@jobcn.com"}});
System.out.println("result:"+message[0]);
System.out.println("message:"+message[1]);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String taskListName, taskName, server, url,
startStr, endStr, outputStr;
private static int taskID;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -