首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

web系统简单监控

前段时间, 楼主所在的公司,经常发生服务器宕机,或者是服务响应超时的情况,而且公司招的运维能力不太行, 这些事情无法解决,为此还被CEO召集全员,臭骂了一段, 还制定了一些不太符合技术的考核规则,无奈之下,只能最大化的去缓解这种情况。

在领导发现服务器不行之前,把问题解决掉,这是最快也是最有效的处理方式,为此,作为程序猿的攻城狮们, 只能自己想办法去监控了,楼主就简单点,写了个监控的程序, 及时发现服务器不行了。

代码如下:

package moniter;

import java.io.BufferedReader;

import java.net.URL;

import java.net.URLConnection;

import java.util.Date;

import example.Client;

public class Master extends Thread{

private String thisip;

private static Client client=null;

public Master(String ip){

this.thisip = ip;

}

private boolean isAlive(String ip){

boolean flag = false;

try{

String str;

BufferedReader in;

URL url = new URL("http://"+ip+"/xxx.do?_date=" + (new Date()).getTime());

URLConnection con = url.openConnection();

in = new java.io.BufferedReader(new java.io.InputStreamReader(

con.getInputStream()));

con.setConnectTimeout(2000);

con.setReadTimeout(8000);

while ((str = in.readLine()) != null) {

if (str.length() > 0) {

break;

}

}

in.close();

flag = false;

}catch(Exception ex){

flag = true;

ex.printStackTrace();

}

return flag;

}

private void keepTomcatAlive(String ip) throws Exception {

try {

//失败进行三次校验

boolean flag = isAlive(ip);

int count = 0;

if(flag){

do{

if(flag){

for(int i=0; i

flag = isAlive(ip);

if(!flag){

break;

}

count ++;

}

}

if(count > 2){

client=new Client("xxxxx”); //楼主发送短信的相关接口

int result = client.sendSMS(new String[] { "手机号码"},(new Date()).getTime() + "系统timout,请及时处理:" + ip, "", 5); //发送短信

count = 0;

}

Thread.sleep(60000); //休眠1分钟, 再次校验

}while(flag);

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

private static void debug(String msg) {

}

public void run(){

while (true) {

try {

debug(this.thisip + " :Detect agin ");

keepTomcatAlive(this.thisip);

Thread.sleep(60000);

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

public static void main(String[] args) {

String[] ip = {“ip:port”

};

for(int i=0; i

Master m = new Master(ip[i]);

Thread t = new Thread(m);

t.start();

}

}

}

这里用了线程的模式去跑每一个服务器, 每1分钟跑一次, 这样子,服务器的访问也不会有什么影响。但是这里有个小小问题, 就是楼主的短信服务商每分钟只能给一个号码发送3条短信,超过了就会被服务商拦截掉,哈哈,没办法, 只要收到了就去检查服务器就好了, 能把危机解决掉,如果想要更准确的, 可以发个微信文本推送之类的,这个要复杂一点,各位自己想吧。

如果想要监控到服务器的各类性能指标,楼主建议各位自己去找相应的框架去监控了,但是那样基本上是需要修改原项目的。

ps:代码比较简单, 楼主就不写注释了,有什么问题请指正!

========================啰嗦一句,关注下楼主=======================

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171219G06TPF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券