⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servermonitor.java

📁 一个用于监控WEB服务器和数据库服务器的客户端程序。
💻 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("<", "&lt;").replaceAll(">", "&gt;");
		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 + -