diff --git a/plugins-scripts/Nagios/DBD/Oracle/Server.pm b/plugins-scripts/Nagios/DBD/Oracle/Server.pm index ce5b75e..e6d8a7a 100644 --- a/plugins-scripts/Nagios/DBD/Oracle/Server.pm +++ b/plugins-scripts/Nagios/DBD/Oracle/Server.pm @@ -183,6 +183,10 @@ sub init { } } elsif ($params{mode} =~ /^server::connectiontime/) { $self->{connection_time} = $self->{tac} - $self->{tic}; + } elsif ($params{mode} =~ /^server::uptime/) { + $self->{uptime} = $self->{handle}->fetchrow_array(q{ + select trunc(1440*((sysdate - startup_time) - trunc(sysdate - startup_time))) from gv$instance + }); } elsif ($params{mode} =~ /^my::([^:.]+)/) { my $class = $1; my $loaderror = undef; @@ -256,6 +260,15 @@ sub nagios { $self->add_perfdata(sprintf "connection_time=%.4f;%d;%d", $self->{connection_time}, $self->{warningrange}, $self->{criticalrange}); + } elsif ($params{mode} =~ /^server::uptime/) { + $self->add_nagios( + $self->check_thresholds($self->{uptime}, "10:", "5:"), + sprintf "database is up since %.0f minute(s)", + $self->{uptime}, $self->{dbuser}||$self->{username}); + {no warnings 'numeric'; # to display thresholds in perfdata + $self->add_perfdata(sprintf "uptime=%.0f;%d;%d", + $self->{uptime}, + $self->{warningrange}, $self->{criticalrange})}; } elsif ($params{mode} =~ /^server::sqlruntime/) { $self->add_nagios( $self->check_thresholds($self->{runtime}, 1, 5), diff --git a/plugins-scripts/check_oracle_health.pl b/plugins-scripts/check_oracle_health.pl index b648582..678743a 100644 --- a/plugins-scripts/check_oracle_health.pl +++ b/plugins-scripts/check_oracle_health.pl @@ -36,6 +36,9 @@ package main; ['server::connectiontime', 'connection-time', undef, 'Time to connect to the server' ], + ['server::uptime', + 'uptime', undef, + 'Uptime for instance of the server' ], ['server::database::expiredpw', 'password-expiration', undef, 'Check the password expiry date for users' ],