如何在12个小时,搞定http监控?
共 4661字,需浏览 10分钟
·
2020-12-01 14:16
[http.monitor.item]
cluster.name : daojia_main
url : http://daojia.com/
result : 家政
[http.monitor.item]
cluster.name : daojia_user
url : http://daojia.com/userinfo/get/
get.data : uid=123
post.data : NULL
cookie.data : NULL
result : shenjian
Bool Service::trySendAlarm(
String clusterName,
String yuangongName,
String ip,
String url,
…
)
集群收敛策略,可以通过clusterName去重 接口收敛策略,可以通过url去重 定时定频策略,可以通过yuangongName去重 白天黑夜策略,可以通过告警发送时间实施 …
[http.monitor.item]
cluster.name : daojia_main
url : http://daojia.com/
result : 家政
[http.monitor.item]
cluster.name : daojia_user
url : http://daojia.com/userinfo/get/
get.data : uid=123
post.data : NULL
cookie.data : NULL
result : shenjian
[daojia_main]
ip.list : ip1, ip2, ip3
port : 80
owner.list: shenjian, zhangsan, lisi
[daojia_user]
ip.list : ip11, ip22, ip33
port : 8080
owner.list: shenjian
[shenjian]
email : XX@XX.com
phone :15912345678
[zhangsan]
email : YY@YY.com
phone :18611220099
// 解析配置文件,取出监控项、集群、员工等信息
Array[monitor-item] A1=Parse(monitor-item.config);
Array[cluster-info] A2= Parse(cluster-info.config);
Array[owner-info] A3=Parse(owner-info.config);
// 遍历所有监控项
for(each item in A1){
// 取出监控项的集群名,URL,http数据,结果等信息
clusterName= item.clusterName;
url= item.url;
getData= item.getData;
postData= item.postData;
cookieData= item.cookieData;
result= item.result
// 由集群名,获取集群信息
clusterInfo= A2[clusterName];
// 由集群信息,获取集群ip列表,集群负责人列表
List
List
// 集群内的每一个ip实例web-server,都需要监控
for(each ip in ips){
// 根据ip,url,http数据构造请求
httpClient client = new httpClient(ip, url, getData, postData, cookieData);
// 获取http请求执行结果
httpResponse resp = client.execute();
// 如果返回为200,并且包含监控项里的业务特性结果
if(resp.code==200&& resp.contain(result)){
//正常,继续监控
continue;
}
// 否则,对所有集群负责人发送告警
for(each owner in owners){
// 取出负责人邮箱和手机号
email =A3[owner].email;
phone =A3[owner].phone;
// 发送邮件与短信告警
sendEmail(email, ip,url, owner);
snedSM(phone, ip, url,owner);
}
}
}
思路比结论更重要,希望大家有收获。