diff --git a/centreon-plugins/hardware/ats/apc/snmp/mode/ntp.pm b/centreon-plugins/hardware/ats/apc/snmp/mode/ntp.pm new file mode 100644 index 000000000..40dfe3456 --- /dev/null +++ b/centreon-plugins/hardware/ats/apc/snmp/mode/ntp.pm @@ -0,0 +1,75 @@ +# +# Copyright 2021 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package hardware::ats::apc::snmp::mode::ntp; + +use base qw(snmp_standard::mode::ntp); + +use strict; +use warnings; +use Date::Parse; + +sub get_target_time { + my ($self, %options) = @_; + + my $oid_mconfigClockDate = '.1.3.6.1.4.1.318.2.1.6.1.0'; + my $oid_mconfigClockTime = '.1.3.6.1.4.1.318.2.1.6.2.0'; + my $snmp_result = $options{snmp}->get_leef(oids => [ $oid_mconfigClockDate, $oid_mconfigClockTime ], nothing_quit => 1); + + my $epoch = Date::Parse::str2time($snmp_result->{$oid_mconfigClockDate} . ' ' . $snmp_result->{$oid_mconfigClockTime}); + return $self->get_from_epoch(date => $epoch); +} + +1; + +__END__ + +=head1 MODE + +Check time offset of server with ntp server. Use local time if ntp-host option is not set. +SNMP gives a date with second precision (no milliseconds). Time precision is not very accurate. +Use threshold with (+-) 2 seconds offset (minimum). + +=over 8 + +=item B<--warning-offset> + +Time offset warning threshold (in seconds). + +=item B<--critical-offset> + +Time offset critical Threshold (in seconds). + +=item B<--ntp-hostname> + +Set the ntp hostname (if not set, localtime is used). + +=item B<--ntp-port> + +Set the ntp port (Default: 123). + +=item B<--timezone> + +Set the timezone of distant server. For Windows, you need to set it. +Can use format: 'Europe/London' or '+0100'. + +=back + +=cut diff --git a/centreon-plugins/hardware/ats/apc/snmp/plugin.pm b/centreon-plugins/hardware/ats/apc/snmp/plugin.pm index 34573f10f..eed151d97 100644 --- a/centreon-plugins/hardware/ats/apc/snmp/plugin.pm +++ b/centreon-plugins/hardware/ats/apc/snmp/plugin.pm @@ -28,13 +28,15 @@ sub new { my ($class, %options) = @_; my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - + $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'device-status' => 'hardware::ats::apc::snmp::mode::devicestatus', - 'input-lines' => 'hardware::ats::apc::snmp::mode::inputlines', - 'output-lines' => 'hardware::ats::apc::snmp::mode::outputlines', - ); + $self->{modes} = { + 'device-status' => 'hardware::ats::apc::snmp::mode::devicestatus', + 'input-lines' => 'hardware::ats::apc::snmp::mode::inputlines', + 'output-lines' => 'hardware::ats::apc::snmp::mode::outputlines', + 'time' => 'hardware::ats::apc::snmp::mode::ntp', + 'uptime' => 'snmp_standard::mode::uptime' + }; return $self; } diff --git a/centreon-plugins/hardware/pdu/apc/snmp/mode/ntp.pm b/centreon-plugins/hardware/pdu/apc/snmp/mode/ntp.pm new file mode 100644 index 000000000..25279ca7b --- /dev/null +++ b/centreon-plugins/hardware/pdu/apc/snmp/mode/ntp.pm @@ -0,0 +1,75 @@ +# +# Copyright 2021 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package hardware::pdu::apc::snmp::mode::ntp; + +use base qw(snmp_standard::mode::ntp); + +use strict; +use warnings; +use Date::Parse; + +sub get_target_time { + my ($self, %options) = @_; + + my $oid_mconfigClockDate = '.1.3.6.1.4.1.318.2.1.6.1.0'; + my $oid_mconfigClockTime = '.1.3.6.1.4.1.318.2.1.6.2.0'; + my $snmp_result = $options{snmp}->get_leef(oids => [ $oid_mconfigClockDate, $oid_mconfigClockTime ], nothing_quit => 1); + + my $epoch = Date::Parse::str2time($snmp_result->{$oid_mconfigClockDate} . ' ' . $snmp_result->{$oid_mconfigClockTime}); + return $self->get_from_epoch(date => $epoch); +} + +1; + +__END__ + +=head1 MODE + +Check time offset of server with ntp server. Use local time if ntp-host option is not set. +SNMP gives a date with second precision (no milliseconds). Time precision is not very accurate. +Use threshold with (+-) 2 seconds offset (minimum). + +=over 8 + +=item B<--warning-offset> + +Time offset warning threshold (in seconds). + +=item B<--critical-offset> + +Time offset critical Threshold (in seconds). + +=item B<--ntp-hostname> + +Set the ntp hostname (if not set, localtime is used). + +=item B<--ntp-port> + +Set the ntp port (Default: 123). + +=item B<--timezone> + +Set the timezone of distant server. For Windows, you need to set it. +Can use format: 'Europe/London' or '+0100'. + +=back + +=cut diff --git a/centreon-plugins/hardware/pdu/apc/snmp/plugin.pm b/centreon-plugins/hardware/pdu/apc/snmp/plugin.pm index d8f2a1b20..cf1e25de0 100644 --- a/centreon-plugins/hardware/pdu/apc/snmp/plugin.pm +++ b/centreon-plugins/hardware/pdu/apc/snmp/plugin.pm @@ -30,11 +30,13 @@ sub new { bless $self, $class; $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'load' => 'hardware::pdu::apc::snmp::mode::load', - 'hardware' => 'hardware::pdu::apc::snmp::mode::hardware', - 'outlet' => 'hardware::pdu::apc::snmp::mode::outlet', - ); + $self->{modes} = { + 'load' => 'hardware::pdu::apc::snmp::mode::load', + 'hardware' => 'hardware::pdu::apc::snmp::mode::hardware', + 'outlet' => 'hardware::pdu::apc::snmp::mode::outlet', + 'time' => 'hardware::pdu::apc::snmp::mode::ntp', + 'uptime' => 'snmp_standard::mode::uptime' + }; return $self; } diff --git a/centreon-plugins/hardware/ups/apc/snmp/mode/ntp.pm b/centreon-plugins/hardware/ups/apc/snmp/mode/ntp.pm new file mode 100644 index 000000000..bb9a38820 --- /dev/null +++ b/centreon-plugins/hardware/ups/apc/snmp/mode/ntp.pm @@ -0,0 +1,75 @@ +# +# Copyright 2021 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package hardware::ups::apc::snmp::mode::ntp; + +use base qw(snmp_standard::mode::ntp); + +use strict; +use warnings; +use Date::Parse; + +sub get_target_time { + my ($self, %options) = @_; + + my $oid_mconfigClockDate = '.1.3.6.1.4.1.318.2.1.6.1.0'; + my $oid_mconfigClockTime = '.1.3.6.1.4.1.318.2.1.6.2.0'; + my $snmp_result = $options{snmp}->get_leef(oids => [ $oid_mconfigClockDate, $oid_mconfigClockTime ], nothing_quit => 1); + + my $epoch = Date::Parse::str2time($snmp_result->{$oid_mconfigClockDate} . ' ' . $snmp_result->{$oid_mconfigClockTime}); + return $self->get_from_epoch(date => $epoch); +} + +1; + +__END__ + +=head1 MODE + +Check time offset of server with ntp server. Use local time if ntp-host option is not set. +SNMP gives a date with second precision (no milliseconds). Time precision is not very accurate. +Use threshold with (+-) 2 seconds offset (minimum). + +=over 8 + +=item B<--warning-offset> + +Time offset warning threshold (in seconds). + +=item B<--critical-offset> + +Time offset critical Threshold (in seconds). + +=item B<--ntp-hostname> + +Set the ntp hostname (if not set, localtime is used). + +=item B<--ntp-port> + +Set the ntp port (Default: 123). + +=item B<--timezone> + +Set the timezone of distant server. For Windows, you need to set it. +Can use format: 'Europe/London' or '+0100'. + +=back + +=cut diff --git a/centreon-plugins/hardware/ups/apc/snmp/plugin.pm b/centreon-plugins/hardware/ups/apc/snmp/plugin.pm index 54abc9e79..1a2ec907a 100644 --- a/centreon-plugins/hardware/ups/apc/snmp/plugin.pm +++ b/centreon-plugins/hardware/ups/apc/snmp/plugin.pm @@ -26,14 +26,16 @@ sub new { my ($class, %options) = @_; my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - + $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'battery-status' => 'hardware::ups::apc::snmp::mode::batterystatus', - 'input-lines' => 'hardware::ups::apc::snmp::mode::inputlines', - 'output-lines' => 'hardware::ups::apc::snmp::mode::outputlines', - 'sensors' => 'hardware::ups::apc::snmp::mode::sensors', - ); + $self->{modes} = { + 'battery-status' => 'hardware::ups::apc::snmp::mode::batterystatus', + 'input-lines' => 'hardware::ups::apc::snmp::mode::inputlines', + 'output-lines' => 'hardware::ups::apc::snmp::mode::outputlines', + 'sensors' => 'hardware::ups::apc::snmp::mode::sensors', + 'time' => 'hardware::ups::apc::snmp::mode::ntp', + 'uptime' => 'snmp_standard::mode::uptime' + }; return $self; }