mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-27 15:44:21 +02:00
add trace api for meraki (#2634)
This commit is contained in:
parent
e4ad56022e
commit
1d21ea9278
@ -51,7 +51,8 @@ sub new {
|
|||||||
'reload-cache-time:s' => { name => 'reload_cache_time' },
|
'reload-cache-time:s' => { name => 'reload_cache_time' },
|
||||||
'ignore-permission-errors' => { name => 'ignore_permission_errors' },
|
'ignore-permission-errors' => { name => 'ignore_permission_errors' },
|
||||||
'use-extra-cache' => { name => 'use_extra_cache' },
|
'use-extra-cache' => { name => 'use_extra_cache' },
|
||||||
'reload-extra-cache-time:s' => { name => 'reload_extra_cache_time' }
|
'reload-extra-cache-time:s' => { name => 'reload_extra_cache_time' },
|
||||||
|
'trace-api:s' => { name => 'trace_api' }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1);
|
$options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1);
|
||||||
@ -101,6 +102,19 @@ sub check_options {
|
|||||||
$self->{output}->option_exit();
|
$self->{output}->option_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined($self->{option_results}->{trace_api})) {
|
||||||
|
centreon::plugins::misc::mymodule_load(
|
||||||
|
output => $self->{output},
|
||||||
|
module => 'Time::HiRes',
|
||||||
|
error_msg => "Cannot load module 'Time::HiRes'."
|
||||||
|
);
|
||||||
|
centreon::plugins::misc::mymodule_load(
|
||||||
|
output => $self->{output},
|
||||||
|
module => 'POSIX',
|
||||||
|
error_msg => "Cannot load module 'POSIX'."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$self->{cache}->check_options(option_results => $self->{option_results});
|
$self->{cache}->check_options(option_results => $self->{option_results});
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -111,6 +125,19 @@ sub get_token {
|
|||||||
return md5_hex($self->{api_token});
|
return md5_hex($self->{api_token});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub trace_api {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
my $trace_file = $self->{option_results}->{trace_api} ne '' ? $self->{option_results}->{trace_api} : '/tmp/cisco_meraki_plugins.trace';
|
||||||
|
open(FH, '>>', $trace_file) or return ;
|
||||||
|
|
||||||
|
my $time = Time::HiRes::time();
|
||||||
|
my $date = POSIX::strftime('%Y%m%d %H:%M:%S', localtime($time));
|
||||||
|
$date .= sprintf('.%03d', ($time - int($time)) * 1000);
|
||||||
|
print FH "$date - $self->{api_token} - $options{url}\n";
|
||||||
|
close FH;
|
||||||
|
}
|
||||||
|
|
||||||
sub get_shard_hostname {
|
sub get_shard_hostname {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
@ -207,6 +234,8 @@ sub request_api {
|
|||||||
#404: Not found- No such URL, or you don't have access to the API or organization at all.
|
#404: Not found- No such URL, or you don't have access to the API or organization at all.
|
||||||
#429: Too Many Requests- You submitted more than 5 calls in 1 second to an Organization, triggering rate limiting. This also applies for API calls made across multiple organizations that triggers rate limiting for one of the organizations.
|
#429: Too Many Requests- You submitted more than 5 calls in 1 second to an Organization, triggering rate limiting. This also applies for API calls made across multiple organizations that triggers rate limiting for one of the organizations.
|
||||||
while (1) {
|
while (1) {
|
||||||
|
$self->trace_api(url => $hostname . '/api/v1' . $options{endpoint})
|
||||||
|
if (defined($self->{option_results}->{trace_api}));
|
||||||
my $response = $self->{http}->request(
|
my $response = $self->{http}->request(
|
||||||
hostname => $hostname,
|
hostname => $hostname,
|
||||||
url_path => '/api/v1' . $options{endpoint},
|
url_path => '/api/v1' . $options{endpoint},
|
||||||
|
@ -384,15 +384,17 @@ sub add_uplink_loss_latency {
|
|||||||
$interface =~ s/\s+//g;
|
$interface =~ s/\s+//g;
|
||||||
next if (!defined($self->{devices}->{ $options{serial} }->{device_links}->{$interface}));
|
next if (!defined($self->{devices}->{ $options{serial} }->{device_links}->{$interface}));
|
||||||
|
|
||||||
my ($latency, $loss) = (0, 0);
|
my ($latency, $loss, $count) = (0, 0, 0);
|
||||||
foreach my $ts (@{$_->{timeSeries}}) {
|
foreach my $ts (@{$_->{timeSeries}}) {
|
||||||
|
next if (!defined($ts->{latencyMs}));
|
||||||
$latency += $ts->{latencyMs};
|
$latency += $ts->{latencyMs};
|
||||||
$loss += $ts->{lossPercent};
|
$loss += $ts->{lossPercent};
|
||||||
|
$count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scalar(@{$_->{timeSeries}}) > 0) {
|
if ($count > 0) {
|
||||||
$latency /= scalar(@{$_->{timeSeries}});
|
$latency /= $count;
|
||||||
$loss /= scalar(@{$_->{timeSeries}});
|
$loss /= $count;
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{devices}->{ $options{serial} }->{device_links}->{$interface}->{loss_percent} = $loss;
|
$self->{devices}->{ $options{serial} }->{device_links}->{$interface}->{loss_percent} = $loss;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user