mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-25 14:44:43 +02:00
Snmp generic collection 3 (#2684)
This commit is contained in:
parent
09eda85b2e
commit
b3a506f93a
@ -119,7 +119,8 @@ sub new {
|
|||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$options{options}->add_options(arguments => {
|
$options{options}->add_options(arguments => {
|
||||||
'config:s' => { name => 'config' }
|
'config:s' => { name => 'config' },
|
||||||
|
'filter-selection:s%' => { name => 'filter_selection' },
|
||||||
});
|
});
|
||||||
|
|
||||||
$self->{snmp_cache} = centreon::plugins::statefile->new(%options);
|
$self->{snmp_cache} = centreon::plugins::statefile->new(%options);
|
||||||
@ -739,6 +740,19 @@ sub check_filter {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub check_filter_option {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
foreach (keys %{$self->{option_results}->{filter_selection}}) {
|
||||||
|
return 1 if (
|
||||||
|
defined($self->{expand}->{$_}) && $self->{option_results}->{filter_selection}->{$_} ne '' &&
|
||||||
|
$self->{expand}->{$_} !~ /$self->{option_results}->{filter_selection}->{$_}/
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
sub prepare_perfdatas {
|
sub prepare_perfdatas {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
@ -797,6 +811,7 @@ sub add_selection {
|
|||||||
$self->set_expand_table(section => "selection > $i > expand_table", expand => $_->{expand_table});
|
$self->set_expand_table(section => "selection > $i > expand_table", expand => $_->{expand_table});
|
||||||
$self->set_expand(section => "selection > $i > expand", expand => $_->{expand});
|
$self->set_expand(section => "selection > $i > expand", expand => $_->{expand});
|
||||||
$self->set_functions(section => "selection > $i > functions", functions => $_->{functions});
|
$self->set_functions(section => "selection > $i > functions", functions => $_->{functions});
|
||||||
|
next if ($self->check_filter_option());
|
||||||
$config->{unknow} = $self->prepare_variables(section => "selection > $i > unknown", value => $_->{unknown});
|
$config->{unknow} = $self->prepare_variables(section => "selection > $i > unknown", value => $_->{unknown});
|
||||||
$config->{warning} = $self->prepare_variables(section => "selection > $i > warning", value => $_->{warning});
|
$config->{warning} = $self->prepare_variables(section => "selection > $i > warning", value => $_->{warning});
|
||||||
$config->{critical} = $self->prepare_variables(section => "selection > $i > critical", value => $_->{critical});
|
$config->{critical} = $self->prepare_variables(section => "selection > $i > critical", value => $_->{critical});
|
||||||
@ -839,6 +854,7 @@ sub add_selection_loop {
|
|||||||
$self->set_expand(section => "selection_loop > $i > expand", expand => $_->{expand});
|
$self->set_expand(section => "selection_loop > $i > expand", expand => $_->{expand});
|
||||||
$self->set_functions(section => "selection_loop > $i > functions", functions => $_->{functions});
|
$self->set_functions(section => "selection_loop > $i > functions", functions => $_->{functions});
|
||||||
next if ($self->check_filter(filter => $_->{filter}));
|
next if ($self->check_filter(filter => $_->{filter}));
|
||||||
|
next if ($self->check_filter_option());
|
||||||
$config->{unknow} = $self->prepare_variables(section => "selection_loop > $i > unknown", value => $_->{unknown});
|
$config->{unknow} = $self->prepare_variables(section => "selection_loop > $i > unknown", value => $_->{unknown});
|
||||||
$config->{warning} = $self->prepare_variables(section => "selection_loop > $i > warning", value => $_->{warning});
|
$config->{warning} = $self->prepare_variables(section => "selection_loop > $i > warning", value => $_->{warning});
|
||||||
$config->{critical} = $self->prepare_variables(section => "selection_loop > $i > critical", value => $_->{critical});
|
$config->{critical} = $self->prepare_variables(section => "selection_loop > $i > critical", value => $_->{critical});
|
||||||
@ -864,9 +880,40 @@ sub set_formatting {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub disco_format {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
$self->{output}->add_disco_format(elements => ['name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub disco_show {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
$self->read_config();
|
||||||
|
$self->collect_snmp(snmp => $options{snmp});
|
||||||
|
|
||||||
|
$self->{selections} = {};
|
||||||
|
$self->add_selection();
|
||||||
|
$self->add_selection_loop();
|
||||||
|
foreach (values %{$self->{selections}}) {
|
||||||
|
my $entry = {};
|
||||||
|
foreach my $label (keys %{$_->{expand}}) {
|
||||||
|
my $name = $label;
|
||||||
|
$name =~ s/\./_/g;
|
||||||
|
$entry->{$name} = $_->{expand}->{$label};
|
||||||
|
}
|
||||||
|
$self->{output}->add_disco_entry(%$entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub manage_selection {
|
sub manage_selection {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
# TODO:
|
||||||
|
# add some functions types (percent, scale)
|
||||||
|
# choose functions position: before_expand, after_expand
|
||||||
|
# can cache only some parts of snmp requests
|
||||||
$self->read_config();
|
$self->read_config();
|
||||||
$self->collect_snmp(snmp => $options{snmp});
|
$self->collect_snmp(snmp => $options{snmp});
|
||||||
|
|
||||||
@ -891,6 +938,11 @@ Collect and compute SNMP datas.
|
|||||||
config used (Required).
|
config used (Required).
|
||||||
Can be a file or json content.
|
Can be a file or json content.
|
||||||
|
|
||||||
|
=item B<--filter-selection>
|
||||||
|
|
||||||
|
Filter selections.
|
||||||
|
Eg: --filter-selection='name=test'
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
Loading…
x
Reference in New Issue
Block a user