diff options
Diffstat (limited to 'contrib/check_nagios.pl')
-rw-r--r-- | contrib/check_nagios.pl | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/contrib/check_nagios.pl b/contrib/check_nagios.pl new file mode 100644 index 0000000..7d15d4d --- /dev/null +++ b/contrib/check_nagios.pl | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/usr/bin/perl | ||
2 | # denao - denao@uol.com.br - Systems Engineering | ||
3 | # Universo Online - http://www.uol.com.br | ||
4 | use DBI; | ||
5 | use Time::Local; | ||
6 | |||
7 | my $t_lambuja = 5; # (expire_minutes) | ||
8 | my $databasename = ""; # The name of nagios database (i.e.: nagios) | ||
9 | my $table = "programstatus"; | ||
10 | my $where = "localhost"; # The machine where the database | ||
11 | my $port = "3306"; | ||
12 | my $base = "DBI:mysql:$databasename:$where:$port"; | ||
13 | my $user = ""; # the user to connect to the database | ||
14 | # (needs permission to "select at programstatus table only" | ||
15 | my $password = ""; # the password (if any) | ||
16 | my %results; | ||
17 | my @fields = qw( last_update ); | ||
18 | my $dbh = DBI->connect($base,$user,$password); | ||
19 | my $fields = join(', ', @fields); | ||
20 | my $query = "SELECT $fields FROM $table"; | ||
21 | |||
22 | my $sth = $dbh->prepare($query); | ||
23 | $sth->execute(); | ||
24 | |||
25 | @results{@fields} = (); | ||
26 | $sth->bind_columns(map { \$results{$_} } @fields); | ||
27 | |||
28 | $sth->fetch(); | ||
29 | $sth->finish(); | ||
30 | $dbh->disconnect(); | ||
31 | |||
32 | check_update(); | ||
33 | |||
34 | sub check_update { | ||
35 | ($yea,$mon,$day,$hou,$min,$sec)=($results{last_update}=~/(\d+)\-(\d+)\-(\d+)\s(\d+)\:(\d+)\:(\d+)/); | ||
36 | ($sec_now, $min_now, $hou_now, $day_now, $mon_now, $yea_now) = (localtime(time))[0,1,2,3,4,5]; | ||
37 | $mon_now+=1; $yea_now+=1900; | ||
38 | $unixdate=timelocal($sec,$min,$hou,$day,$mon,$yea); | ||
39 | $unixdate_now=timelocal($sec_now,$min_now,$hou_now,$day_now,$mon_now,$yea_now); | ||
40 | if (scalar($unixdate_now - $unixdate) > scalar($t_lambuja * 60)) { | ||
41 | print "Nagios problem: nagios is down, for at least " . scalar($t_lambuja) . " minutes.\n"; | ||
42 | exit(1); | ||
43 | } else { | ||
44 | print "Nagios ok: status data updated " . scalar($unixdate_now - $unixdate) . " seconds ago\n"; | ||
45 | exit(0); | ||
46 | } | ||
47 | } | ||
48 | |||