NAGIOS – check ovh service expiration

Kwiecień 9th, 2013 by Sławek

Jako że mam w OVH kilka mniej lub bardziej ważnych usług, a maile informujące o tym że dana usługa wygasa potrafią gdzieś umknąć :) postanowiłem na szybko napisać checka do nagios-a, który będzie mi sprawdzał czy aby interesująca mnie usługa właśnie nie wygasa.

Skrypt dzieli usługi na dwa typy. Pierwszy typ to „usługa” czyli np. serwer dedykowany, przestrzeń dyskowa NAS, adres IP, itp. – wszystko tutaj jest monitorowane z automatu poza domenami, nie trzeba niczego konfigurować. Drugi typ do domeny – tutaj musimy zdefiniować jakie domeny chcemy monitorować.

Skrypcik można pobrać tutaj

#!/usr/bin/perl -w
 
#
# @author Slawomir Cichon
# @link http://slawekcichon.pl/
#
 
use POSIX qw/strftime/;
my $currdate = int(strftime("%Y%m%d", localtime));
my $crit = "";
my $warn = "";
use Data::Dumper;
use SOAP::Lite
 
on_fault => sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status; };
 
my $soap = SOAP::Lite  -> uri('https://soapi.ovh.com/manager')-> proxy('https://www.ovh.com:1664');
my @domains = ("test-domain1.pl", "test-domain2.pl", "test-domain3.pl");
my $result = $soap->call( 'login' => ('XX123456-ovh', 'PASSWORD', 'pl', 0) );
my $session = $result->result();
my $expired = 0;
$result = $soap->call( 'billingGetReferencesToExpired' => ($session, '2') );
my @return = $result->result();
 
foreach my $elem (@{$return[0]}){
 if ( $elem->{'type'} ne 'domain'  ){
        my $expired = $elem->{'expired'};
        $expired =~ s/\-//g;
        $expired = substr( $expired ,0,8 );
        $expired = int($expired);
        if ( $expired le $currdate ) {
                        $crit .= "Service ". $elem->{'name'}. "[".$elem->{'type'}."] expired ".$elem->{'expired'}." \n";
                } else {
                        $warn .= "Service ".  $elem->{'name'}. "[".$elem->{'type'}."] expires ".$elem->{'expired'}." \n";
        }
 } else {
        foreach $domain(@domains){
                my $expired = $elem->{'expired'};
                $expired =~ s/\-//g;
                $expired = substr( $expired ,0,8 );
                $expired = int($expired);
                if ($domain eq $elem->{'name'}){
                        if ( $expired le $currdate ) {
                                $crit .= "Important domain name ".$elem->{'name'} ."expired ".$elem->{'expired'}." \n";
                        } else {
                                $warn .= "Important domain name ".$elem->{'name'} ." expires ".$elem->{'expired'}." \n";
                        }
                }
        }
 }
}
if ( $crit ne '' ){
 print $crit;
 if ( $warn ne ''){
  print $warn;
 }
 exit 2;
}elsif( $warn ne '' ) {
 print $warn;
 exit 1;
}
print "OK";
print $crit ." \n". $warn;
$soap->call( 'logout' => ( $session ) );
Article Global Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Eli Pets

Zostaw komentarz

*