需求

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

脚本特点

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

使用方式

创建文件夹(可以替换为你自己的,我这里就用我们生产环境的标准目录了)
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('\n')[:-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('\n')[:-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和Telnet/NC的监控脚本案例分析

    案例一:单纯地对某些ip进行ping监控 [root@test opt]# cat /opt/hosts_ip_list 192.168.10.10 192.168.10.11 192.168.10. ...

  2. Cacti添加Advance Ping监控模板

    Cacti脚本   1.Advance Ping 脚本及模板   注:要使用此模板,编译PHP时必须加上--enable-sockets选项来支持套接字.   1).功能:此模板用来监控一个TCP/U ...

  3. MySQL的keepalived高可用监控脚本

    MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...

  4. linux100day(day8)--shell监控脚本练习

    这是一个大型的监控脚本,方便于查看硬盘,网络,负载,内核版本等系统信息. 本脚本来自于github的atarallo,我对脚本做出了改编和一些注释,尽量让新手也能理解,这个脚本逻辑清楚简单,适合用于练 ...

  5. nginx响应时间监控脚本

    最近我们服务的使用方总是反应说我们接口超时,于是做了一个监控脚本,统计最近五分钟的响应情况,并对异常情况发送邮件报警. #!/bin/bash function define(){ ori_log_p ...

  6. Linux系统性能统计工具Sar和实时系统性能监控脚本

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  7. [工具开发] keepalived使用nagios监控脚本

    最近在做开发和办公环境的高可用,采用的是keepalived:keepalived基于Linux内核支持的LVS,既能实现高可用,又能实现负载均衡,非常实用. keepalived监控服务状态时可以用 ...

  8. 关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录

    最近,自己业务进行上线,上线后,需要考虑的是对各种服务进行监控,包括(httpd服务,mysqld服务等),现在想以mysqld服务为例总结下那种方式的脚本最为专业和合理: (1).根据mysql的端 ...

  9. MySQL慢日志监控脚本实例剖析

    公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...

随机推荐

  1. ORA-01017: invalid username/password; logon denied 解决方案

    在SQLPLUS窗口下进行用户登录,出现ORA-01017:invalid username/password:logon denied .如下图: 在网上找了很久,发现一个实用的解决方案,操作如下: ...

  2. 026_关于shell中的特殊变量$0 $n $* $@ $! $?

    一. $n:获取当前执行的shell脚本的第N个参数,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来like${10}. $*:获取当前shell的所有参数,将所有的命令行参数 ...

  3. php中相对路径和绝对路径如何使用(详解)

    目录 一.总结 一句话总结: 1.php中用用“/”表示根目录么? 2.什么符号表示当前目录(asp,jsp,php都一样)? 3.php中如何使用$_SERVER['DOCUMENT_ROOT']做 ...

  4. PHP魔术方法实例

    PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __cal ...

  5. web----ssl通信

    ssl通信 https://www.cnblogs.com/zhengah/p/5007753.html

  6. Hibernate之关联关系映射(一对一主键映射和一对一外键映射)

    1:Hibernate的关联关系映射的一对一外键映射: 1.1:第一首先引包,省略 1.2:第二创建实体类: 这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信 ...

  7. Hibernate的CRUD以及junit测试

    Hibernate的CRUD以及junit测试 1:第一步创建动态工程引包,省略. 2:第二步,创建数据库和数据表,省略. 3:第三步,创建实体类,如User.java,源码如下所示: 对于实体类,一 ...

  8. CDH搭建Hadoop集群(Centos7)

    一.说明 节点(CentOS7.5) Server  || Agent CPU node11 Server  || Agent 4G node12 Agent 2G node13 Agent 2G 二 ...

  9. python全栈开发day32-进程创建,进程同步,进程间的通信,进程池

    一.内容总结 1.进程创建 1) Process:两种创建一个新进程的方法: 1.实例化Process,通过args=(,)元组形式传参,2创建类继承Process,类初始化的时候传参数 2) p.j ...

  10. 6-12 油田 uva572

    DFS入门题 注意输入的\n要处理! #include<bits/stdc++.h> using namespace std; ][]; int n,m; ][]; void dfs(in ...