脚本编程

Linux操作系统DNS解析(nameserver)监控脚本

一、起因 昨天,开发组兄弟发现resin日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态! 这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息! 检查发现OpenSUSE的nameserver居然是谷歌的公用DNS:8.8.8.8!!!尼玛,不出问题才怪呢! 二、解决 虽然阿里新推出了公用DNS:223.5.5.5,223.6.6.6,但这是内部解析外部域名,所以就近的nameserver是最快的,于是赶紧给换成了公司专用的nameserver,问题立马解决了! 然后批量替换了200多台服务器中的nameserver为8.8.8.8的问题系统,以绝后患。 三、绸缪 仔细考虑后,决定加上nameserver的相关监控: ①、编写脚本: vim mon_nameserver ②、加入任务计划: crontab -e 每五分钟执行一次,检查mapi.alipay.com的解析时长,若解析失败或时间大于0.3s则发送报警信息到监控APP上。 下面是将延时阈值设置为0.001s的测试报警截图: 四、附加 这个脚本只是用于特定情况,并非常用功能,仅供参考!脚本核心功能使用的是curl获取域名解析时长,下面简单的补充一下curl部分参数: time_namelookup:DNS 解析域名的时间 time_commect:client和server端建立TCP 连接的时间 time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间 time_total:client发出请求;到web的server发送会所有的相应数据的时间 speed_download:下周速度  单位 byte/s 更多curl详细说明请man或自行搜索。
阅读全文