|
Server : Apache/2.2.2 (Fedora) System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686 User : apache ( 48) PHP Version : 5.2.9 Disable Function : NONE Directory : /usr/local/src/munin-1.2.6/node/node.d/ |
Upload File : |
#!@@PERL@@ -w
# -*- perl -*-
#
# Plugin to monitor NTP statistics
#
# Parameters understood:
#
# config (required)
# autoconf (optional - used by munin-node-configure)
# suggest (optional - used by munin-node-configure)
#
# Config variables:
#
# lowercase - lowercase hostnames after lookup
#
# Magic markers - optional - used by installation scripts and
# munin-node-configure:
#
# This plugin is now "manual" because it's not very useful, it
# is imposible to determine which peer is used as "master". There
# is a ntp_offset plugin that reports a more useful value.
#
#%# family=manual
#%# capabilities=autoconf suggest
#
use strict;
use Net::hostent;
use Socket;
if ($ARGV[0] and $ARGV[0] eq "autoconf") {
`ntpq -c help >/dev/null 2>/dev/null`;
if ($? eq "0") {
if (`ntpq -c "hostnames no" -c peers | wc -l` > 0) {
print "yes\n";
exit 0;
} else {
print "no (unable to list peers)\n";
exit 1;
}
} else {
print "no (ntpq not found)\n";
exit 1;
}
}
if ($ARGV[0] and $ARGV[0] eq "suggest") {
my @lines = `ntpq -c "hostnames no" -c peers`;
foreach (@lines) {
next unless /^.(\d+\.\d+\.\d+\.\d+)/;
next if /^.224\.0\.1\.1/;
my $addr = $1;
my $name;
if( my $lcid= /^.127\.127\.1\.(\d+)/) {
$lcid = $lcid - 1;
$name = "LOCAL($lcid)";
} else {
$name = gethostbyaddr(inet_aton($addr));
$name = defined $name ? $name->name : $addr;
}
$name = lc $name if exists $ENV{"lowercase"};
$name =~ s/[\.\-()]/_/g;
print $name, "\n";
}
exit 0;
}
$0 =~ /ntp_(.+)*$/;
my $name = $1;
exit 2 unless defined $name;
if ($ARGV[0] and $ARGV[0] eq "config") {
my @lines = `ntpq -c "hostnames no" -c peers`;
my $host;
foreach (@lines) {
next unless /^.(\d+\.\d+\.\d+\.\d+)/;
next if /^.224\.0\.1\.1/;
my $addr = $1;
my $host;
if( my $lcid= /^.127\.127\.1\.(\d+)/) {
$lcid = $lcid - 1;
$host = "LOCAL($lcid)"
} else {
$host = gethostbyaddr(inet_aton($addr));
$host = defined $host ? $host->name : $addr;
}
$host = lc $host if exists $ENV{"lowercase"};
my $host_ = $host;
$host_ =~ s/[\.\-()]/_/g;
next unless $host_ eq $name;
print "graph_title NTP statistics for peer $host\n";
}
print "graph_args --base 1000 --vertical-label seconds --lower-limit 0\n";
print "graph_category time\n";
print "delay.label Delay\n";
print "delay.draw LINE2\n";
print "delay.cdef delay,1000,/\n";
print "offset.label Offset\n";
print "offset.draw LINE2\n";
print "offset.cdef offset,1000,/\n";
print "jitter.label Jitter\n";
print "jitter.draw LINE2\n";
print "jitter.cdef jitter,1000,/\n";
exit 0;
}
my @lines = `ntpq -c "hostnames no" -c peers`;
foreach (@lines) {
next unless /^.(\d+\.\d+\.\d+\.\d+)/;
next if /^.224\.0\.1\.1/;
my $addr = $1;
my $host;
if( my $lcid= /^.127\.127\.1\.(\d+)/) {
$lcid = $lcid - 1;
$host = "LOCAL($lcid)"
} else {
$host = gethostbyaddr(inet_aton($addr));
$host = defined $host ? $host->name : $addr;
}
$host = lc $host if exists $ENV{"lowercase"};
$host =~ s/[\.\-()]/_/g;
next unless $host eq $name;
my @F = split;
print <<"EOT";
delay.value $F[7]
offset.value $F[8]
jitter.value $F[9]
EOT
}
exit 0;
# vim:syntax=perl