diff --git a/centreon-plugins/network/barracuda/bma/snmp/mode/load.pm b/centreon-plugins/network/barracuda/bma/snmp/mode/load.pm new file mode 100644 index 000000000..1cd016b52 --- /dev/null +++ b/centreon-plugins/network/barracuda/bma/snmp/mode/load.pm @@ -0,0 +1,89 @@ +# +# 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 network::barracuda::bma::snmp::mode::load; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, skipped_code => { -10 => 1 } } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'cpu-load', nlabel => 'system.cpu.load.percentage', set => { + key_values => [ { name => 'system_load' } ], + output_template => 'system cpu load: %.2f%%', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%' } + ] + } + } + ]; +} + + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_load = '.1.3.6.1.4.1.20632.6.6.1'; # systemLoad + my $snmp_result = $options{snmp}->get_leef( + oids => [$oid_load], + nothing_quit => 1 + ); + + $self->{global} = { + system_load => $snmp_result->{$oid_load} + }; +} + +1; + +__END__ + +=head1 MODE + +Check system cpu load. + +=over 8 + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'cpu-load' (%). + +=back + +=cut diff --git a/centreon-plugins/network/barracuda/bma/snmp/mode/mails.pm b/centreon-plugins/network/barracuda/bma/snmp/mode/mails.pm new file mode 100644 index 000000000..849c6eb0c --- /dev/null +++ b/centreon-plugins/network/barracuda/bma/snmp/mode/mails.pm @@ -0,0 +1,142 @@ +# +# 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 network::barracuda::bma::snmp::mode::mails; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); + +sub prefix_inbound_output { + my ($self, %options) = @_; + + return 'Number of inbound mails '; +} + +sub prefix_outbound_output { + my ($self, %options) = @_; + + return 'Number of outbound mails '; +} + +sub prefix_internal_output { + my ($self, %options) = @_; + + return 'Number of internal mails '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'inbound', type => 0, cb_prefix_output => 'prefix_inbound_output', skipped_code => { -10 => 1 } }, + { name => 'outbound', type => 0, cb_prefix_output => 'prefix_outbound_output', skipped_code => { -10 => 1 } }, + { name => 'internal', type => 0, cb_prefix_output => 'prefix_internal_output', skipped_code => { -10 => 1 } } + ]; + + foreach ('inbound', 'outbound', 'internal') { + $self->{maps_counters}->{$_} = [ + { label => $_ . '-hourly', nlabel => 'mails.' . $_ . '.hourly.count', set => { + key_values => [ { name => $_ . 'EmailsHour' } ], + output_template => 'hourly: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + }, + { label => $_ . '-daily', nlabel => 'mails.' . $_ . '.daily.count', set => { + key_values => [ { name => $_ . 'EmailsDay' } ], + output_template => 'daily: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + }, + { label => $_ . '-total', nlabel => 'mails.' . $_ . '.total.count', set => { + key_values => [ { name => $_ . 'EmailsTotal', diff => 1 } ], + output_template => 'total: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + } +} + + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1, statefile => 1); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +my $mapping = { + inboundEmailsHour => { oid => '.1.3.6.1.4.1.20632.6.5.1' }, + inboundEmailsDay => { oid => '.1.3.6.1.4.1.20632.6.5.2' }, + inboundEmailsTotal => { oid => '.1.3.6.1.4.1.20632.6.5.3' }, + internalEmailsHour => { oid => '.1.3.6.1.4.1.20632.6.5.4' }, + internalEmailsDay => { oid => '.1.3.6.1.4.1.20632.6.5.5' }, + internalEmailsTotal => { oid => '.1.3.6.1.4.1.20632.6.5.6' }, + outboundEmailsHour => { oid => '.1.3.6.1.4.1.20632.6.5.7' }, + outboundEmailsDay => { oid => '.1.3.6.1.4.1.20632.6.5.8' }, + outboundEmailsTotal => { oid => '.1.3.6.1.4.1.20632.6.5.9' } +}; + +sub manage_selection { + my ($self, %options) = @_; + + my $snmp_result = $options{snmp}->get_leef( + oids => [ map($_->{oid}, values(%$mapping)) ], + nothing_quit => 1 + ); + my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result); + $self->{inbound} = $result; + $self->{outbound} = $result; + $self->{internal} = $result; + + $self->{cache_name} = 'barracuda_bma_' . $options{snmp}->get_hostname() . '_' . $options{snmp}->get_port() . '_' . $self->{mode} . '_' . + (defined($self->{option_results}->{filter_counters}) ? md5_hex($self->{option_results}->{filter_counters}) : md5_hex('all')); +} + +1; + +__END__ + +=head1 MODE + +Check e-mails. + +=over 8 + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'firmware-space', 'maillog-space'. + +=back + +=cut diff --git a/centreon-plugins/network/barracuda/bma/snmp/mode/storage.pm b/centreon-plugins/network/barracuda/bma/snmp/mode/storage.pm new file mode 100644 index 000000000..097a650c4 --- /dev/null +++ b/centreon-plugins/network/barracuda/bma/snmp/mode/storage.pm @@ -0,0 +1,105 @@ +# +# 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 network::barracuda::bma::snmp::mode::storage; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Storage space '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output', skipped_code => { -10 => 1 } } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'firmware-space', nlabel => 'storage.firmware.space.usage.percentage', set => { + key_values => [ { name => 'firmware_used' } ], + output_template => 'firmware used: %.2f%%', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%' } + ] + } + }, + { label => 'maillog-space', nlabel => 'storage.maillog.space.usage.percentage', set => { + key_values => [ { name => 'maillog_used' } ], + output_template => 'mail and logs used: %.2f%%', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%' } + ] + } + } + ]; +} + + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_firmware = '.1.3.6.1.4.1.20632.6.6.5'; # firmwareStorage + my $oid_maillog = '.1.3.6.1.4.1.20632.6.6.6'; # mailLogStorage + my $snmp_result = $options{snmp}->get_leef( + oids => [$oid_firmware, $oid_maillog], + nothing_quit => 1 + ); + + $self->{global} = { + firmware_used => $snmp_result->{$oid_firmware}, + maillog_used => $snmp_result->{$oid_maillog} + }; +} + +1; + +__END__ + +=head1 MODE + +Check storage usage. + +=over 8 + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'firmware-space', 'maillog-space'. + +=back + +=cut diff --git a/centreon-plugins/network/barracuda/bma/snmp/plugin.pm b/centreon-plugins/network/barracuda/bma/snmp/plugin.pm new file mode 100644 index 000000000..ed0010a4b --- /dev/null +++ b/centreon-plugins/network/barracuda/bma/snmp/plugin.pm @@ -0,0 +1,49 @@ +# +# 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 network::barracuda::bma::snmp::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_snmp); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{modes} = { + 'load' => 'network::barracuda::bma::snmp::mode::load', + 'mails' => 'network::barracuda::bma::snmp::mode::mails', + 'storage' => 'network::barracuda::bma::snmp::mode::storage' + }; + + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check Barracuda Message Archiver in SNMP. + +=cut