Ping监控脚本

摘要:
需要频繁检查intranet服务器之间的延迟信息。该脚本具有多进程的特点,可以同时异步监视多个地址,而不会相互影响。

 

需求

内网服务器之间高频率检验延时信息,

脚本特点

多进程,可同时异步监控多个地址,不会互相影响。

使用方式

创建文件夹(可以替换为你自己的,我这里就用我们生产环境的标准目录了)
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)

谢土豪

Ping监控脚本第1张

免责声明:文章转载自《Ping监控脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 用POP接收邮件【t093】外星密码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何减小MS SQL Server的Log文件尺寸

对于MS SQL Server 2005以及MS SQL Server 2000来说,可以这样做 首先 1: use [数据库名称]; 2: exec sp_helpfile; 利用sp_helpfile查询可知道log 文件的逻辑名称,然后就可以利用DBCC来减小LOG文件 1: BACKUP LOG [数据库名] WITH TRUNCATE_ON...

记录下centos下 ffmpeg项目编译参数

官网下载最新的ffmpeg源文件,直接./confiure --prefix=path_to_install && make && make install ,期间没有什么问题。(但是在最后想生成动态库的时候有问题,暂时不去解决了,静态的先凑合用吧) 但是在写了一个测试文件去测试的时候,总是链接错误,不是缺少这个库就是av*...

squid 访问日志记录

squid日志记录在squid.conf 也可记录。并且squid日志可以不记录静态项 在squid.conf 加入 (1)access_log /var/log/squid/access.log  squid        #定义日志存放记录 (2)不记录静态加入 acl nolog urlpath_regex -i .css .js .swf .jpg...

IOCP 浅析(java代码实现)

随着计算机技术,尤其是网络技术的飞速发展,如今的程序开发人员不仅仅局限于基于单机运行或单一线程的应用程序的开发。服务器端 / 客户端模式的最显著的特点是一个服务器端应用能同时为多个客户端提供服务。而传统的服务器端 / 客户端模式通常为每一个客户端创建一个独立的线程,这种实现方式在客户端数量不多的情况下问题不大,但对于类似于铁路网络订票这样的瞬间客户数量巨大...

【Linux 命令】- more和less

more命令more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。 1.命令格式: more [-dlfpc...

IPv6地址的ping、telnet等操作

最近在研究https协议是如何传输数据的,用wireshark抓包分析,发现客户机和google网站在传输数据时使用了IPv6地址,于是相对ipv6地址测试下基本的功能。 ping功能,直接使用ping ipv6,如 telnet功能,也跟ipv4一样,telnet ipv6 而访问具体应用,如访问web服务器,则有一点区别,需要使用http://[i...