diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/appliance.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/appliance.pm new file mode 100644 index 000000000..298ba2ea4 --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/appliance.pm @@ -0,0 +1,107 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::appliance; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub custom_status_output { + my ($self, %options) = @_; + + return "'Virtual Appliance health: " . $self->{result_values}->{status} . "' "; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0 } + ]; + + $self->{maps_counters}->{global} = [ + { + label => 'status', type => 2, + critical_default => '%{status} =~ /red/' , + warning_default => '%{status} =~ /yellow/', + unknown_default => '%{status} =~ /(green|yellow|red|white)/', + set => { + key_values => [ { name => 'status' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_AVstatus = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.7.116.104.105.115.100.110.115.1'; + my $result = $options{snmp}->get_leef( + oids => [ $oid_AVstatus ], + nothing_quit => 1 + ); + + my $status_output = $result->{$oid_AVstatus}; + $self->{global} = { status => 'unknown' }; + if ($status_output =~ /\((.*?)\)/){ + $self->{global} = { status => $1 }; + } + +} + +1; + +__END__ + +=head1 MODE + +Check VA health. + +=over 8 + +=item B<--warning-status> + +Set warning threshold for status. (Default: '%{status} =~ /yellow/') +Can used special variables like: %{status} + +=item B<--critical-status> + +Set critical threshold for status. (Default: '%{status} =~ /red/'). +Can used special variables like: %{status} + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/connectivity.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/connectivity.pm new file mode 100644 index 000000000..170de869c --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/connectivity.pm @@ -0,0 +1,125 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::connectivity; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub custom_status_output { + my ($self, %options) = @_; + + return uc($self->{result_values}->{display}) . " health: " . $self->{result_values}->{status}; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'dns', type => 0 }, + { name => 'localdns', type => 0 }, + { name => 'cloud', type => 0 }, + { name => 'ad', type => 0 } + ]; + + foreach ('dns', 'localdns', 'cloud', 'ad') { + $self->{maps_counters}->{$_} = [ + { + label => $_ . '-status', type => 2, + critical_default => '%{status} =~ /red/' , + warning_default => '%{status} =~ /yellow/', + unknown_default => '%{status} !~ /(green|yellow|red|white)/', + set => { + key_values => [ { name => 'status' }, { name => 'display' }], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + } +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_dns = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.3.100.110.115.1'; + my $oid_localdns = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.8.108.111.99.97.108.100.110.115.1'; + my $oid_cloud = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.5.99.108.111.117.100.1'; + my $oid_ad = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.2.97.100.1'; + + my $result = $options{snmp}->get_leef( + oids => [ $oid_dns, $oid_localdns, $oid_cloud, $oid_ad ], + nothing_quit => 1 + ); + + foreach my $umbrella_component ('dns', 'localdns', 'cloud', 'ad') { + my $status_output = $result->{eval("\$oid_" . "$umbrella_component")}; + if ($status_output =~ /\((.*?)\)/){ + my $status = $1; + $self->{$umbrella_component} = { + display => $umbrella_component, + status => $status + }; + } + } + +} + +1; + +__END__ + +=head1 MODE + +Check connectivity between Umbrella server and DNS, local DNS, Umbrella dashboard (cloud) and AD connectors. + +=over 8 + +=item B<--warning-*> + +Set warning threshold for status. (Default: '%{status} =~ /yellow/'). +Can be: 'dns-status', 'localdns-status', 'cloud-status', 'ad-status'. + +Can use special variables like: %{status}, %{display} + +=item B<--critical-*> + +Set critical threshold for status. (Default: %{status} =~ /red/). +Can be: 'dns-connectivity', 'localdns-connectivity', 'cloud-connectivity', 'ad-connectivity'. + +Can use special variables like: %{status}, %{display} + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/cpudetailed.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/cpudetailed.pm new file mode 100644 index 000000000..984eaf847 --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/cpudetailed.pm @@ -0,0 +1,59 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::cpudetailed; + +use base qw(snmp_standard::mode::cpudetailed); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +1; + +__END__ + +=head1 MODE + +Check system CPUs (UCD-SNMP-MIB) (User, Nice, System, Idle, Wait, Kernel, Interrupt, SoftIRQ, Steal, Guest, GuestNice) +An average of all CPUs. + +=over 8 + +=item B<--warning-*> + +Threshold warning in percent. +Can be: 'user', 'nice', 'system', 'idle', 'wait', 'kernel', 'interrupt', 'softirq', 'steal', 'guest', 'guestnice'. + +=item B<--critical-*> + +Threshold critical in percent. +Can be: 'user', 'nice', 'system', 'idle', 'wait', 'kernel', 'interrupt', 'softirq', 'steal', 'guest', 'guestnice'. + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/load.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/load.pm new file mode 100644 index 000000000..abaaf036d --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/load.pm @@ -0,0 +1,60 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::load; + +use base qw(snmp_standard::mode::loadaverage); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +1; + +__END__ + +=head1 MODE + +Check system load-average. + +=over 8 + +=item B<--warning> + +Threshold warning (1min,5min,15min). + +=item B<--critical> + +Threshold critical (1min,5min,15min). + +=item B<--average> + +Load average for the number of CPUs. + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/memory.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/memory.pm new file mode 100644 index 000000000..52011dbbe --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/memory.pm @@ -0,0 +1,67 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::memory; + +use base qw(snmp_standard::mode::memory); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +1; + +__END__ + +=head1 MODE + +Check memory usage (UCD-SNMP-MIB). + +=over 8 + +=item B<--units> + +Units of thresholds (Default: '%') ('%', 'absolute') (Deprecated. Please use new counters directly) + +=item B<--free> + +Thresholds are on free space left (Deprecated. Please use new counters directly) + +=item B<--swap> + +Check swap also. + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'usage' (B), 'usage-free' (B), 'usage-prct' (%), +'swap' (B), 'swap-free' (B), 'swap-prct' (%), +'buffer' (B), 'cached' (B), 'shared' (B). + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/query.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/query.pm new file mode 100644 index 000000000..049d8873c --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/query.pm @@ -0,0 +1,110 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::query; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub prefix_query_output { + my ($self, %options) = @_; + + return 'Query rate: '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'query', type => 0, cb_prefix_output => 'prefix_query_output' } + ]; + + $self->{maps_counters}->{query} = [ + { label => '5m', nlabel => 'dns.query.last.5m.persecond.count', set => { + key_values => [ { name => '5m' } ], + output_template => '%s/s (5m)', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + }, + { label => '15m', nlabel => 'dns.query.last.15m.persecond.count', set => { + key_values => [ { name => '15m' } ], + output_template => '%s/s (15m)', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; +} + +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_dnsQueriesLast5m = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.4.113.112.115.53.1'; + my $oid_dnsQueriesLast15m = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.5.113.112.115.49.53.1'; + + my $result = $options{snmp}->get_leef( + oids => [ $oid_dnsQueriesLast5m, $oid_dnsQueriesLast15m ], + nothing_quit => 1 + ); + + $self->{query} = { + '5m' => $result->{$oid_dnsQueriesLast5m}, + '15m' => $result->{$oid_dnsQueriesLast15m} + }; +} + +1; + +__END__ + +=head1 MODE + +Check number of DNS queries per second over the last 5 and 15 minutes. + +=over 8 + +=item B<--warning-*> + +Warning threshold. +Can be: '5m', '15m'. + +=item B<--critical-*> + +Critical threshold. +Can be: '5m', '15m'. + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/mode/storage.pm b/centreon-plugins/network/cisco/umbrella/snmp/mode/storage.pm new file mode 100644 index 000000000..eabcfaa1d --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/mode/storage.pm @@ -0,0 +1,88 @@ +# +# Copyright 2022 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::cisco::umbrella::snmp::mode::storage; + +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 => 'usage', nlabel => 'storage.utilization.percentage', set => { + key_values => [ { name => 'usage' } ], + output_template => 'Storage usage: %.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_storageUsage = '.1.3.6.1.4.1.8072.1.3.2.4.1.2.9.100.105.115.107.117.115.97.103.101.1'; + my $snmp_results = $options{snmp}->get_leef( + oids => [ $oid_storageUsage ], + nothing_quit => 1 + ); + + $self->{global} = { usage => $snmp_results->{$oid_storageUsage} }; +} + +1; + +__END__ + +=head1 MODE + +Check system storage usage in percent. + +=over 8 + +=item B<--warning-usage> + +Warning threshold for disk usage in percent. + +=item B<--critical-usage> + +Critical threshold for disk usage in percent. + +=back + +=cut diff --git a/centreon-plugins/network/cisco/umbrella/snmp/plugin.pm b/centreon-plugins/network/cisco/umbrella/snmp/plugin.pm new file mode 100644 index 000000000..a6c2a9e45 --- /dev/null +++ b/centreon-plugins/network/cisco/umbrella/snmp/plugin.pm @@ -0,0 +1,53 @@ +# +# Copyright 2022 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::cisco::umbrella::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} = { + 'appliance' => 'network::cisco::umbrella::snmp::mode::appliance', + 'connectivity' => 'network::cisco::umbrella::snmp::mode::connectivity', + 'cpu' => 'network::cisco::umbrella::snmp::mode::cpudetailed', + 'load' => 'network::cisco::umbrella::snmp::mode::load', + 'memory' => 'network::cisco::umbrella::snmp::mode::memory', + 'query' => 'network::cisco::umbrella::snmp::mode::query', + 'storage' => 'network::cisco::umbrella::snmp::mode::storage' + }; + + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check Cisco Umbrella. + +=cut