clean instance_mode and allow getting threshold from config
This commit is contained in:
parent
c7ec02e9db
commit
107371d4ab
|
@ -26,7 +26,6 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use List::Util qw (min max sum);
|
use List::Util qw (min max sum);
|
||||||
use JSON;
|
use JSON;
|
||||||
my $instance_mode;
|
|
||||||
my $config_data;
|
my $config_data;
|
||||||
|
|
||||||
sub custom_metric_output {
|
sub custom_metric_output {
|
||||||
|
@ -69,6 +68,7 @@ sub custom_metric_output {
|
||||||
$msg = sprintf("Metric '%s' value is '%s'", $self->{result_values}->{instance}, $self->{result_values}->{value});
|
$msg = sprintf("Metric '%s' value is '%s'", $self->{result_values}->{instance}, $self->{result_values}->{value});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined($message)) {
|
if (defined($message)) {
|
||||||
$self->{output}->output_add(long_msg => 'printf expression problem: ' . $message);
|
$self->{output}->output_add(long_msg => 'printf expression problem: ' . $message);
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
|
@ -111,8 +111,15 @@ sub custom_metric_perfdata {
|
||||||
sub custom_metric_threshold {
|
sub custom_metric_threshold {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
my ($exit, $threshold_value);
|
my ($exit, $threshold_value);
|
||||||
|
|
||||||
$threshold_value = $self->{result_values}->{value};
|
$threshold_value = $self->{result_values}->{value};
|
||||||
$exit = $self->{perfdata}->threshold_check(value => $threshold_value, threshold => [ { label => 'critical-'.$self->{label} , exit_litteral => 'critical' }, { label => 'warning-'.$self->{label}, exit_litteral => 'warning' } ]);
|
my $exit_conf = $self->{perfdata}->threshold_check(value => $threshold_value, threshold => [ { label => 'critical-'.$self->{label}.'-'.$self->{result_values}->{instance} , exit_litteral => 'critical' },
|
||||||
|
{ label => 'warning-'.$self->{label}.'-'.$self->{result_values}->{instance}, exit_litteral => 'warning' } ]);
|
||||||
|
|
||||||
|
my $exit_opts = $self->{perfdata}->threshold_check(value => $threshold_value, threshold => [ { label => 'critical-'.$self->{label} , exit_litteral => 'critical' },
|
||||||
|
{ label => 'warning-'.$self->{label}, exit_litteral => 'warning' } ]);
|
||||||
|
|
||||||
|
$exit = $self->{output}->get_most_critical(status => [ $exit_conf, $exit_opts ]);
|
||||||
return $exit;
|
return $exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,8 +170,6 @@ sub check_options {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
$self->SUPER::check_options(%options);
|
$self->SUPER::check_options(%options);
|
||||||
|
|
||||||
$instance_mode = $self;
|
|
||||||
|
|
||||||
if (!defined($self->{option_results}->{config_file}) && !defined($self->{option_results}->{json_data})) {
|
if (!defined($self->{option_results}->{config_file}) && !defined($self->{option_results}->{json_data})) {
|
||||||
$self->{output}->add_option_msg(short_msg => "Please define --config-file or --json-data option");
|
$self->{output}->add_option_msg(short_msg => "Please define --config-file or --json-data option");
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
|
@ -244,13 +249,13 @@ sub manage_selection {
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
while ((my $row = $self->{sql}->fetchrow_hashref())) {
|
while ((my $row = $self->{sql}->fetchrow_hashref())) {
|
||||||
my $metric_key = $id;
|
my $metric_key = $id;
|
||||||
$self->{metrics}{$metric_key}{name} = $row->{metric_name};
|
$self->{metrics}->{$metric_key}{name} = $row->{metric_name};
|
||||||
$self->{metrics}{$metric_key}{display_name} = $id;
|
$self->{metrics}->{$metric_key}{display_name} = $id;
|
||||||
$self->{metrics}{$metric_key}{current} = $row->{current_value};
|
$self->{metrics}->{$metric_key}{current} = $row->{current_value};
|
||||||
$self->{metrics}{$metric_key}{unit} = $row->{unit_name};
|
$self->{metrics}->{$metric_key}{unit} = $row->{unit_name};
|
||||||
$self->{metrics}{$metric_key}{min} = defined($row->{min}) ? $row->{min} : '';
|
$self->{metrics}->{$metric_key}{min} = defined($row->{min}) ? $row->{min} : '';
|
||||||
$self->{metrics}{$metric_key}{max} = defined($row->{max}) ? $row->{max} : '';
|
$self->{metrics}->{$metric_key}{max} = defined($row->{max}) ? $row->{max} : '';
|
||||||
$self->{metrics}{$metric_key}{display} = (defined($config_data->{selection}{$id}->{display}) && $config_data->{selection}{$id}->{display} eq 'true') ? 1 : 0;
|
$self->{metrics}->{$metric_key}{display} = (defined($config_data->{selection}{$id}->{display}) && $config_data->{selection}{$id}->{display} eq 'true') ? 1 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elsif (exists($config_data->{filters})) {
|
} elsif (exists($config_data->{filters})) {
|
||||||
|
@ -265,13 +270,13 @@ sub manage_selection {
|
||||||
$self->{sql}->query(query => $query);
|
$self->{sql}->query(query => $query);
|
||||||
while ((my $row = $self->{sql}->fetchrow_hashref())) {
|
while ((my $row = $self->{sql}->fetchrow_hashref())) {
|
||||||
my $metric_key = $row->{host_name}.$config_data->{formatting}->{cannonical_separator}.$row->{service_description}.$config_data->{formatting}->{cannonical_separator}.$row->{metric_name};
|
my $metric_key = $row->{host_name}.$config_data->{formatting}->{cannonical_separator}.$row->{service_description}.$config_data->{formatting}->{cannonical_separator}.$row->{metric_name};
|
||||||
$self->{metrics}{$metric_key}{display_name} = $metric_key;
|
$self->{metrics}->{$metric_key}{display_name} = $metric_key;
|
||||||
$self->{metrics}{$metric_key}{name} = $row->{metric_name};
|
$self->{metrics}->{$metric_key}{name} = $row->{metric_name};
|
||||||
$self->{metrics}{$metric_key}{current} = $row->{current_value};
|
$self->{metrics}->{$metric_key}{current} = $row->{current_value};
|
||||||
$self->{metrics}{$metric_key}{unit} = $row->{unit_name};
|
$self->{metrics}->{$metric_key}{unit} = $row->{unit_name};
|
||||||
$self->{metrics}{$metric_key}{min} = defined($row->{min}) ? $row->{min} : '';
|
$self->{metrics}->{$metric_key}{min} = defined($row->{min}) ? $row->{min} : '';
|
||||||
$self->{metrics}{$metric_key}{max} = defined($row->{max}) ? $row->{max} : '';
|
$self->{metrics}->{$metric_key}{max} = defined($row->{max}) ? $row->{max} : '';
|
||||||
$self->{metrics}{$metric_key}{display} = (defined($config_data->{filters}->{display})) ? 1 : 0;
|
$self->{metrics}->{$metric_key}{display} = (defined($config_data->{filters}->{display})) ? 1 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,6 +304,13 @@ sub manage_selection {
|
||||||
$self->{vmetrics}->{$vcurve}{min} = (defined($config_data->{virtualcurve}{$vcurve}->{min})) ? $config_data->{virtualcurve}{$vcurve}->{min} : '';
|
$self->{vmetrics}->{$vcurve}{min} = (defined($config_data->{virtualcurve}{$vcurve}->{min})) ? $config_data->{virtualcurve}{$vcurve}->{min} : '';
|
||||||
$self->{vmetrics}->{$vcurve}{max} = (defined($config_data->{virtualcurve}{$vcurve}->{max})) ? $config_data->{virtualcurve}{$vcurve}->{max} : '';
|
$self->{vmetrics}->{$vcurve}{max} = (defined($config_data->{virtualcurve}{$vcurve}->{max})) ? $config_data->{virtualcurve}{$vcurve}->{max} : '';
|
||||||
|
|
||||||
|
if (!defined($self->{option_results}->{warning_global}) && (defined($config_data->{virtualcurve}->{$vcurve}->{warning}))) {
|
||||||
|
$self->{perfdata}->threshold_validate(label => 'warning-global-'.$vcurve, value => $config_data->{virtualcurve}->{$vcurve}->{warning});
|
||||||
|
}
|
||||||
|
if (!defined($self->{option_results}->{critical_global}) && (defined($config_data->{virtualcurve}->{$vcurve}->{critical}))) {
|
||||||
|
$self->{perfdata}->threshold_validate(label => 'critical-global-'.$vcurve, value => $config_data->{virtualcurve}->{$vcurve}->{critical});
|
||||||
|
}
|
||||||
|
|
||||||
$self->{global}->{$vcurve} = {display => $vcurve,
|
$self->{global}->{$vcurve} = {display => $vcurve,
|
||||||
type => 'global',
|
type => 'global',
|
||||||
unit => $self->{vmetrics}->{$vcurve}->{unit},
|
unit => $self->{vmetrics}->{$vcurve}->{unit},
|
||||||
|
@ -351,12 +363,12 @@ global/virtual curves
|
||||||
=item B<--warning-*>
|
=item B<--warning-*>
|
||||||
|
|
||||||
Warning threshold (can be 'unique' or 'global')
|
Warning threshold (can be 'unique' or 'global')
|
||||||
BE CAREFUL, will override config file definition
|
(if also defined in config file, most critical is prefered)
|
||||||
|
|
||||||
=item B<--critical-*>
|
=item B<--critical-*>
|
||||||
|
|
||||||
Critical threshold (can be 'unique' or 'global')
|
Critical threshold (can be 'unique' or 'global')
|
||||||
BE CAREFUL, will override config file definition
|
(if also defined in config file, most critical is prefered)
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue