需求
内网服务器之间高频率检验延时信息,
脚本特点
多进程,可同时异步监控多个地址,不会互相影响。
使用方式
创建文件夹(可以替换为你自己的,我这里就用我们生产环境的标准目录了)
mkdir /data/w/falcon-agent/tmp
复制wiki里的代码至ping.py脚本并替换脚本内需要监控的地址
启动脚本
python ping.py &
关闭脚本(没必要关闭)
ps -ef|grep ping|awk -F
'[ ]+'
'{print $2}'
|xargs kill
日志记录
/data/w/falcon-agent/tmp目录下会按照机器名+时间戳的方式进行日志记录,默认清除30天之前的ping日志
代码模板
#!/bin/python #coding: utf-8 import multiprocessing import time import os #替换掉需要ping的机器 ping_list = [ "productu1.baseinfo.w.cn1", "productu2.baseinfo.w.cn1", "priceu1.baseinfo.w.cn1", "priceu2.baseinfo.w.cn1" ] def ping_worker(hostname): while True: time.sleep(1) os.system("find /data/w/falcon-agent/tmp -mtime +30 -name '*.log'|xargs rm -f") os.system("echo $(date) >> {}.`date +%F`.log".format(hostname)) os.system("echo $(ping -c 1 {}|grep -A 3 time=) >> {}.$(date +%F).log".format(hostname,hostname)) for hostname in ping_list: process = multiprocessing.Process(target = ping_worker, args = (hostname,)) process.start()
日志分析脚本
分析指定日期日志,并展示延时大于10毫秒的ping记录
#!/bin/python #coding: utf-8 import os from sys import argv logs = [] try: script, first = argv except ValueError: print "请传入一个日期参数,例如 python scripts.py 2017-12-20" else: logs = os.popen("ls *{}.log".format(first)).read().split(' ')[:-1] def worker(*logs): for log in logs: times = os.popen("cat %s| awk '{print $8}' | awk -F '=' '{if($2>10)print $2}'" % (log)).read().split(' ')[:-1] for time in times: output = os.popen("cat %s|grep -B 1 'time=%s'" % (log, time)).read() print log print output worker(*logs)