(plugin) cloud::azure::management::recovery - adding filter on timeframe for backup job status (#3811)
* adding filter on timeframe * adding default value for timeframe * adding timeframe opt in cmd example * apply suggestions * remove default lookback value
This commit is contained in:
parent
a49f381183
commit
04ff8ab8fe
|
@ -243,6 +243,7 @@ sub convert_duration {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my $duration;
|
my $duration;
|
||||||
|
|
||||||
if ($options{time_string} =~ /^P.*S$/) {
|
if ($options{time_string} =~ /^P.*S$/) {
|
||||||
centreon::plugins::misc::mymodule_load(
|
centreon::plugins::misc::mymodule_load(
|
||||||
output => $self->{output}, module => 'DateTime::Format::Duration::ISO8601',
|
output => $self->{output}, module => 'DateTime::Format::Duration::ISO8601',
|
||||||
|
@ -265,6 +266,30 @@ sub convert_duration {
|
||||||
return $duration;
|
return $duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub convert_iso8601_to_epoch {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
if ($options{time_string} =~ /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d.*)Z/) {
|
||||||
|
my $dt = DateTime->new(
|
||||||
|
year => $1,
|
||||||
|
month => $2,
|
||||||
|
day => $3,
|
||||||
|
hour => $4,
|
||||||
|
minute => $5,
|
||||||
|
second => $6,
|
||||||
|
nanosecond => $7
|
||||||
|
);
|
||||||
|
|
||||||
|
my $epoch_time = $dt->epoch;
|
||||||
|
return $epoch_time;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$self->{output}->add_option_msg(short_msg => "Wrong date format: $options{time_string}");
|
||||||
|
$self->{output}->option_exit();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
sub json_decode {
|
sub json_decode {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ use base qw(centreon::plugins::templates::counter);
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold);
|
use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng);
|
||||||
|
|
||||||
sub custom_status_output {
|
sub custom_status_output {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
@ -91,12 +91,12 @@ sub set_counters {
|
||||||
];
|
];
|
||||||
|
|
||||||
$self->{maps_counters}->{jobs} = [
|
$self->{maps_counters}->{jobs} = [
|
||||||
{ label => 'status', threshold => 0, set => {
|
{ label => 'status', critical_default => '%{status} eq "Failed"', threshold => 0, set => {
|
||||||
key_values => [ { name => 'status' }, { name => 'duration' }, { name => 'display' } ],
|
key_values => [ { name => 'status' }, { name => 'duration' }, { name => 'display' } ],
|
||||||
closure_custom_calc => $self->can('custom_status_calc'),
|
closure_custom_calc => $self->can('custom_status_calc'),
|
||||||
closure_custom_output => $self->can('custom_status_output'),
|
closure_custom_output => $self->can('custom_status_output'),
|
||||||
closure_custom_perfdata => sub { return 0; },
|
closure_custom_perfdata => sub { return 0; },
|
||||||
closure_custom_threshold_check => \&catalog_status_threshold,
|
closure_custom_threshold_check => \&catalog_status_threshold_ng,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -119,8 +119,7 @@ sub new {
|
||||||
"resource-group:s" => { name => 'resource_group' },
|
"resource-group:s" => { name => 'resource_group' },
|
||||||
"filter-name:s" => { name => 'filter_name' },
|
"filter-name:s" => { name => 'filter_name' },
|
||||||
"filter-counters:s" => { name => 'filter_counters' },
|
"filter-counters:s" => { name => 'filter_counters' },
|
||||||
"warning-status:s" => { name => 'warning_status', default => '' },
|
"lookback:s" => { name => 'lookback' }
|
||||||
"critical-status:s" => { name => 'critical_status', default => '%{status} eq "Failed"' },
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
|
@ -139,7 +138,6 @@ sub check_options {
|
||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->change_macros(macros => ['warning_status', 'critical_status']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub manage_selection {
|
sub manage_selection {
|
||||||
|
@ -153,11 +151,16 @@ sub manage_selection {
|
||||||
vault_name => $self->{option_results}->{vault_name},
|
vault_name => $self->{option_results}->{vault_name},
|
||||||
resource_group => $self->{option_results}->{resource_group}
|
resource_group => $self->{option_results}->{resource_group}
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach my $job (@{$jobs}) {
|
foreach my $job (@{$jobs}) {
|
||||||
next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne ''
|
next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne ''
|
||||||
&& $job->{properties}->{entityFriendlyName} !~ /$self->{option_results}->{filter_name}/);
|
&& $job->{properties}->{entityFriendlyName} !~ /$self->{option_results}->{filter_name}/);
|
||||||
|
|
||||||
my $duration = $options{custom}->convert_duration(time_string => $job->{properties}->{duration});
|
my $duration = $options{custom}->convert_duration(time_string => $job->{properties}->{duration});
|
||||||
|
my $end_time = $options{custom}->convert_iso8601_to_epoch(time_string => $job->{properties}->{endTime});
|
||||||
|
|
||||||
|
my $ts_timeframe = (defined($self->{option_results}->{lookback}) && $self->{option_results}->{lookback} ne '') ? (time() - $self->{option_results}->{lookback}) : 0;
|
||||||
|
next if (defined($self->{option_results}->{lookback}) && $self->{option_results}->{lookback} ne '' && $ts_timeframe > $end_time);
|
||||||
|
|
||||||
$self->{jobs}->{$job->{id}} = {
|
$self->{jobs}->{$job->{id}} = {
|
||||||
display => $job->{properties}->{entityFriendlyName},
|
display => $job->{properties}->{entityFriendlyName},
|
||||||
|
@ -186,7 +189,7 @@ Check backup jobs status.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
perl centreon_plugins.pl --plugin=cloud::azure::management::recovery::plugin --custommode=azcli --mode=backup-jobs-status
|
perl centreon_plugins.pl --plugin=cloud::azure::management::recovery::plugin --custommode=azcli --mode=backup-jobs-status
|
||||||
--resource-group='MYRESOURCEGROUP' --vault-name='Loki' --filter-counters='^total-failed$' --critical-total-failed='0' --verbose
|
--resource-group='MYRESOURCEGROUP' --vault-name='Loki' --filter-counters='^total-failed$' --critical-total-failed='0' --lookback=43200 --verbose
|
||||||
|
|
||||||
=over 8
|
=over 8
|
||||||
|
|
||||||
|
@ -207,6 +210,12 @@ Filter job name (Can be a regexp).
|
||||||
Only display some counters (regexp can be used).
|
Only display some counters (regexp can be used).
|
||||||
Example: --filter-counters='^total-completed$'
|
Example: --filter-counters='^total-completed$'
|
||||||
|
|
||||||
|
=item B<--lookback>
|
||||||
|
|
||||||
|
Specify in seconds since when you want to have backup job status.
|
||||||
|
Based on endTime property of the job.
|
||||||
|
Default: all existing job statuses are displayed.
|
||||||
|
|
||||||
=item B<--warning-status>
|
=item B<--warning-status>
|
||||||
|
|
||||||
Set warning threshold for status (Default: '').
|
Set warning threshold for status (Default: '').
|
||||||
|
|
Loading…
Reference in New Issue