项目存活监控
- 查询数据库监控数据
- 如果Redis中没有报错次数 size为null
-
- 响应状态码失败
- 如果Redis中已经存在报错次数 size不为null
-
- 项目地址响应不成功
- 响应成功
- 下发短信
- 下发微信
查询数据库监控数据
select
id, entry_name, ip,port, ver_url, phone,open_id,alarm_state ,state,release_start_time,release_end_time, create_Time, update_Time, delete_Time, flag
from mhaqjk.mhaq_survival
where flag = 0 and NOW() NOT BETWEEN release_start_time AND release_end_time
发起调用url 返回响应状态码code。
查询 Redis缓存,返回size(报错次数)
如果Redis中没有报错次数 size为null
响应状态码失败
如果redis中没有size报错次数,且项目地址访问失败,(报警状态为0)就下发微信,
并且设置redis 为1;
否则(就是redis中没有报错次数,但是项目地址访问通了,)就设置redis为0;
如果Redis中已经存在报错次数 size不为null
项目地址响应不成功
(Redis中已经存在报警信息,且项目地址不通)报警状态为0,下发微信通知
。
如果(报警次数等于1次或者小于3次),报警状态为0,下发短信通知
。
如果是(报警次数size大于33次了,就是半个小时后还是报错),再次下发短信通知
,
设置Redis 为1 ,(即重置Redis报警次数size),并更新数据。
并设置 平台存活状态status为0,更新数据,Redis中报错次数+1;
响应成功
(Redis中已经存在报警次数size,但是这次响应成功)就把redis中报警次数重置为0 ,设置平台存活状态为1, 更新数据库。
(只要平台不通就下发微信,前三分钟发短信,等到三十分钟后再次发送短信)
下发短信
参数:MhaqSurvival
如果报警状态是1的话,直接返回,不发送短信;
否则的话就构建一个参数Map:templateParamsMap
参数:
String content="平台:"+survival.getEntryName()+":"+survival.getVerUrl()+"失效";
获取手机号码String getPhones = survival.getPhone();
新建一个集合infos;
判断获取到的手机号码是否为空,如果不为空,通过,
,切割手机号码字符串,
新建一个日志实体类MhaqInfoLog infoLog = new MhaqInfoLog();
记录发送日志信息;
然后发送短信,参数是手机号,templateParamsMap
下发微信
如果报警状态是1的话直接返回,不用下发。
参数是:MhaqSurvival
获得getOpenId
,获得urlgetVerUrl
,
将OpenID通过,
分割,
获取时间time;
循环遍历OpenId数组,新建paras集合,
List<TemplateParam> paras=new ArrayList<TemplateParam>();
paras.add(new TemplateParam("first","百事通加盟平台存活预警:","#930093"));
paras.add(new TemplateParam("time",time,"#0044BB"));
paras.add(new TemplateParam("ip_list",verUrl,"#0044BB"));
paras.add(new TemplateParam("sec_type",content,"#0044BB"));
monitorService.sendMsgByWeiXing(paras, openId, time);
构建模板参数,下发微信。