This commit is contained in:
parent
cb30192e96
commit
c7ef07d52c
|
@ -35,12 +35,12 @@ sub new {
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$self->{version} = '1.0';
|
$self->{version} = '1.0';
|
||||||
$options{options}->add_options(arguments =>
|
$options{options}->add_options(arguments => {
|
||||||
{
|
|
||||||
"warning:s" => { name => 'warning' },
|
"warning:s" => { name => 'warning' },
|
||||||
"critical:s" => { name => 'critical' },
|
"critical:s" => { name => 'critical' },
|
||||||
"force-oid:s" => { name => 'force_oid' },
|
"force-oid:s" => { name => 'force_oid' },
|
||||||
"check-overload" => { name => 'check_overload' },
|
"check-overload" => { name => 'check_overload' },
|
||||||
|
"reboot-window:s" => { name => 'reboot_window', default => 5000 },
|
||||||
});
|
});
|
||||||
|
|
||||||
$self->{statefile_cache} = centreon::plugins::statefile->new(%options);
|
$self->{statefile_cache} = centreon::plugins::statefile->new(%options);
|
||||||
|
@ -69,25 +69,25 @@ sub check_overload {
|
||||||
return $options{timeticks} if (!defined($self->{option_results}->{check_overload}));
|
return $options{timeticks} if (!defined($self->{option_results}->{check_overload}));
|
||||||
|
|
||||||
my $current_time = floor(time() * 100);
|
my $current_time = floor(time() * 100);
|
||||||
$self->{new_datas} = { last_time => $current_time, uptime => $options{timeticks}, overload => 0 };
|
$self->{new_datas} = { last_time => $current_time, uptime => $options{timeticks} };
|
||||||
$self->{statefile_cache}->read(statefile => "cache_" . $self->{snmp}->get_hostname() . '_' . $self->{snmp}->get_port() . '_' . $self->{mode});
|
$self->{statefile_cache}->read(statefile => "cache_" . $self->{snmp}->get_hostname() . '_' . $self->{snmp}->get_port() . '_' . $self->{mode});
|
||||||
my $old_uptime = $self->{statefile_cache}->get(name => 'uptime');
|
my $old_uptime = $self->{statefile_cache}->get(name => 'uptime');
|
||||||
my $last_time = $self->{statefile_cache}->get(name => 'last_time');
|
my $last_time = $self->{statefile_cache}->get(name => 'last_time');
|
||||||
my $overload = $self->{statefile_cache}->get(name => 'overload');
|
$self->{new_datas}->{overload} = $self->{statefile_cache}->get(name => 'overload') || 0;
|
||||||
|
|
||||||
if (defined($old_uptime) && $old_uptime < $current_time) {
|
if (defined($old_uptime) && $options{timeticks} < $old_uptime) {
|
||||||
my $diff_time = $current_time - $last_time;
|
my $diff_time = $current_time - $last_time;
|
||||||
my $overflow = ($old_uptime + $diff_time) % 4294967296;
|
my $overflow = ($old_uptime + $diff_time) % 4294967296;
|
||||||
my $division = ($old_uptime + $diff_time) / 4294967296;
|
my $division = ($old_uptime + $diff_time) / 4294967296;
|
||||||
if ($division >= 1 &&
|
if ($division >= 1 &&
|
||||||
$overflow >= ($options{timeticks} - 5000) &&
|
$overflow >= ($options{timeticks} - $self->{option_results}->{reboot_window}) &&
|
||||||
$overflow <= ($options{timeticks} + 5000)) {
|
$overflow <= ($options{timeticks} + $self->{option_results}->{reboot_window})) {
|
||||||
$overload++;
|
$self->{new_datas}->{overload}++;
|
||||||
|
} else {
|
||||||
|
$self->{new_datas}->{overload} = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$options{timeticks} += ($overload * 4294967296);
|
|
||||||
}
|
}
|
||||||
$self->{new_datas}->{overload} = $overload if (defined($overload));
|
$options{timeticks} += ($self->{new_datas}->{overload} * 4294967296);
|
||||||
|
|
||||||
$self->{statefile_cache}->write(data => $self->{new_datas});
|
$self->{statefile_cache}->write(data => $self->{new_datas});
|
||||||
return $options{timeticks};
|
return $options{timeticks};
|
||||||
|
@ -161,6 +161,11 @@ Can choose your oid (numeric format only).
|
||||||
Uptime counter limit is 4294967296 and overflow.
|
Uptime counter limit is 4294967296 and overflow.
|
||||||
With that option, we manage the counter going back. But there is a few chance we can miss a reboot.
|
With that option, we manage the counter going back. But there is a few chance we can miss a reboot.
|
||||||
|
|
||||||
|
=item B<--reboot-window>
|
||||||
|
|
||||||
|
To be used with check-overload option. Time in milliseconds (Default: 5000)
|
||||||
|
You increase the chance of not missing a reboot if you decrease that value.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
Loading…
Reference in New Issue