[导入]跨越LVS,监控后端应用服务器--监控系统开发路上


作者: ecsun  链接:http://papalong.javaeye.com/blog/284637  发表时间: 2008年12月02日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

公司有几百台服务器,很多服务器使用了LVS,同一个应用会部署在很多不同的服务器上,然后在上层加LVS,这个时候,当后台一台或几台服务服务器宕掉了,前端应用是正常的,通过对URL的监控,不能发现问题.

 

  上周末托管在深圳电信的机器,有一个机柜9台服务器同时断掉,经过查找,最后是外网交换机出现了问题.但这个时候前端应用是正常的,而监控,没有发出报警信息,昨天在监控上面加上新功能,穿过LVS,直接到后端服务器进行监控.

 

   这个服务器的监控,分为两种.

  1:通过SNMP对服务器进行监控.

  2:通过对应用的URL对服务器进行监控.

 

  SNMP主要监控服务器的运行状态.

  URL监控,主要监控应用的实时运行状态.

 

  费话少说,对应用加IP的探测代码如下:

 

 

public static Long getResponseTimeByIp(String urlAddress, String ip) {
		URL url;
		StringBuffer sb = new StringBuffer("");
		HttpURLConnection conn = null;
		Long responseTime = new Long(0);
		try {
			Long openTime = System.currentTimeMillis();
			// url = new URL("http://m.easou.com/");
			url = new URL(urlAddress);
			Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(buildInetAddress(ip), 80));
			conn = (HttpURLConnection) url.openConnection(proxy);
			conn.setConnectTimeout(50000);
			conn.setReadTimeout(50000);
			conn.setRequestMethod("GET");
			conn.setDoOutput(true);
			conn.setDoInput(true);
			BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String temp;
			boolean remaining = true;
			while (remaining) {
				temp = bReader.readLine();
				if (null != temp) {
					sb.append(temp);
				} else {
					remaining = false;
				}
			}
			int code = conn.getResponseCode();
			if (code == 200) {
				Long returnTime = System.currentTimeMillis();
				responseTime = returnTime - openTime;
			} else {
				responseTime = new Long("50000" + new Long(code).toString());
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			responseTime = new Long("60000000");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			responseTime = new Long("60000000");
		} finally {
			if (null != conn) {
				conn.disconnect();
			}
		}
		return responseTime;
	}

 

 

使用这段代码,就可以对于做了负载均衡的服务器,进行URL的实时监控了.

 

发送的报警信息,会探测出目前哪台服务器的状况更差,更有针对性,方便系统组用户处理服务器异常.



已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐




文章来源:http://papalong.javaeye.com/blog/284637
posted @ 2008-12-08 23:58  王菲  阅读(310)  评论(0编辑  收藏  举报