注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

监控ping延时的statsd脚本,类似smokeping  

2014-09-12 14:10:04|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

https://github.com/gmd20/ping_latency_statsd/tree/master



    

#!/usr/bin/perl -w

use strict;
use Net::Ping;
use IO::Socket;
use Time::HiRes qw( usleep gettimeofday nanosleep clock_gettime);

my $statsd_host = "192.168.30.60";
my $statsd_port = 8125;
my $ping_dest_ip = "192.168.30.61";
my $ping_interval = 1000000; #microseconds

my $socket = IO::Socket::INET->new( PeerPort => $statsd_port,
PeerAddr => $statsd_host,
Type => SOCK_DGRAM,
Proto => 'udp')
or die "Socket could not be created, failed with error $!\n";

my $p = Net::Ping->new("icmp");
$p->hires();

my $hostname = `hostname`;
chomp($hostname) ;
$hostname =~ s/ //g;
my $metric_name = $hostname . ".ping_latency";

while (1) {
my ($ret, $duration, $ip) = $p->ping($ping_dest_ip, 5.5);
# printf("$host [ip: $ip] is alive (packet return time: %.4f ms)\n",
# 1000 * $duration) if $ret;
if (not $ret) {
$duration = 100000; # timeout
}
$duration = $duration *1000;
# https://github.com/etsy/statsd/blob/master/docs/metric_types.md
my $packet = $metric_name . sprintf (":%.2f|ms", $duration);
# print "$packet\n";
$socket->send($packet);
usleep($ping_interval);
}

$p->close();
$socket->close();





  评论这张
 
阅读(550)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017