diff --git a/files/nrpe/check_corosync_rings b/files/nrpe/check_corosync_rings index 860153a..b5e4849 100755 --- a/files/nrpe/check_corosync_rings +++ b/files/nrpe/check_corosync_rings @@ -20,10 +20,11 @@ # Authors: Phil Garner - phil@sysnix.com & Peter Mottram peter@sysnix.com # # v0.1 05/01/2011 -# v0.2 31/10/2011 - additional crit when closing the file handle and additional +# v0.2 31/10/2011 - additional crit when closing the file handle and additional # comments added # -# NOTE:- Requires Perl 5.8 or higher & the Perl Module Nagios::Plugin +# NOTE:- Requires Perl 5.8 or higher & either the Perl Module Nagios::Plugin +# or Monitoring::Plugin, whichever is available for your system. # Nagios user will need sudo acces - suggest adding line below to # sudoers. # nagios ALL=(ALL) NOPASSWD: /usr/sbin/corosync-cfgtool -s @@ -35,7 +36,23 @@ use warnings; use strict; -use Nagios::Plugin; + +my $plugin_provider=''; + +my $rc = eval { + require Monitoring::Plugin; + Monitoring::Plugin->import(); + 1; +}; + +if ($rc) +{ + $plugin_provider = 'Monitoring'; +} else{ + require Nagios::Plugin; + Nagios::Plugin->import(); + $plugin_provider = 'Nagios'; +} # Lines below may need changing if corosync-cfgtool or sudo installed in a # diffrent location. @@ -44,15 +61,28 @@ my $sudo = '/usr/bin/sudo'; my $cfgtool = '/usr/sbin/corosync-cfgtool -s'; # Now set up the plugin -my $np = Nagios::Plugin->new( - shortname => 'check_cororings', - version => '0.2', - usage => "Usage: %s \n\t\t--help for help\n", - license => "License - GPL v3 see code for more details", - url => "http://www.sysnix.com", - blurb => -"\tNagios plugin that checks the status of corosync rings, requires Perl \t5.8+ and CPAN modules Nagios::Plugin.", -); +my $np; +if ($plugin_provider eq 'Monitoring') { + $np = Monitoring::Plugin->new( + shortname => 'check_cororings', + version => '0.2', + usage => "Usage: %s \n\t\t--help for help\n", + license => "License - GPL v3 see code for more details", + url => "http://www.sysnix.com", + blurb => + "\tMonitoring plugin that checks the status of corosync rings, requires Perl \t5.8+ and CPAN modules Monitoring::Plugin.", + ); +} else { + $np = Nagios::Plugin->new( + shortname => 'check_cororings', + version => '0.2', + usage => "Usage: %s \n\t\t--help for help\n", + license => "License - GPL v3 see code for more details", + url => "http://www.sysnix.com", + blurb => + "\tNagios plugin that checks the status of corosync rings, requires Perl \t5.8+ and CPAN modules Nagios::Plugin.", + ); +} #Args $np->add_arg( @@ -71,29 +101,29 @@ my $rings = $np->opts->rings; # Run cfgtools spin through output and get info needed open( $fh, "$sudo $cfgtool |" ) - or $np->nagios_exit( CRITICAL, "Running corosync-cfgtool failed" ); + or $np->nagios_exit("CRITICAL", "Running corosync-cfgtool failed" ); foreach my $line (<$fh>) { if ( $line =~ m/status\s*=\s*(\S.+)/ ) { my $status = $1; if ( $status =~ m/^ring (\d+) active with no faults/ ) { - $np->add_message( OK, "ring $1 OK" ); + $np->add_message("OK", "ring $1 OK" ); } else { - $np->add_message( CRITICAL, $status ); + $np->add_message("CRITICAL", $status ); } $found++; } } -close($fh) or $np->nagios_exit( CRITICAL, "Running corosync-cfgtool failed" ); +close($fh) or $np->nagios_exit("CRITICAL", "Running corosync-cfgtool failed" ); # Check we found some rings and apply -r arg if needed if ( $found == 0 ) { - $np->nagios_exit( CRITICAL, "No Rings Found" ); + $np->nagios_exit("CRITICAL", "No Rings Found" ); } elsif ( defined $rings && $rings != $found ) { - $np->nagios_exit( CRITICAL, "Expected $rings rings but found $found" ); + $np->nagios_exit("CRITICAL", "Expected $rings rings but found $found" ); } $np->nagios_exit( $np->check_messages() ); diff --git a/files/nrpe/check_crm b/files/nrpe/check_crm index 4f93462..a112736 100755 --- a/files/nrpe/check_crm +++ b/files/nrpe/check_crm @@ -28,11 +28,12 @@ # v0.6 14/03/2013 - Change from \w+ to \S+ in stopped check to cope with # Servers that have non word charachters in. Suggested by # Igal Baevsky. -# v0.7 01/09/2013 - In testing as still not fully tested. Adds optional -# constraints check (Boris Wesslowski). Adds fail count +# v0.7 01/09/2013 - In testing as still not fully tested. Adds optional +# constraints check (Boris Wesslowski). Adds fail count # threshold ( Zoran Bosnjak & Marko Hrastovec ) # -# NOTES: Requires Perl 5.8 or higher & the Perl Module Nagios::Plugin +# NOTE:- Requires Perl 5.8 or higher & either the Perl Module Nagios::Plugin +# or Monitoring::Plugin, whichever is available for your system. # Nagios user will need sudo acces - suggest adding line below to # sudoers # nagios ALL=(ALL) NOPASSWD: /usr/sbin/crm_mon -1 -r -f @@ -47,7 +48,24 @@ use warnings; use strict; -use Nagios::Plugin; + +my $plugin_provider=''; + +my $rc = eval { + require Monitoring::Plugin; + Monitoring::Plugin->import(); + 1; +}; + +if ($rc) +{ + $plugin_provider = 'Monitoring'; +} else{ + require Nagios::Plugin; + Nagios::Plugin->import(); + $plugin_provider = 'Nagios'; +} + # Lines below may need changing if crm_mon or sudo installed in a # different location. @@ -56,11 +74,20 @@ my $sudo = '/usr/bin/sudo'; my $crm_mon = '/usr/sbin/crm_mon -1 -r -f'; my $crm_configure_show = '/usr/sbin/crm configure show'; -my $np = Nagios::Plugin->new( - shortname => 'check_crm', - version => '0.7', - usage => "Usage: %s \n\t\t--help for help\n", -); +my $np; +if ($plugin_provider eq 'Monitoring') { + $np = Monitoring::Plugin->new( + shortname => 'check_crm', + version => '0.7', + usage => "Usage: %s \n\t\t--help for help\n", + ); +} else { + $np = Nagios::Plugin->new( + shortname => 'check_crm', + version => '0.7', + usage => "Usage: %s \n\t\t--help for help\n", + ); +} $np->add_arg( spec => 'warning|w', @@ -100,14 +127,14 @@ $warn_or_crit = 'WARNING' if $np->opts->warning; my $fh; open( $fh, "$sudo $crm_mon |" ) - or $np->nagios_exit( CRITICAL, "Running $sudo $crm_mon has failed" ); + or $np->nagios_exit("CRITICAL", "Running $sudo $crm_mon has failed" ); foreach my $line (<$fh>) { if ( $line =~ m/Connection to cluster failed\:(.*)/i ) { # Check Cluster connected - $np->nagios_exit( CRITICAL, "Connection to cluster FAILED: $1" ); + $np->nagios_exit("CRITICAL", "Connection to cluster FAILED: $1" ); } elsif ( $line =~ m/Current DC:/ ) { @@ -116,10 +143,10 @@ foreach my $line (<$fh>) { # Assume cluster is OK - we only add warn/crit after here - $np->add_message( OK, "Cluster OK" ); + $np->add_message("OK", "Cluster OK" ); } else { - $np->add_message( CRITICAL, "No Quorum" ); + $np->add_message("CRITICAL", "No Quorum" ); } } elsif ( $line =~ m/^offline:\s*\[\s*(\S.*?)\s*\]/i ) { @@ -149,25 +176,25 @@ foreach my $line (<$fh>) { elsif ( $line =~ m/^Failed actions\:/ ) { # Check Failed Actions - $np->add_message( CRITICAL, + $np->add_message("CRITICAL", ": FAILED actions detected or not cleaned up" ); } elsif ( $line =~ m/\s*(\S+?)\s+ \(.*\)\:\s+\w+\s+\w+\s+\(unmanaged\)\s+/i ) { # Check Unmanaged - $np->add_message( CRITICAL, ": $1 unmanaged FAILED" ); + $np->add_message("CRITICAL", ": $1 unmanaged FAILED" ); } elsif ( $line =~ m/\s*(\S+?)\s+ \(.*\)\:\s+not installed/i ) { # Check for errors - $np->add_message( CRITICAL, ": $1 not installed" ); + $np->add_message("CRITICAL", ": $1 not installed" ); } elsif ( $line =~ m/\s*(\S+?):.*fail-count=(\d+)/i ) { if ( $2 >= $np->opts->failcount ) { # Check for resource Fail count (suggested by Vadym Chepkov) - $np->add_message( WARNING, ": $1 failure detected, fail-count=$2" ); + $np->add_message("WARNING", ": $1 failure detected, fail-count=$2" ); } } } @@ -178,23 +205,23 @@ if ( scalar @standby > 0 && !$np->opts->standbyignore ) { ": " . join( ', ', @standby ) . " in Standby" ); } -close($fh) or $np->nagios_exit( CRITICAL, "Running $crm_mon FAILED" ); +close($fh) or $np->nagios_exit("CRITICAL", "Running $crm_mon FAILED" ); # if -c flag set check configuration for constraints if ($ConstraintsFlag) { open( $fh, "$sudo $crm_configure_show|" ) - or $np->nagios_exit( CRITICAL, + or $np->nagios_exit("CRITICAL", "Running $sudo $crm_configure_show has failed" ); foreach my $line (<$fh>) { if ( $line =~ m/location cli-(prefer|standby)-\S+\s+(\S+)/ ) { - $np->add_message( WARNING, + $np->add_message("WARNING", ": $2 blocking location constraint detected" ); } } close($fh) - or $np->nagios_exit( CRITICAL, "Running $crm_configure_show FAILED" ); + or $np->nagios_exit("CRITICAL", "Running $crm_configure_show FAILED" ); } $np->nagios_exit( $np->check_messages() ); diff --git a/hooks/hooks.py b/hooks/hooks.py index 0837af5..40aa8fd 100755 --- a/hooks/hooks.py +++ b/hooks/hooks.py @@ -105,7 +105,8 @@ COROSYNC_CONF_FILES = [ ] PACKAGES = ['crmsh', 'corosync', 'pacemaker', 'python-netaddr', 'ipmitool', - 'libnagios-plugin-perl', 'python3-requests-oauthlib'] + 'libmonitoring-plugin-perl', 'python3-requests-oauthlib'] + SUPPORTED_TRANSPORTS = ['udp', 'udpu', 'multicast', 'unicast'] DEPRECATED_TRANSPORT_VALUES = {"multicast": "udp", "unicast": "udpu"} @@ -113,9 +114,10 @@ DEPRECATED_TRANSPORT_VALUES = {"multicast": "udp", "unicast": "udpu"} @hooks.hook('install.real') def install(): ubuntu_release = lsb_release()['DISTRIB_CODENAME'].lower() - if CompareHostReleases(ubuntu_release) >= 'zesty': - PACKAGES.remove('libnagios-plugin-perl') - PACKAGES.append('libnagios-object-perl') + # use libnagios on anything older than Xenial + if CompareHostReleases(ubuntu_release) < 'xenial': + PACKAGES.remove('libmonitoring-plugin-perl') + PACKAGES.append('libnagios-plugin-perl') # NOTE(dosaboy): we currently disallow upgrades due to bug #1382842. This # should be removed once the pacemaker package is fixed. status_set('maintenance', 'Installing apt packages') @@ -447,6 +449,7 @@ def stop(): def update_nrpe_config(): scripts_src = os.path.join(os.environ["CHARM_DIR"], "files", "nrpe") + scripts_dst = "/usr/local/lib/nagios/plugins" if not os.path.exists(scripts_dst): os.makedirs(scripts_dst)