Authored by FengRuwei

添加出错信息统计发送短信handler

... ... @@ -38,10 +38,14 @@ public class JavaApiClient {
@Autowired
@Qualifier("javaapiRestTemplate")
private RestTemplate restTemplate;
//
// @Autowired
// @Qualifier("influxDBJavaApiHandler")
// private IJavaApiHadnler javaApiHadnler;
@Autowired
@Qualifier("influxDBJavaApiHandler")
private IJavaApiHadnler javaApiHadnler;
private List<IJavaApiHadnler> javaApiHadnlerList;
//TODO 需要 线程安全 处理
private Map<String, JavaApiInfo> javaApimap;
... ... @@ -56,7 +60,6 @@ public class JavaApiClient {
private long endTime;
public void initClient() {
executorService = new ThreadPoolExecutor(10, 30, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(),
new JavaApiThreadFactory());
... ... @@ -85,7 +88,7 @@ public class JavaApiClient {
public void run() {
startTime=System.currentTimeMillis();
startTime = System.currentTimeMillis();
int tastNum = 0;
for (JavaApiInfo javaApiInfo : javaApimap.values()) {
... ... @@ -114,12 +117,14 @@ public class JavaApiClient {
//close 线程池
executorService.shutdownNow();
endTime=System.currentTimeMillis();
endTime = System.currentTimeMillis();
}
public void handleResult(JavaApiStatics rep) {
javaApiHadnler.handler(rep);
for (IJavaApiHadnler javaApiHadnler : javaApiHadnlerList) {
javaApiHadnler.handler(rep);
}
}
... ... @@ -153,7 +158,7 @@ public class JavaApiClient {
//
// mObjInfoMap.add(1, mObj2);
MObjectInfo mObj2 = new MObjectInfo();
MObjectInfo mObj2 = new MObjectInfo();
mObj2.setMoId(0);
mObj2.setMoHostIp("localhost");
mObj2.setMoTags("10080");
... ...
package com.monitor.javaserver.handle.impl;
import com.model.JavaApiInfo;
import com.model.MObjectInfo;
import com.monitor.common.config.SnsMobileConfig;
import com.monitor.common.service.AlarmMsgService;
import com.monitor.javaserver.common.JavaApiStatics;
import com.monitor.javaserver.handle.IJavaApiHadnler;
import org.apache.commons.collections.map.MultiKeyMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by fruwei on 2016/6/22.
*/
@Component("msgJavaApiHandler")
public class MsgJavaApiHandler implements IJavaApiHadnler {
Logger log = LoggerFactory.getLogger(InfluxDBJavaApiHandler.class);
@Autowired
public AlarmMsgService alarmMsgService;
@Autowired
private SnsMobileConfig snsMobileConfig;
private ConcurrentHashMap<String, AtomicInteger> mapStatics = new ConcurrentHashMap<String, AtomicInteger>();
@Override
public void handler(JavaApiStatics javaApiStatics) {
String key = buildKey(javaApiStatics);
//无错
if (javaApiStatics.isHasException() == false) {
if (mapStatics.containsKey(key)) {
mapStatics.remove(key);
}
return;
}
int num = 0;
if (mapStatics.containsKey(key)) {
AtomicInteger errNums = mapStatics.get(key);
num = errNums.incrementAndGet();
} else {
mapStatics.put(key, new AtomicInteger(1));
num = 1;
}
JavaApiInfo javaApiInfo = javaApiStatics.getJavaApiInfo();
if (javaApiInfo.getApiWarnTrigger() > 0 &&
num >= javaApiInfo.getApiWarnTrigger() &&
javaApiInfo.getApiToggle() == 1) {
//告警
String msg = buildErrMsg(num, javaApiStatics);
log.info("send error msg : {} .", msg);
alarmMsgService.sendSms(msg, snsMobileConfig.getOpsManagerDeveloper());
}
}
public String buildKey(JavaApiStatics javaApiStatics) {
String key;
key = javaApiStatics.getJavaApiInfo().getServiceId() + "_" + javaApiStatics.getMObjectInfo().getMoId();
return key;
}
public String buildErrMsg(int num, JavaApiStatics javaApiStatics) {
JavaApiInfo javaApiInfo = javaApiStatics.getJavaApiInfo();
MObjectInfo mObjectInfo = javaApiStatics.getMObjectInfo();
StringBuilder msgBuilder = new StringBuilder();
msgBuilder.append("Java API Error ")
.append("最近出错次数:" + num).append(" , ")
.append("NAME:" + javaApiInfo.getApiName()).append(" , ")
.append("URL:" + javaApiInfo.getApiUrl()).append(" , ")
.append("IP:" + mObjectInfo.getMoHostIp()).append(" , ")
.append("TYPE:" + javaApiInfo.getServiceType()).append(" , ")
.append(".");
return msgBuilder.toString();
}
}
... ...
... ... @@ -46,7 +46,7 @@ sendsms.alarm.mobile.logs.sns_send_failed=15905144483,18751986615,18652008443,18
#-----------------------------Logs告警模块--------------------------
#-----------------------------监控系统开发人员--------------------------
sendsms.alarm.mobile.ops_manager.developer=13914772123
sendsms.alarm.mobile.ops_manager.developer=13914772123,15150551036
#-----------------------------监控系统开发人员--------------------------
dnspod.mobile=15905144483,18652008443,18751986615
... ...