• Ping监控脚本


     

    需求

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

    脚本特点

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

    使用方式

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

    谢土豪

  • 相关阅读:
    MFC-窗口指针
    MFC-EditControl文本控件(多行输入)一行一行读取
    MFC-文件对话框
    MFC-ToolBar工具栏
    MFC-CMenu菜单
    MFC-访问对话框控件的七种方法
    CC++:scanf的用法
    C/C++:printf的用法
    C/C++:创建第一个程序helloworld!
    NX二次开发-NX客户机与服务器FTP上传下载文件
  • 原文地址:https://www.cnblogs.com/kerwinC/p/8075723.html
Copyright © 2020-2023  润新知