在监控的过程中,我们除了监控一些服务性能情况,还有一些服务的存活也需要监控,这时候,我们就可以用到java自带的url操作类,完成,整体思路是通过一个请求的状态码判断某请求,是否存在,达到监控的目的,为了更可靠,我们重复请求五次,都失败再警告,现在我们一起来实现它。
1,HTTP状态码:
1开头(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。
2开头(成功)
3开头(重定向)
4开头(请求错误)
5开头(服务器错误)
2,工具类:
package com.el.rabbitmq.supervise.common.rabbitmq;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by Administrator on 2016/3/22.
*/
public class URLUtils {
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public static Boolean isConnect(String urlStr) {
if(urlStr==null||urlStr.isEmpty()){
return false;
}
Boolean isConnected = false;
int counts = 0;
URL url=null;
while (counts < 5) {
try {
url = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
int state = con.getResponseCode();
if (state == 200) {
isConnected=true;
}
break;
}catch (Exception ex) {
counts++;
isConnected=false;
continue;
}
}
return isConnected;
}
}
@Override
public Boolean checkOneService(ControlService controlService) throws Exception {
if(controlService == null ){
return false;
}
boolean isFinish=false;
if(URLUtils.isConnect(controlService.getServiceUrl())){
isFinish=true;
}else{
isFinish = sendWarningOneservice(controlService);
isFinish=false;
}
return isFinish;
}
总结
简单的方法,简单的方式,有时候能够起到不容忽视的作用,我们有时候,复杂的问题,高大上的问题不能解决,没有头绪,恰恰是这种简单,我们还不够,或者说原始积累还不足,我们不但要高屋建瓴,也要深入进去,深入到最简单,最底层,再来看你的问题,是不是觉得,解决方法不止一个了!这就是人们常说的经验!