mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-31 01:24:35 +02:00
(plugin) database::influxdb - mode query fix uninitialized value with… (#4581)
This commit is contained in:
parent
5fdc13ddcf
commit
847c2eb4da
@ -28,7 +28,7 @@ use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_
|
|||||||
|
|
||||||
sub custom_status_perfdata {
|
sub custom_status_perfdata {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
foreach my $key (@{$self->{instance_mode}->{custom_keys}}) {
|
foreach my $key (@{$self->{instance_mode}->{custom_keys}}) {
|
||||||
$self->{output}->perfdata_add(
|
$self->{output}->perfdata_add(
|
||||||
label => $key,
|
label => $key,
|
||||||
@ -61,13 +61,13 @@ sub custom_status_calc {
|
|||||||
$self->{result_values}->{$key} = $options{new_datas}->{$self->{instance} . '_' . $key};
|
$self->{result_values}->{$key} = $options{new_datas}->{$self->{instance} . '_' . $key};
|
||||||
}
|
}
|
||||||
$self->{result_values}->{time} = time();
|
$self->{result_values}->{time} = time();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_counters {
|
sub set_counters {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$self->{maps_counters_type} = [
|
$self->{maps_counters_type} = [
|
||||||
{ name => 'queries_results', type => 1,
|
{ name => 'queries_results', type => 1,
|
||||||
message_multiple => 'All queries results are ok', skipped_code => { -11 => 1 } }
|
message_multiple => 'All queries results are ok', skipped_code => { -11 => 1 } }
|
||||||
@ -89,7 +89,7 @@ sub new {
|
|||||||
my ($class, %options) = @_;
|
my ($class, %options) = @_;
|
||||||
my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1);
|
my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1);
|
||||||
bless $self, $class;
|
bless $self, $class;
|
||||||
|
|
||||||
$options{options}->add_options(arguments => {
|
$options{options}->add_options(arguments => {
|
||||||
'query:s@' => { name => 'query' },
|
'query:s@' => { name => 'query' },
|
||||||
'instance:s' => { name => 'instance' },
|
'instance:s' => { name => 'instance' },
|
||||||
@ -104,27 +104,27 @@ sub new {
|
|||||||
sub check_options {
|
sub check_options {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
$self->SUPER::check_options(%options);
|
$self->SUPER::check_options(%options);
|
||||||
|
|
||||||
if (!defined($self->{option_results}->{output}) || $self->{option_results}->{output} eq '') {
|
if (!defined($self->{option_results}->{output}) || $self->{option_results}->{output} eq '') {
|
||||||
$self->{output}->add_option_msg(short_msg => "Need to specify --output option.");
|
$self->{output}->add_option_msg(short_msg => "Need to specify --output option.");
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined($self->{option_results}->{instance}) || $self->{option_results}->{instance} eq '') {
|
if (!defined($self->{option_results}->{instance}) || $self->{option_results}->{instance} eq '') {
|
||||||
$self->{output}->add_option_msg(short_msg => "Need to specify --instance option.");
|
$self->{output}->add_option_msg(short_msg => "Need to specify --instance option.");
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined($self->{option_results}->{query})) {
|
if (!defined($self->{option_results}->{query})) {
|
||||||
$self->{output}->add_option_msg(short_msg => "Need to specify --query option.");
|
$self->{output}->add_option_msg(short_msg => "Need to specify --query option.");
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{custom_keys} = [];
|
$self->{custom_keys} = [];
|
||||||
$self->{queries} = {};
|
$self->{queries} = [];
|
||||||
foreach my $query (@{$self->{option_results}->{query}}) {
|
foreach my $query (@{$self->{option_results}->{query}}) {
|
||||||
next if ($query !~ /^(.*?),(.*)$/);
|
next if ($query !~ /^(.*?),(.*)$/);
|
||||||
$self->{queries}->{$1} = $2;
|
push @{$self->{queries}}, { label => $1, value => $2 };
|
||||||
push @{$self->{maps_counters}->{queries_results}->[0]->{set}->{key_values}}, { name => $1 };
|
push @{$self->{maps_counters}->{queries_results}->[0]->{set}->{key_values}}, { name => $1 };
|
||||||
push @{$self->{custom_keys}}, $1;
|
push @{$self->{custom_keys}}, $1;
|
||||||
}
|
}
|
||||||
@ -136,25 +136,31 @@ sub manage_selection {
|
|||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$self->{queries_results} = {};
|
$self->{queries_results} = {};
|
||||||
my (@results, @queries);
|
|
||||||
|
|
||||||
my $query_index = -1;
|
my $query_index = 0;
|
||||||
foreach my $label (keys %{$self->{queries}}) {
|
foreach my $query (@{$self->{queries}}) {
|
||||||
$query_index++;
|
my $queries_results = $options{custom}->query(queries => [$query->{value}]);
|
||||||
@queries = ();
|
|
||||||
push @queries, $self->{queries}->{$label};
|
|
||||||
|
|
||||||
my $queries_results = $options{custom}->query(queries => \@queries);
|
|
||||||
|
|
||||||
foreach my $result (@$queries_results) {
|
foreach my $result (@$queries_results) {
|
||||||
next if (!defined($result->{tags}->{ $self->{option_results}->{instance} }));
|
next if (!defined($result->{tags}->{ $self->{option_results}->{instance} }));
|
||||||
|
|
||||||
my ($column_index) = grep { $result->{columns}->[$_] eq $self->{custom_keys}->[$query_index] } (0 .. @{$result->{columns}} - 1);
|
my $column_index = 0;
|
||||||
my $value;
|
foreach (@{$result->{columns}}) {
|
||||||
$value = $options{custom}->compute(aggregation => $self->{option_results}->{aggregation}, values => $result->{values}, column => $column_index) if (defined($result->{values}));
|
last if ($_ eq $self->{custom_keys}->[$query_index]);
|
||||||
$self->{queries_results}->{ $result->{tags}->{ $self->{option_results}->{instance} } }->{instance} = $result->{tags}->{ $self->{option_results}->{instance} };
|
$column_index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $value = $options{custom}->compute(aggregation => $self->{option_results}->{aggregation}, values => $result->{values}, column => $column_index) if (defined($result->{values}));
|
||||||
|
if (!defined($self->{queries_results}->{ $result->{tags}->{ $self->{option_results}->{instance} } })) {
|
||||||
|
$self->{queries_results}->{ $result->{tags}->{ $self->{option_results}->{instance} } } = {
|
||||||
|
instance => $result->{tags}->{ $self->{option_results}->{instance} }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
$self->{queries_results}->{ $result->{tags}->{ $self->{option_results}->{instance} } }->{ $result->{columns}->[$column_index] } = $value;
|
$self->{queries_results}->{ $result->{tags}->{ $self->{option_results}->{instance} } }->{ $result->{columns}->[$column_index] } = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scalar(keys %{$self->{queries_results}}) <= 0) {
|
if (scalar(keys %{$self->{queries_results}}) <= 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user