From f823feb70c22566dba55842af459821a81fc6741 Mon Sep 17 00:00:00 2001 From: sdepassio <114986849+sdepassio@users.noreply.github.com> Date: Tue, 19 Aug 2025 11:04:24 +0200 Subject: [PATCH] feat(apps::monitoring::latencetech::restapi): new pack apps monitoring latencetech restapi (#5706) Co-authored-by: thibaults-centreon Co-authored-by: omercier <32134301+omercier@users.noreply.github.com> --- .gitignore | 1 + .../deb.json | 4 + .../pkg.json | 9 + .../rpm.json | 4 + .../latencetech/restapi/custom/api.pm | 205 ++++++++ .../latencetech/restapi/mode/connectivity.pm | 496 ++++++++++++++++++ .../latencetech/restapi/mode/discovery.pm | 93 ++++ .../latencetech/restapi/mode/forecast.pm | 104 ++++ .../latencetech/restapi/mode/latency.pm | 173 ++++++ .../latencetech/restapi/mode/radio.pm | 150 ++++++ .../latencetech/restapi/mode/throughput.pm | 171 ++++++ .../latencetech/restapi/mode/twamp.pm | 131 +++++ .../monitoring/latencetech/restapi/plugin.pm | 55 ++ .../latencetech/restapi/connectivity.robot | 123 +++++ .../latencetech/restapi/discovery.robot | 36 ++ .../latencetech/restapi/forecast.robot | 43 ++ .../latencetech/restapi/latency.robot | 61 +++ .../latencetech/restapi/mockoon.json | 495 +++++++++++++++++ .../latencetech/restapi/radio.robot | 55 ++ .../latencetech/restapi/throughput.robot | 55 ++ .../latencetech/restapi/twamp.robot | 51 ++ tests/resources/spellcheck/stopwords.txt | 3 + 22 files changed, 2518 insertions(+) create mode 100644 packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/deb.json create mode 100644 packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/pkg.json create mode 100644 packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/rpm.json create mode 100644 src/apps/monitoring/latencetech/restapi/custom/api.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/connectivity.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/discovery.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/forecast.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/latency.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/radio.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/throughput.pm create mode 100644 src/apps/monitoring/latencetech/restapi/mode/twamp.pm create mode 100644 src/apps/monitoring/latencetech/restapi/plugin.pm create mode 100644 tests/apps/monitoring/latencetech/restapi/connectivity.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/discovery.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/forecast.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/latency.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/mockoon.json create mode 100644 tests/apps/monitoring/latencetech/restapi/radio.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/throughput.robot create mode 100644 tests/apps/monitoring/latencetech/restapi/twamp.robot diff --git a/.gitignore b/.gitignore index 832e6bb1b..db5c31d06 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ output.xml report.html .editorconfig .idea +.venv diff --git a/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/deb.json b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/deb.json new file mode 100644 index 000000000..9757fe112 --- /dev/null +++ b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/deb.json @@ -0,0 +1,4 @@ +{ + "dependencies": [ + ] +} diff --git a/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/pkg.json b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/pkg.json new file mode 100644 index 000000000..581f51e03 --- /dev/null +++ b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/pkg.json @@ -0,0 +1,9 @@ +{ + "pkg_name": "centreon-plugin-Applications-Monitoring-Latencetech-Restapi", + "pkg_summary": "Centreon Plugin LatenceTech Restapi", + "plugin_name": "centreon_latencetech_restapi.pl", + "files": [ + "centreon/plugins/script_custom.pm", + "apps/monitoring/latencetech/restapi/" + ] +} diff --git a/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/rpm.json b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/rpm.json new file mode 100644 index 000000000..9757fe112 --- /dev/null +++ b/packaging/centreon-plugin-Applications-Monitoring-Latencetech-Restapi/rpm.json @@ -0,0 +1,4 @@ +{ + "dependencies": [ + ] +} diff --git a/src/apps/monitoring/latencetech/restapi/custom/api.pm b/src/apps/monitoring/latencetech/restapi/custom/api.pm new file mode 100644 index 000000000..a7d8f7580 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/custom/api.pm @@ -0,0 +1,205 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::custom::api; + +use strict; +use warnings; +use centreon::plugins::http; + +sub new { + my ($class, %options) = @_; + my $self = {}; + bless $self, $class; + + if (!defined($options{output})) { + print "Class Custom: Need to specify 'output' argument.\n"; + exit 3; + } + if (!defined($options{options})) { + $options{output}->add_option_msg(short_msg => "Class Custom: Need to specify 'options' argument."); + $options{output}->option_exit(); + } + + if (!defined($options{noptions})) { + $options{options}->add_options(arguments => { + 'agent-id:s' => { name => 'agent_id' }, + 'api-key:s' => { name => 'api_key' }, + 'api-path:s' => { name => 'api_path' }, + 'customer-id:s' => { name => 'customer_id' }, + 'hostname:s' => { name => 'hostname' }, + 'port:s' => { name => 'port' }, + 'proto:s' => { name => 'proto' }, + 'timeout:s' => { name => 'timeout' } + }); + } + $options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1); + + $self->{output} = $options{output}; + $self->{http} = centreon::plugins::http->new(%options, default_backend => 'curl'); + + return $self; +} + +sub set_options { + my ($self, %options) = @_; + + $self->{option_results} = $options{option_results}; +} + +sub set_defaults {} + +sub check_options { + my ($self, %options) = @_; + + $self->{hostname} = $self->{option_results}->{hostname}; + $self->{customer_id} = $self->{option_results}->{customer_id}; + $self->{agent_id} = $self->{option_results}->{agent_id}; + $self->{api_key} = $self->{option_results}->{api_key}; + $self->{api_path} = $self->{option_results}->{api_path} // '/api/v1'; + $self->{port} = $self->{option_results}->{port} // '12099'; + $self->{proto} = $self->{option_results}->{proto} // 'https'; + $self->{timeout} = $self->{option_results}->{timeout} // 10; + $self->{unknown_http_status} = $self->{option_results}->{unknown_http_status} // '%{http_code} < 200 or %{http_code} >= 300'; + $self->{warning_http_status} = $self->{option_results}->{warning_http_status} // ''; + $self->{critical_http_status} = $self->{option_results}->{critical_http_status} // ''; + + if (centreon::plugins::misc::is_empty($self->{hostname})) { + $self->{output}->add_option_msg(short_msg => "Need to specify --hostname option."); + $self->{output}->option_exit(); + } + if (centreon::plugins::misc::is_empty($self->{customer_id})) { + $self->{output}->add_option_msg(short_msg => "Need to specify --customer-id option."); + $self->{output}->option_exit(); + } + if (centreon::plugins::misc::is_empty($self->{api_key})) { + $self->{output}->add_option_msg(short_msg => "Need to specify --api-key option."); + $self->{output}->option_exit(); + } + + return 0; +} + +sub build_options_for_httplib { + my ($self, %options) = @_; + + $self->{option_results}->{hostname} = $self->{hostname}; + $self->{option_results}->{timeout} = $self->{timeout}; + $self->{option_results}->{proto} = $self->{proto}; + $self->{option_results}->{port} = $self->{port}; +} + +sub settings { + my ($self, %options) = @_; + + $self->build_options_for_httplib(); + $self->{http}->add_header(key => 'Accept', value => 'application/json'); + $self->{http}->add_header(key => 'Content-Type', value => 'application/json'); + $self->{http}->add_header(key => 'x-api-key', value => $self->{api_key}); + $self->{http}->set_options(%{$self->{option_results}}); +} + +sub request_api { + my ($self, %options) = @_; + + $self->settings(); + + my ($json, $response); + my $get_param = [ "customer_id=$self->{customer_id}" ]; + if (defined($self->{option_results}->{agent_id}) && $self->{option_results}->{agent_id} ne '') { + push(@$get_param, "agent_id=$self->{option_results}->{agent_id}"); + } + if (defined($options{get_param})) { + push(@$get_param, @{$options{get_param}}); + } + + $response = $self->{http}->request( + get_param => $get_param, + method => $options{method}, + url_path => $self->{api_path} . $options{endpoint}, + unknown_status => $self->{unknown_http_status}, + warning_status => $self->{warning_http_status}, + critical_status => $self->{critical_http_status} + ); + + if ($self->{http}->get_code() < 200 || $self->{http}->get_code() >= 300) { + $self->{output}->add_option_msg(short_msg => "API returns empty content [code: '" . $self->{http}->get_code() . "'] [message: '" . $self->{http}->get_message() . "']"); + $self->{output}->output_add(long_msg => $response); + $self->{output}->option_exit(); + } + + $json = centreon::plugins::misc::json_decode($response); + + return $json; +} + +1; + +__END__ + +=head1 NAME + +LatenceTech Rest API. + +=head1 REST API OPTIONS + +LatenceTech Rest API. + +=over 8 + +=item B<--hostname> + +Set Latencetech hostname or IP address. + +=item B<--port> + +Port used (default: 12099). + +=item B<--proto> + +Specify https if needed (default: 'https'). + +=item B<--api-path> + +Set API path (default: '/api/v1'). + +=item B<--api-key> + +Set API key (mandatory). + +=item B<--customer-id> + +Set cutomer/network ID (mandatory). + +=item B<--agent-id> + +Set Agent ID (for modes that require it). + +=item B<--timeout> + +Set timeout in seconds (default: 10). + +=back + +=head1 DESCRIPTION + +B. + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/connectivity.pm b/src/apps/monitoring/latencetech/restapi/mode/connectivity.pm new file mode 100644 index 000000000..325a83810 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/connectivity.pm @@ -0,0 +1,496 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::connectivity; + +use base qw(centreon::plugins::templates::counter); +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'kpis', type => 1, cb_prefix_output => 'prefix_output', message_multiple => 'All KPIs are OK', skipped_code => { -10 => 1 } } + ]; + + $self->{maps_counters}->{kpis} = [ + { label => 'tcp-response-time', nlabel => 'tcp.response.time.milliseconds', set => { + key_values => [ { name => 'tcpMs' }, { name => 'display' } ], + output_template => 'TCP Response Time: %.2fms', + perfdatas => [ + { value => 'tcpMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'udp-response-time', nlabel => 'udp.response.time.milliseconds', set => { + key_values => [ { name => 'udpMs' }, { name => 'display' } ], + output_template => 'UDP Response Time: %.2fms', + perfdatas => [ + { value => 'udpMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'http-response-time', nlabel => 'http.response.time.milliseconds', set => { + key_values => [ { name => 'httpMs' }, { name => 'display' } ], + output_template => 'HTTP Response Time: %.2fms', + perfdatas => [ + { value => 'httpMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'https-response-time', nlabel => 'https.response.time.milliseconds', set => { + key_values => [ { name => 'httpsMs' }, { name => 'display' } ], + output_template => 'HTTPS Response Time: %.2fms', + perfdatas => [ + { value => 'httpsMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'icmp-response-time', nlabel => 'icmp.response.time.milliseconds', set => { + key_values => [ { name => 'icmpMs' }, { name => 'display' } ], + output_template => 'ICMP Response Time: %.2fms', + perfdatas => [ + { value => 'icmpMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'twamp-response-time', nlabel => 'twamp.response.time.milliseconds', set => { + key_values => [ { name => 'twampMs' }, { name => 'display' } ], + output_template => 'TWAMP Response Time: %.2fms', + perfdatas => [ + { value => 'twampMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'download-bandwidth', nlabel => 'download.bandwidth.bps', set => { + key_values => [ { name => 'downloadThroughputMbps' }, { name => 'display' } ], + output_template => 'DL bandwidth: %s%sps', + output_change_bytes => 2, + perfdatas => [ + { value => 'downloadThroughputMbps', + template => '%s', + min => 0, + unit => 'bps', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'upload-bandwidth', nlabel => 'upload.bandwidth.bps', set => { + key_values => [ { name => 'uploadThroughputMbps' }, { name => 'display' } ], + output_template => 'UL bandwidth: %s%sps', + output_change_bytes => 2, + perfdatas => [ + { value => 'uploadThroughputMbps', + template => '%s', + min => 0, + unit => 'bps', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'jitter-time', nlabel => 'jitter.time.milliseconds', set => { + key_values => [ { name => 'jitterMs' }, { name => 'display' } ], + output_template => 'Jitter Time: %.2fms', + perfdatas => [ + { value => 'jitterMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'application-latency', nlabel => 'application.latency.milliseconds', set => { + key_values => [ { name => 'applicationLatencyMs' }, { name => 'display' } ], + output_template => 'Application latency: %.2fms', + perfdatas => [ + { value => 'applicationLatencyMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'network-latency', nlabel => 'network.latency.milliseconds', set => { + key_values => [ { name => 'networkLatencyMs' }, { name => 'display' } ], + output_template => 'Network latency: %.2fms', + perfdatas => [ + { value => 'networkLatencyMs', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'expected-latency', nlabel => 'expected.latency.milliseconds', set => { + key_values => [ { name => 'expectedLatencyMS' }, { name => 'display' } ], + output_template => 'Expected latency: %.2fms', + perfdatas => [ + { value => 'expectedLatencyMS', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'network-stability-prct', nlabel => 'network.stability.percentage', set => { + key_values => [ { name => 'networkStabilityPercent' }, { name => 'display' } ], + output_template => 'Network stability: %.2f%%', + perfdatas => [ + { value => 'networkStabilityPercent', + template => '%.2f', + min => 0, + max => 100, + unit => '%', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'expected-stability-prct', nlabel => 'expected.stability.percentage', set => { + key_values => [ { name => 'expectedStabilityPercent' }, { name => 'display' } ], + output_template => 'Expected stability: %.2f%%', + perfdatas => [ + { value => 'expectedStabilityPercent', + template => '%.2f', + min => 0, + max => 100, + unit => '%', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'volatility-prct', nlabel => 'volatility.percentage', set => { + key_values => [ { name => 'volatilityPercent' }, { name => 'display' } ], + output_template => 'Volatility: %.2f%%', + perfdatas => [ + { value => 'volatilityPercent', + template => '%.2f', + min => 0, + max => 100, + unit => '%', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'qoe-rate', nlabel => 'qoe.rate.value', set => { + key_values => [ { name => 'qualityOfExperience' }, { name => 'display' } ], + output_template => 'Quality of Experience: %.3f', + perfdatas => [ + { value => 'qualityOfExperience', + template => '%.3f', + min => 0, + max => 5, + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'packet-loss-prct', nlabel => 'packetloss.rate.percentage', set => { + key_values => [ { name => 'packetLossRatePercent' }, { name => 'display' } ], + output_template => 'Packet loss rate: %.2f%%', + perfdatas => [ + { value => 'packetLossRatePercent', + template => '%.2f', + min => 0, + max => 100, + unit => '%', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'expected-packet-loss-prct', nlabel => 'expected.packetloss.rate.percentage', set => { + key_values => [ { name => 'expectedPacketLossPercent' }, { name => 'display' } ], + output_template => 'Expected packet loss rate: %.2f%%', + perfdatas => [ + { value => 'expectedPacketLossPercent', + template => '%.2f', + min => 0, + max => 100, + unit => '%', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'connectivity-health', + type => 2, + warning_default => '%{connectivityHealth} =~ "Warning"', + critical_default => '%{connectivityHealth} =~ "Need Attention"', + set => { + key_values => [ { name => 'connectivityHealth' }, { name => 'display' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + ]; +} + +sub prefix_output { + my ($self, %options) = @_; + + return "Agent '" . $options{instance_value}->{display} . "' "; +} + +sub custom_status_output { + my ($self, %options) = @_; + + return 'Connectivity health: "' . $self->{result_values}->{connectivityHealth} . '"'; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $results = $options{custom}->request_api(endpoint => '/ci'); + $self->{kpis}->{$results->{AgentID}}->{display} = $results->{AgentID} . '-' . $results->{Attributes}->{agentName}; + foreach my $kpi (keys %{$results->{KPIs}}) { + if ($kpi eq 'downloadThroughputMbps' || $kpi eq 'uploadThroughputMbps') { + my $value = centreon::plugins::misc::convert_bytes(value => $results->{KPIs}->{$kpi}, unit => 'Mb', network => 'true'); + $self->{kpis}->{$results->{AgentID}}->{$kpi} = $value; + } else { + $self->{kpis}->{$results->{AgentID}}->{$kpi} = $results->{KPIs}->{$kpi}; + } + } +} + +1; + +__END__ + +=head1 MODE + +Check agent connectivity statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--warning-tcp-response-time> + +Warning thresholds for TCP response time in milliseconds. + +=item B<--critical-tcp-response-time> + +Critical thresholds for TCP response time in milliseconds. + +=item B<--warning-udp-response-time> + +Warning thresholds for UDP response time in milliseconds. + +=item B<--critical-udp-response-time> + +Critical thresholds for UDP response time in milliseconds. + +=item B<--warning-http-response-time> + +Warning thresholds for HTTP response time in milliseconds. + +=item B<--critical-http-response-time> + +Critical thresholds for HTTP response time in milliseconds. + +=item B<--warning-https-response-time> + +Warning thresholds for HTTPS response time in milliseconds. + +=item B<--critical-https-response-time> + +Critical thresholds for HTTPS response time in milliseconds. + +=item B<--warning-icmp-response-time> + +Warning thresholds for ICMP response time in milliseconds. + +=item B<--critical-icmp-response-time> + +Critical thresholds for ICMP response time in milliseconds. + +=item B<--warning-twamp-response-time> + +Warning thresholds for TWAMP response time in milliseconds. + +=item B<--critical-twamp-response-time> + +Critical thresholds for TWAMP response time in milliseconds. + +=item B<--warning-download-bandwidth> + +Warning thresholds for download bandwidth in bps. + +=item B<--critical-download-bandwidth> + +Critical thresholds for download bandwidth in bps. + +=item B<--warning-upload-bandwidth> + +Warning thresholds for upload bandwidth in bps. + +=item B<--critical-upload-bandwidth> + +Critical thresholds for upload bandwidth in bps. + +=item B<--warning-jitter-time> + +Warning thresholds for jitter time in milliseconds. + +=item B<--critical-jitter-time> + +Critical thresholds for jitter time in milliseconds. + +=item B<--warning-application-latency> + +Warning thresholds for application latency in milliseconds. + +=item B<--critical-application-latency> + +Critical thresholds for application latency in milliseconds. + +=item B<--warning-network-latency> + +Warning thresholds for network latency in milliseconds. + +=item B<--critical-network-latency> + +Critical thresholds for network latency in milliseconds. + +=item B<--warning-expected-latency> + +Warning thresholds for expected latency in milliseconds. + +=item B<--critical-expected-latency> + +Critical thresholds for expected latency in milliseconds. + +=item B<--warning-network-stability-prct> + +Warning thresholds for network stability percentage. + +=item B<--critical-network-stability-prct> + +Critical thresholds for network stability percentage. + +=item B<--warning-expected-stability-prct> + +Warning thresholds for expected stability percentage. + +=item B<--critical-expected-stability-prct> + +Critical thresholds for expected stability percentage. + +=item B<--warning-volatility-prct> + +Warning thresholds for volatility percentage. + +=item B<--critical-volatility-prct> + +Critical thresholds for volatility percentage. + +=item B<--warning-qoe-rate> + +Warning thresholds for Quality of Experience rate. + +=item B<--critical-qoe-rate> + +Critical thresholds for Quality of Experience rate. + +=item B<--warning-packet-loss-prct> + +Warning thresholds for packet loss percentage. + +=item B<--critical-packet-loss-prct> + +Critical thresholds for packet loss percentage. + +=item B<--warning-expected-packet-loss-prct> + +Warning thresholds for expected packet loss percentage. + +=item B<--critical-expected-packet-loss-prct> + +Critical thresholds for expected packet loss percentage. + +=item B<--warning-connectivity-health> + +Define the conditions to match for the connectivity status to be WARNING. +(default: '%{connectivityHealth} =~ "Warning"'). + +=item B<--critical-connectivity-health> + +Define the conditions to match for the connectivity status to be CRITICAL. +(default: '%{connectivityHealth} =~ "Need Attention"'). + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/discovery.pm b/src/apps/monitoring/latencetech/restapi/mode/discovery.pm new file mode 100644 index 000000000..0e5681d02 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/discovery.pm @@ -0,0 +1,93 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::discovery; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; +use JSON::XS; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'prettify' => { name => 'prettify' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub run { + my ($self, %options) = @_; + + my $disco_stats; + $disco_stats->{start_time} = time(); + + my @get_param = [ 'metadata=true' ]; + my $results = $options{custom}->request_api( + endpoint => '/agents', + get_param => @get_param, + method => 'GET', + ); + + $disco_stats->{end_time} = time(); + $disco_stats->{duration} = $disco_stats->{end_time} - $disco_stats->{start_time}; + $disco_stats->{discovered_items} = scalar(@{$results->{agents}}); + $disco_stats->{results} = $results->{agents}; + + my $encoded_data; + eval { + if (defined($self->{option_results}->{prettify})) { + $encoded_data = JSON::XS->new->utf8->pretty->encode($disco_stats); + } else { + $encoded_data = JSON::XS->new->utf8->encode($disco_stats); + } + }; + if ($@) { + $encoded_data = '{"code":"encode_error","message":"Cannot encode discovered data into JSON format"}'; + } + + $self->{output}->output_add(short_msg => $encoded_data); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1); + $self->{output}->exit(); +} + +1; + +__END__ + +=head1 MODE + +LatenceTech agents discovery. + +=over 8 + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/forecast.pm b/src/apps/monitoring/latencetech/restapi/mode/forecast.pm new file mode 100644 index 000000000..291dac29c --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/forecast.pm @@ -0,0 +1,104 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::forecast; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub prefix_output { + my ($self, %options) = @_; + + return "Agent '" . $options{instance_value}->{display} . "' "; +} + +sub custom_forecast_output { + my ($self, %options) = @_; + + return sprintf('Projected latency %.2fms (forecasting interval: %.2fms, confidence level: %s)', + $self->{result_values}->{projectedLatencyMs}, $self->{result_values}->{forecastingIntervalMs}, $self->{result_values}->{confidenceLevel}); +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_output' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'projected-latency', nlabel => 'latency.projected.time.milliseconds', set => { + key_values => [ { name => 'projectedLatencyMs' }, { name => 'display' }, { name => 'confidenceLevel' }, { name => 'forecastingIntervalMs' }], + closure_custom_output => $self->can('custom_forecast_output'), + perfdatas => [ + { value => 'projectedLatencyMs', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'display' }, + ], + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->{global} = {}; + my $results = $options{custom}->request_api(endpoint => '/forecast'); + $self->{global}->{display} = $results->{agentID}; + foreach my $kpi (keys %{$results}) { + $self->{global}->{$kpi} = $results->{$kpi}; + } +} + +1; + +__END__ + +=head1 MODE + +Check agent forecast statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--warning-projected-latency> + +Warning thresholds for projected latency. + +=item B<--critical-projected-latency> + +Critical thresholds for projected latency. + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/latency.pm b/src/apps/monitoring/latencetech/restapi/mode/latency.pm new file mode 100644 index 000000000..9ba4959c3 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/latency.pm @@ -0,0 +1,173 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::latency; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'latency', type => 1, cb_prefix_output => 'prefix_output', message_multiple => 'All latencies are OK', skipped_code => { -10 => 1 } } + ]; + + $self->{maps_counters}->{latency} = [ + { label => 'latency-average', nlabel => 'latency.average.milliseconds', set => { + key_values => [ { name => 'latency_average' }, { name => 'points' }, { name => 'display' },{ name => 'protocol' } ], + output_template => 'average: %.2fms', + perfdatas => [ + { value => 'latency_average', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'protocol' }, + ], + } + }, + { label => 'latency-minimum', nlabel => 'latency.minimum.milliseconds', set => { + key_values => [ { name => 'latency_minimum' }, { name => 'protocol' } ], + output_template => 'minimum: %.2fms', + perfdatas => [ + { value => 'latency_minimum', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'protocol' }, + ], + } + }, + { label => 'latency-maximum', nlabel => 'latency.maximum.milliseconds', set => { + key_values => [ { name => 'latency_maximum' }, { name => 'protocol' } ], + output_template => 'maximum: %.2fms', + perfdatas => [ + { value => 'latency_maximum', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'protocol' }, + ], + } + } + ]; +} + +sub prefix_output { + my ($self, %options) = @_; + + return sprintf('Latency for Agent %s, Protocol %s (%s points): ', $options{instance_value}->{display}, $options{instance_value}->{protocol}, $options{instance_value}->{points}); +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-protocol:s' => { name => 'filter_protocol' }, + 'timerange:s' => { name => 'time_range', default => '300'} + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + foreach my $protocol ('tcp', 'udp', 'http', 'https', 'icmp', 'twamp') { + next if (defined($self->{option_results}->{filter_protocol}) && $self->{option_results}->{filter_protocol} ne '' && + $protocol !~ /$self->{option_results}->{filter_protocol}/i); + + my @get_param = [ + "protocol=$protocol", + "time_range=$self->{option_results}->{time_range}" + ]; + + my $results = $options{custom}->request_api(endpoint => '/latency', get_param => @get_param); + + foreach my $timeserie (@{$results}) { + $self->{latency}->{$protocol}->{display} = $timeserie->{agentID}; + $self->{latency}->{$protocol}->{protocol} = $timeserie->{measurement}; + $self->{timeseries}->{$protocol}->{points}++; + $self->{timeseries}->{$protocol}->{total} += $timeserie->{value}; + $self->{timeseries}->{$protocol}->{metrics}->{minimum} = $timeserie->{value} + if (!defined($self->{timeseries}->{$protocol}->{metrics}->{minimum}) || $timeserie->{value} < $self->{timeseries}->{$protocol}->{metrics}->{minimum}); + $self->{timeseries}->{$protocol}->{metrics}->{maximum} = $timeserie->{value} + if (!defined($self->{timeseries}->{$protocol}->{metrics}->{maximum}) || $timeserie->{value} > $self->{timeseries}->{$protocol}->{metrics}->{maximum}); + } + $self->{timeseries}->{$protocol}->{metrics}->{average} = $self->{timeseries}->{$protocol}->{total} / $self->{timeseries}->{$protocol}->{points}++; + $self->{latency}->{$protocol}->{points} = $self->{timeseries}->{$protocol}->{points}; + + foreach (keys %{$self->{timeseries}->{$protocol}->{metrics}}) { + $self->{latency}->{$protocol}->{"latency_" . $_} = $self->{timeseries}->{$protocol}->{metrics}->{$_}; + } + } +} + +1; + +__END__ + +=head1 MODE + +Check agent latency statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--filter-protocol> + +Filter protocol if needed (can be a regexp) +Accepted values are C, C, C, C, C, C. + +=item B<--timerange> + +Choose a timerange of values on wich datas shoud be aggregated (in seconds). +(default: '300') + +=item B<--warning-latency-average> + +Warning thresholds for average latency. + +=item B<--critical-latency-average> + +Critical thresholds for average latency. + +=item B<--warning-latency-minimum> + +Warning thresholds for minimum latency. + +=item B<--critical-latency-minimum> + +Critical thresholds for minimum latency. + +=item B<--warning-latency-maximum> + +Warning thresholds for maximum latency. + +=item B<--critical-latency-maximum> + +Critical thresholds for maximum latency. + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/radio.pm b/src/apps/monitoring/latencetech/restapi/mode/radio.pm new file mode 100644 index 000000000..0dd999f01 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/radio.pm @@ -0,0 +1,150 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::radio; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_output' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'snr-dbm', nlabel => 'signal.noise.ratio.db', set => { + key_values => [ { name => 'SINR_dB' }, { name => 'display' } ], + output_template => 'Signal noise ratio: %.2fdb', + perfdatas => [ + { value => 'SINR_dB', template => '%.2f', + unit => 'dbm', label_extra_instance => 1, instance_use => 'display' }, + ], + } + }, + { label => 'rssi-dbm', nlabel => 'received.signalstrength.indicator.dbm', set => { + key_values => [ { name => 'RSSI_dBm' }, { name => 'display' } ], + output_template => 'Received Signal Strength Indicator: %.2fdbm', + perfdatas => [ + { value => 'RSSI_dBm', template => '%.2f', + unit => 'dbm', label_extra_instance => 1, instance_use => 'display' }, + ], + } + }, + { label => 'rsrp-dbm', nlabel => 'reference.signalreceive.power.dbm', set => { + key_values => [ { name => 'RSRP_dBm' }, { name => 'display' } ], + output_template => 'Reference signal receive power: %.2fdbm', + perfdatas => [ + { value => 'RSRP_dBm', template => '%.2f', + unit => 'dbm', label_extra_instance => 1, instance_use => 'display' }, + ], + } + }, + { label => 'rsrq-db', nlabel => 'reference.signalreceive.quality.dbm', set => { + key_values => [ { name => 'RSRQ_dB' }, { name => 'display' } ], + output_template => 'Reference signal receive quality: %.2fdb', + perfdatas => [ + { value => 'RSRQ_dB', template => '%.2f', + unit => 'db', label_extra_instance => 1, instance_use => 'display' }, + ], + } + } + ]; +} + +sub prefix_output { + my ($self, %options) = @_; + + return "Agent '" . $options{instance_value}->{display} . "' "; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->{global} = {}; + my $results = $options{custom}->request_api(endpoint => '/radio'); + $self->{global}->{display} = $results->{agentID}; + foreach my $kpi (keys %{$results}) { + if (defined($results->{$kpi}) && $results->{$kpi} !~ 'Unknown') { + $self->{global}->{$kpi} = $results->{$kpi}; + } + } +} + +1; + +__END__ + +=head1 MODE + +Check agent radio statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--warning-snr-dbm> + +Warning thresholds for signal noise ratio in dbm. + +=item B<--critical-snr-dbm> + +Critical thresholds for signal noise ratio in dbm. + +=item B<--warning-rssi-dbm> + +Warning thresholds for received signal strength indicator in dbm. + +=item B<--critical-rssi-dbm> + +Critical thresholds for received signal strength indicator in dbm. + +=item B<--warning-rsrp-dbm> + +Warning thresholds for reference signal receive power in dbm. + +=item B<--critical-rsrp-dbm> + +Critical thresholds for reference signal receive power in dbm. + +=item B<--warning-rsrq-db> + +Warning thresholds for reference signal receive quality in db. + +=item B<--critical-rsrq-db> + +Critical thresholds for reference signal receive quality in db. + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/throughput.pm b/src/apps/monitoring/latencetech/restapi/mode/throughput.pm new file mode 100644 index 000000000..a724ea8df --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/throughput.pm @@ -0,0 +1,171 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::throughput; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_output' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'lifbe-download', nlabel => 'lifbe.download.bandwidth.bps', set => { + key_values => [ { name => 'lifbeDownload' }, { name => 'display' } ], + output_template => 'LIFBE Download: %s%sps',, + output_change_bytes => 2, + perfdatas => [ + { value => 'lifbeDownload', + template => '%s', + min => 0, + unit => 'bps', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'lifbe-upload', nlabel => 'lifbe.upload.bandwidth.bps', set => { + key_values => [ { name => 'lifbeUpload' }, { name => 'display' } ], + output_template => 'LIFBE Upload: %s%sps',, + output_change_bytes => 2, + perfdatas => [ + { value => 'lifbeUpload', + template => '%s', + min => 0, + unit => 'bps', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'jitter-download', nlabel => 'jitter.download.time.milliseconds', set => { + key_values => [ { name => 'jitterDownload' }, { name => 'display' } ], + output_template => 'Jitter Download Time: %.2fms', + perfdatas => [ + { value => 'jitterDownload', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + }, + { label => 'jitter-upload', nlabel => 'jitter.upload.time.milliseconds', set => { + key_values => [ { name => 'jitterUpload' }, { name => 'display' } ], + output_template => 'Jitter Upload Time: %.2fms', + perfdatas => [ + { value => 'jitterUpload', + template => '%.2f', + min => 0, + unit => 'ms', + label_extra_instance => 1, + instance_use => 'display' }, + ], + } + } + ]; +} + +sub prefix_output { + my ($self, %options) = @_; + + return "Agent '" . $options{instance_value}->{display} . "' "; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->{global} = {}; + my $results = $options{custom}->request_api(endpoint => '/lifbe'); + $self->{global}->{display} = $results->{agentID}; + foreach my $kpi (keys %{$results}) { + if ($kpi eq 'lifbeDownload' || $kpi eq 'lifbeUpload') { + my $value = centreon::plugins::misc::convert_bytes(value => $results->{$kpi}, unit => 'Mb', network => 'true'); + $self->{global}->{$kpi} = $value; + } else { + $self->{global}->{$kpi} = $results->{$kpi}; + } + } +} + +1; + +__END__ + +=head1 MODE + +Check agent throughput statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--warning-lifbe-download> + +Warning thresholds for LIFBE (Low Intrusive Fast Bandwidth Estimation) download bandwidth (in bps). + +=item B<--critical-lifbe-download> + +Critical thresholds for LIFBE (Low Intrusive Fast Bandwidth Estimation) download bandwidth (in bps). + +=item B<--warning-lifbe-upload> + +Warning thresholds for LIFBE (Low Intrusive Fast Bandwidth Estimation) upload bandwidth (in bps). + +=item B<--critical-lifbe-upload> + +Critical thresholds for LIFBE (Low Intrusive Fast Bandwidth Estimation) upload bandwidth (in bps). + +=item B<--warning-jitter-download> + +Warning thresholds for jitter download time (in milliseconds). + +=item B<--critical-jitter-download> + +Critical thresholds for jitter download time (in milliseconds). + +=item B<--warning-jitter-upload> + +Warning thresholds for jitter upload time (in milliseconds). + +=item B<--critical-jitter-upload> + +Critical thresholds for jitter upload time (in milliseconds). + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/mode/twamp.pm b/src/apps/monitoring/latencetech/restapi/mode/twamp.pm new file mode 100644 index 000000000..6e9797aba --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/mode/twamp.pm @@ -0,0 +1,131 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::mode::twamp; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_output' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'twamp-forward', nlabel => 'twamp.forwarddelta.time.milliseconds', set => { + key_values => [ { name => 'TWAMPfwdDelta' }, { name => 'display' } ], + output_template => 'TWAMP Forward Delta: %.2fms', + perfdatas => [ + { value => 'TWAMPfwdDelta', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'display' }, + ], + } + }, + { label => 'twamp-reverse', nlabel => 'twamp.reversedelta.time.milliseconds', set => { + key_values => [ { name => 'TWAMPRevDelta' }, { name => 'display' } ], + output_template => 'TWAMP Reverse Delta: %.2fms', + perfdatas => [ + { value => 'TWAMPRevDelta', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'display' }, + ], + } + }, + { label => 'twamp-processing', nlabel => 'twamp.processingdelta.time.milliseconds', set => { + key_values => [ { name => 'TWAMPProcDelta' }, { name => 'display' } ], + output_template => 'TWAMP Processing Delta: %.2fms', + perfdatas => [ + { value => 'TWAMPProcDelta', template => '%.2f', + min => 0, unit => 'ms', label_extra_instance => 1, instance_use => 'display' }, + ], + } + } + ]; +} + +sub prefix_output { + my ($self, %options) = @_; + + return "Agent '" . $options{instance_value}->{display} . "' "; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->{global} = {}; + my $results = $options{custom}->request_api(endpoint => '/twamp'); + $self->{global}->{display} = $results->{agentID}; + foreach my $kpi (keys %{$results}) { + $self->{global}->{$kpi} = $results->{$kpi}; + } +} + +1; + +__END__ + +=head1 MODE + +Check agent TWAMP statistics. + +=over 8 + +=item B<--agent-id> + +Set the ID of the agent (mandatory option). + +=item B<--warning-twamp-forward> + +Warning thresholds for TWAMP forward delta time (in milliseconds). + +=item B<--critical-twamp-forward> + +Critical thresholds for TWAMP forward delta time (in milliseconds). + +=item B<--warning-twamp-reverse> + +Warning thresholds for TWAMP reverse delta time (in milliseconds). + +=item B<--critical-twamp-reverse> + +Critical thresholds for TWAMP reverse delta time (in milliseconds). + +=item B<--warning-twamp-processing> + +Warning thresholds for TWAMP processing delta time (in milliseconds). + +=item B<--critical-twamp-processing> + +Critical thresholds for TWAMP processing delta time (in milliseconds). + +=back + +=cut diff --git a/src/apps/monitoring/latencetech/restapi/plugin.pm b/src/apps/monitoring/latencetech/restapi/plugin.pm new file mode 100644 index 000000000..282ad8120 --- /dev/null +++ b/src/apps/monitoring/latencetech/restapi/plugin.pm @@ -0,0 +1,55 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::monitoring::latencetech::restapi::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_custom); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $self->{modes} = { + 'connectivity' => 'apps::monitoring::latencetech::restapi::mode::connectivity', + 'discovery' => 'apps::monitoring::latencetech::restapi::mode::discovery', + 'forecast' => 'apps::monitoring::latencetech::restapi::mode::forecast', + 'latency' => 'apps::monitoring::latencetech::restapi::mode::latency', + 'radio' => 'apps::monitoring::latencetech::restapi::mode::radio', + 'throughput' => 'apps::monitoring::latencetech::restapi::mode::throughput', + 'twamp' => 'apps::monitoring::latencetech::restapi::mode::twamp' + }; + + $self->{custom_modes}->{api} = 'apps::monitoring::latencetech::restapi::custom::api'; + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check LatenceTech agents metrics using the Rest API (https://docs.latence.ca/14-analyzer-api/). + +=cut diff --git a/tests/apps/monitoring/latencetech/restapi/connectivity.robot b/tests/apps/monitoring/latencetech/restapi/connectivity.robot new file mode 100644 index 000000000..c64eae149 --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/connectivity.robot @@ -0,0 +1,123 @@ +*** Settings *** +Documentation Check the LatenceTech connectivity mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=connectivity +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +Connectivity ${tc} + [Documentation] Check the agent connectivity statistics. + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=${customer_id} + ... --agent-id=${agent_id} + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc customer_id agent_id extraoptions expected_result -- + ... 1 0 0 ${EMPTY} + ... OK: Agent '0-GenericQoSAgent' TCP Response Time: 8.94ms, UDP Response Time: 9.53ms, HTTP Response Time: 9.09ms, HTTPS Response Time: 18.00ms, ICMP Response Time: 9.20ms, TWAMP Response Time: 9.45ms, DL bandwidth: 1.38Gbps, UL bandwidth: 950.06Mbps, Jitter Time: 6.10ms, Application latency: 11.39ms, Network latency: 9.32ms, Expected latency: 40.00ms, Network stability: 65.50%, Expected stability: 98.00%, Volatility: 46.20%, Quality of Experience: 4.921, Packet loss rate: 0.07%, Expected packet loss rate: 0.10%, Connectivity health: "OK" | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 2 1 1 ${EMPTY} + ... WARNING: Agent '1-GenericQoSAgent' Connectivity health: "Warning" | '1-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '1-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '1-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '1-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '1-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '1-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '1-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '1-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '1-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '1-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '1-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '1-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '1-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '1-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '1-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '1-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '1-GenericQoSAgent#packetloss.rate.percentage'=0.00%;;;0;100 '1-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 3 2 2 ${EMPTY} + ... CRITICAL: Agent '2-GenericQoSAgent' Connectivity health: "Need Attention" | '2-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '2-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '2-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '2-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '2-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '2-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '2-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '2-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '2-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '2-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '2-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '2-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '2-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '2-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '2-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '2-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '2-GenericQoSAgent#packetloss.rate.percentage'=0.00%;;;0;100 '2-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 4 0 0 --warning-tcp-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' TCP Response Time: 8.94ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;0:5;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 5 0 0 --critical-tcp-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' TCP Response Time: 8.94ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;0:5;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 6 0 0 --warning-udp-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' UDP Response Time: 9.53ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;0:5;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 7 0 0 --critical-udp-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' UDP Response Time: 9.53ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;0:5;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 8 0 0 --warning-http-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' HTTP Response Time: 9.09ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;0:5;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 9 0 0 --critical-http-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' HTTP Response Time: 9.09ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;0:5;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 10 0 0 --warning-https-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' HTTPS Response Time: 18.00ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;0:5;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 11 0 0 --critical-https-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' HTTPS Response Time: 18.00ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;0:5;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 12 0 0 --warning-icmp-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' ICMP Response Time: 9.20ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;0:5;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 13 0 0 --critical-icmp-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' ICMP Response Time: 9.20ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;0:5;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 14 0 0 --warning-twamp-response-time=5 + ... WARNING: Agent '0-GenericQoSAgent' TWAMP Response Time: 9.45ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;0:5;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 15 0 0 --critical-twamp-response-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' TWAMP Response Time: 9.45ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;0:5;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 16 0 0 --warning-download-bandwidth=1000000000 + ... WARNING: Agent '0-GenericQoSAgent' DL bandwidth: 1.38Gbps | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;0:1000000000;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 17 0 0 --critical-download-bandwidth=1000000000 + ... CRITICAL: Agent '0-GenericQoSAgent' DL bandwidth: 1.38Gbps | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;0:1000000000;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 18 0 0 --critical-download-bandwidth=1384000000 + ... OK: Agent '0-GenericQoSAgent' TCP Response Time: 8.94ms, UDP Response Time: 9.53ms, HTTP Response Time: 9.09ms, HTTPS Response Time: 18.00ms, ICMP Response Time: 9.20ms, TWAMP Response Time: 9.45ms, DL bandwidth: 1.38Gbps, UL bandwidth: 950.06Mbps, Jitter Time: 6.10ms, Application latency: 11.39ms, Network latency: 9.32ms, Expected latency: 40.00ms, Network stability: 65.50%, Expected stability: 98.00%, Volatility: 46.20%, Quality of Experience: 4.921, Packet loss rate: 0.07%, Expected packet loss rate: 0.10%, Connectivity health: "OK" | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;0:1384000000;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 19 0 0 --warning-upload-bandwidth=750000000 + ... WARNING: Agent '0-GenericQoSAgent' UL bandwidth: 950.06Mbps | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;0:750000000;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 20 0 0 --critical-upload-bandwidth=750000000 + ... CRITICAL: Agent '0-GenericQoSAgent' UL bandwidth: 950.06Mbps | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;0:750000000;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 21 0 0 --warning-jitter-time=5 + ... WARNING: Agent '0-GenericQoSAgent' Jitter Time: 6.10ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;0:5;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 22 0 0 --critical-jitter-time=5 + ... CRITICAL: Agent '0-GenericQoSAgent' Jitter Time: 6.10ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;0:5;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 23 0 0 --warning-application-latency=5 + ... WARNING: Agent '0-GenericQoSAgent' Application latency: 11.39ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;0:5;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 24 0 0 --critical-application-latency=5 + ... CRITICAL: Agent '0-GenericQoSAgent' Application latency: 11.39ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;0:5;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 25 0 0 --warning-network-latency=5 + ... WARNING: Agent '0-GenericQoSAgent' Network latency: 9.32ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;0:5;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 26 0 0 --critical-network-latency=5 + ... CRITICAL: Agent '0-GenericQoSAgent' Network latency: 9.32ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;0:5;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 27 0 0 --warning-expected-latency=20 + ... WARNING: Agent '0-GenericQoSAgent' Expected latency: 40.00ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;0:20;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 28 0 0 --critical-expected-latency=30 + ... CRITICAL: Agent '0-GenericQoSAgent' Expected latency: 40.00ms | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;0:30;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 29 0 0 --warning-network-stability-prct=50 + ... WARNING: Agent '0-GenericQoSAgent' Network stability: 65.50% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;0:50;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 30 0 0 --critical-network-stability-prct=60 + ... CRITICAL: Agent '0-GenericQoSAgent' Network stability: 65.50% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;0:60;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 31 0 0 --warning-expected-stability-prct=80 + ... WARNING: Agent '0-GenericQoSAgent' Expected stability: 98.00% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;0:80;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 32 0 0 --critical-expected-stability-prct=90 + ... CRITICAL: Agent '0-GenericQoSAgent' Expected stability: 98.00% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;0:90;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 33 0 0 --warning-volatility-prct=30 + ... WARNING: Agent '0-GenericQoSAgent' Volatility: 46.20% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;0:30;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 34 0 0 --critical-volatility-prct=40 + ... CRITICAL: Agent '0-GenericQoSAgent' Volatility: 46.20% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;0:40;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 35 0 0 --warning-qoe-rate=3 + ... WARNING: Agent '0-GenericQoSAgent' Quality of Experience: 4.921 | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;0:3;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 36 0 0 --critical-qoe-rate=4 + ... CRITICAL: Agent '0-GenericQoSAgent' Quality of Experience: 4.921 | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;0:4;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 37 0 0 --warning-packet-loss-prct=0.05 + ... WARNING: Agent '0-GenericQoSAgent' Packet loss rate: 0.07% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;0:0.05;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 38 0 0 --critical-packet-loss-prct=0.06 + ... CRITICAL: Agent '0-GenericQoSAgent' Packet loss rate: 0.07% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;0:0.06;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 39 0 0 --warning-expected-packet-loss-prct=0.05 + ... WARNING: Agent '0-GenericQoSAgent' Expected packet loss rate: 0.10% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;0:0.05;;0;100 + ... 40 0 0 --critical-expected-packet-loss-prct=0.075 + ... CRITICAL: Agent '0-GenericQoSAgent' Expected packet loss rate: 0.10% | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;0:0.075;0;100 + ... 41 0 0 --warning-connectivity-health='\\\%{connectivityHealth} =~ "OK"' + ... WARNING: Agent '0-GenericQoSAgent' Connectivity health: "OK" | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 42 0 0 --critical-connectivity-health='\\\%{connectivityHealth} =~ "OK"' + ... CRITICAL: Agent '0-GenericQoSAgent' Connectivity health: "OK" | '0-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '0-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '0-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '0-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '0-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '0-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '0-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '0-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '0-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '0-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '0-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '0-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '0-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '0-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '0-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '0-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '0-GenericQoSAgent#packetloss.rate.percentage'=0.07%;;;0;100 '0-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 + ... 43 1 1 --critical-connectivity-health='\\\%{connectivityHealth} =~ "Warning"' + ... CRITICAL: Agent '1-GenericQoSAgent' Connectivity health: "Warning" | '1-GenericQoSAgent#tcp.response.time.milliseconds'=8.94ms;;;0; '1-GenericQoSAgent#udp.response.time.milliseconds'=9.53ms;;;0; '1-GenericQoSAgent#http.response.time.milliseconds'=9.09ms;;;0; '1-GenericQoSAgent#https.response.time.milliseconds'=18.00ms;;;0; '1-GenericQoSAgent#icmp.response.time.milliseconds'=9.20ms;;;0; '1-GenericQoSAgent#twamp.response.time.milliseconds'=9.45ms;;;0; '1-GenericQoSAgent#download.bandwidth.bps'=1383580000bps;;;0; '1-GenericQoSAgent#upload.bandwidth.bps'=950060000bps;;;0; '1-GenericQoSAgent#jitter.time.milliseconds'=6.10ms;;;0; '1-GenericQoSAgent#application.latency.milliseconds'=11.39ms;;;0; '1-GenericQoSAgent#network.latency.milliseconds'=9.32ms;;;0; '1-GenericQoSAgent#expected.latency.milliseconds'=40.00ms;;;0; '1-GenericQoSAgent#network.stability.percentage'=65.50%;;;0;100 '1-GenericQoSAgent#expected.stability.percentage'=98.00%;;;0;100 '1-GenericQoSAgent#volatility.percentage'=46.20%;;;0;100 '1-GenericQoSAgent#qoe.rate.value'=4.921;;;0;5 '1-GenericQoSAgent#packetloss.rate.percentage'=0.00%;;;0;100 '1-GenericQoSAgent#expected.packetloss.rate.percentage'=0.10%;;;0;100 diff --git a/tests/apps/monitoring/latencetech/restapi/discovery.robot b/tests/apps/monitoring/latencetech/restapi/discovery.robot new file mode 100644 index 000000000..6d06e86c4 --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/discovery.robot @@ -0,0 +1,36 @@ +*** Settings *** +Documentation Check the LatenceTech discovery mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=discovery +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + +*** Test Cases *** +Discovery ${tc} + [Documentation] Check LatenceTech discovery + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Json ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... {"duration":3716,"start_time":1753278888,"discovered_items":3,"results":[{"gpsPosition":"48.864716,2.349014","networkType":"Outscale","hardware":"Not-Applicable","networkName":"OutScale-Network","id":"0","details":"Generic QoSAgent preinstalled with OMI","name":"GenericQoSAgent"},{"gpsPosition":",undefined","networkType":"Azure Server Network","id":"2","details":"Azure Agent used for demonstration purposes","name":"Germany WEST","hardware":"Azure Server","networkName":"Azure Net 2"},{"details":"Uses india beacon reflector","id":"3","name":"South Central US","hardware":"Azure Server","networkName":"","networkType":"Azure Server Network","gpsPosition":",undefined"}],"end_time":1753282604} diff --git a/tests/apps/monitoring/latencetech/restapi/forecast.robot b/tests/apps/monitoring/latencetech/restapi/forecast.robot new file mode 100644 index 000000000..8c9df951d --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/forecast.robot @@ -0,0 +1,43 @@ +*** Settings *** +Documentation Check the LatenceTech forecast mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=forecast +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +forecast ${tc} + [Documentation] Check the agent forecast statistics + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... --agent-id=2 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: Agent '2' Projected latency 10.63ms (forecasting interval: 6.94ms, confidence level: 50.74) | '2#latency.projected.time.milliseconds'=10.63ms;;;0; + ... 2 --warning-projected-latency=5 + ... WARNING: Agent '2' Projected latency 10.63ms (forecasting interval: 6.94ms, confidence level: 50.74) | '2#latency.projected.time.milliseconds'=10.63ms;0:5;;0; + ... 3 --critical-projected-latency=10 + ... CRITICAL: Agent '2' Projected latency 10.63ms (forecasting interval: 6.94ms, confidence level: 50.74) | '2#latency.projected.time.milliseconds'=10.63ms;;0:10;0; diff --git a/tests/apps/monitoring/latencetech/restapi/latency.robot b/tests/apps/monitoring/latencetech/restapi/latency.robot new file mode 100644 index 000000000..d2841edad --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/latency.robot @@ -0,0 +1,61 @@ +*** Settings *** +Documentation Check the LatenceTech latency mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=latency +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +Latency ${tc} + [Documentation] Check the agent latency statistics + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... --agent-id=2 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: All latencies are OK | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;;0; 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;;0; + ... 2 --filter-protocol=tcp + ... OK: Latency for Agent 2, Protocol tcp_result (150 points): average: 9.35ms, minimum: 8.38ms, maximum: 22.56ms | 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; + ... 3 --filter-protocol='http.*' + ... OK: All latencies are OK | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; + ... 4 --filter-protocol='http(s)?' + ... OK: All latencies are OK | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; + ... 5 --filter-protocol='https|icmp' + ... OK: All latencies are OK | 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; + ... 6 --warning-latency-average=8 + ... WARNING: Latency for Agent 2, Protocol http_result (149 points): average: 9.18ms - Latency for Agent 2, Protocol https_result (146 points): average: 18.05ms - Latency for Agent 2, Protocol icmp_result (149 points): average: 9.16ms - Latency for Agent 2, Protocol tcp_result (150 points): average: 9.35ms - Latency for Agent 2, Protocol twamp_result (142 points): average: 9.16ms - Latency for Agent 2, Protocol udp_result (150 points): average: 9.36ms | 'http_result#latency.average.milliseconds'=9.18ms;0:8;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;0:8;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;0:8;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;0:8;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;0:8;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;;0; 'udp_result#latency.average.milliseconds'=9.36ms;0:8;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;;0; + ... 7 --critical-latency-average=9 + ... CRITICAL: Latency for Agent 2, Protocol http_result (149 points): average: 9.18ms - Latency for Agent 2, Protocol https_result (146 points): average: 18.05ms - Latency for Agent 2, Protocol icmp_result (149 points): average: 9.16ms - Latency for Agent 2, Protocol tcp_result (150 points): average: 9.35ms - Latency for Agent 2, Protocol twamp_result (142 points): average: 9.16ms - Latency for Agent 2, Protocol udp_result (150 points): average: 9.36ms | 'http_result#latency.average.milliseconds'=9.18ms;;0:9;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;0:9;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;0:9;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;0:9;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;0:9;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;;0; 'udp_result#latency.average.milliseconds'=9.36ms;;0:9;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;;0; + ... 8 --warning-latency-minimum=7 + ... WARNING: Latency for Agent 2, Protocol http_result (149 points): minimum: 8.51ms - Latency for Agent 2, Protocol https_result (146 points): minimum: 16.72ms - Latency for Agent 2, Protocol icmp_result (149 points): minimum: 8.37ms - Latency for Agent 2, Protocol tcp_result (150 points): minimum: 8.38ms - Latency for Agent 2, Protocol twamp_result (142 points): minimum: 8.36ms - Latency for Agent 2, Protocol udp_result (150 points): minimum: 8.57ms | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;0:7;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;0:7;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;0:7;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;0:7;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;0:7;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;;0; 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;0:7;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;;0; + ... 9 --critical-latency-minimum=8 + ... CRITICAL: Latency for Agent 2, Protocol http_result (149 points): minimum: 8.51ms - Latency for Agent 2, Protocol https_result (146 points): minimum: 16.72ms - Latency for Agent 2, Protocol icmp_result (149 points): minimum: 8.37ms - Latency for Agent 2, Protocol tcp_result (150 points): minimum: 8.38ms - Latency for Agent 2, Protocol twamp_result (142 points): minimum: 8.36ms - Latency for Agent 2, Protocol udp_result (150 points): minimum: 8.57ms | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;0:8;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;0:8;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;0:8;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;0:8;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;0:8;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;;0; 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;0:8;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;;0; + ... 10 --warning-latency-maximum=14 + ... WARNING: Latency for Agent 2, Protocol http_result (149 points): maximum: 15.62ms - Latency for Agent 2, Protocol https_result (146 points): maximum: 27.29ms - Latency for Agent 2, Protocol icmp_result (149 points): maximum: 22.10ms - Latency for Agent 2, Protocol tcp_result (150 points): maximum: 22.56ms - Latency for Agent 2, Protocol twamp_result (142 points): maximum: 15.86ms - Latency for Agent 2, Protocol udp_result (150 points): maximum: 22.13ms | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;0:14;;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;0:14;;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;0:14;;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;0:14;;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;0:14;;0; 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;0:14;;0; + ... 11 --critical-latency-maximum=15 + ... CRITICAL: Latency for Agent 2, Protocol http_result (149 points): maximum: 15.62ms - Latency for Agent 2, Protocol https_result (146 points): maximum: 27.29ms - Latency for Agent 2, Protocol icmp_result (149 points): maximum: 22.10ms - Latency for Agent 2, Protocol tcp_result (150 points): maximum: 22.56ms - Latency for Agent 2, Protocol twamp_result (142 points): maximum: 15.86ms - Latency for Agent 2, Protocol udp_result (150 points): maximum: 22.13ms | 'http_result#latency.average.milliseconds'=9.18ms;;;0; 'http_result#latency.minimum.milliseconds'=8.51ms;;;0; 'http_result#latency.maximum.milliseconds'=15.62ms;;0:15;0; 'https_result#latency.average.milliseconds'=18.05ms;;;0; 'https_result#latency.minimum.milliseconds'=16.72ms;;;0; 'https_result#latency.maximum.milliseconds'=27.29ms;;0:15;0; 'icmp_result#latency.average.milliseconds'=9.16ms;;;0; 'icmp_result#latency.minimum.milliseconds'=8.37ms;;;0; 'icmp_result#latency.maximum.milliseconds'=22.10ms;;0:15;0; 'tcp_result#latency.average.milliseconds'=9.35ms;;;0; 'tcp_result#latency.minimum.milliseconds'=8.38ms;;;0; 'tcp_result#latency.maximum.milliseconds'=22.56ms;;0:15;0; 'twamp_result#latency.average.milliseconds'=9.16ms;;;0; 'twamp_result#latency.minimum.milliseconds'=8.36ms;;;0; 'twamp_result#latency.maximum.milliseconds'=15.86ms;;0:15;0; 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;0:15;0; + ... 12 --filter-protocol=udp --critical-latency-maximum=20 + ... CRITICAL: Latency for Agent 2, Protocol udp_result (150 points): maximum: 22.13ms | 'udp_result#latency.average.milliseconds'=9.36ms;;;0; 'udp_result#latency.minimum.milliseconds'=8.57ms;;;0; 'udp_result#latency.maximum.milliseconds'=22.13ms;;0:20;0; diff --git a/tests/apps/monitoring/latencetech/restapi/mockoon.json b/tests/apps/monitoring/latencetech/restapi/mockoon.json new file mode 100644 index 000000000..4dd17a854 --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/mockoon.json @@ -0,0 +1,495 @@ +{ + "uuid": "b09e1a07-2cb1-462d-a3ce-a1de418a25c7", + "lastMigration": 32, + "name": "LatenceTech", + "endpointPrefix": "", + "latency": 0, + "port": 3000, + "hostname": "", + "folders": [], + "routes": [ + { + "uuid": "2a664365-e4a5-470d-a21e-08006280ba55", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/ci", + "responses": [ + { + "uuid": "b4da99eb-b02f-41c1-8316-eb6a146e9096", + "body": "{\n \"CustomerID\": \"0\",\n \"AgentID\": \"0\",\n \"KPIs\": {\n \"tcpMs\": 8.94,\n \"udpMs\": 9.53,\n \"httpMs\": 9.09,\n \"httpsMs\": 18,\n \"icmpMs\": 9.2,\n \"twampMs\": 9.45,\n \"downloadThroughputMbps\": 1383.58,\n \"uploadThroughputMbps\": 950.06,\n \"networkLatencyMs\": 9.32,\n \"applicationLatencyMs\": 11.39,\n \"packetLossRatePercent\": 0.07,\n \"jitterMs\": 6.1,\n \"volatilityPercent\": 46.2,\n \"networkStabilityPercent\": 65.5,\n \"connectivityHealth\": \"OK\",\n \"qualityOfExperience\": 4.921,\n \"expectedLatencyMS\": 40,\n \"expectedStabilityPercent\": 98,\n \"expectedPacketLossPercent\": 0.1\n },\n \"Attributes\": {\n \"time\": \"2025-03-26T14:01:23.305Z\",\n \"agentName\": \"GenericQoSAgent\",\n \"hardware\": \"Not-Applicable\",\n \"networkName\": \"OutScale-Network\",\n \"networkType\": \"Outscale\",\n \"gpsPos\": \"48.864716,2.349014\",\n \"details\": \"Generic QoSAgent preinstalled with OMI\"\n },\n \"APInotes\": {\n \"comment\": \"Results from LatenceTech ConnectivityInsight API version 2.1\",\n \"documentation\": \"Refer to docs.latence.ca for API details and data structure\"\n }\n}", + "latency": 0, + "statusCode": 200, + "label": "ok", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "customer_id", + "value": "0", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "0c182a08-81a8-4f13-a97e-802cf77375e5", + "body": "{\n \"CustomerID\": \"1\",\n \"AgentID\": \"1\",\n \"KPIs\": {\n \"tcpMs\": 8.94,\n \"udpMs\": 9.53,\n \"httpMs\": 9.09,\n \"httpsMs\": 18,\n \"icmpMs\": 9.2,\n \"twampMs\": 9.45,\n \"downloadThroughputMbps\": 1383.58,\n \"uploadThroughputMbps\": 950.06,\n \"networkLatencyMs\": 9.32,\n \"applicationLatencyMs\": 11.39,\n \"packetLossRatePercent\": 0,\n \"jitterMs\": 6.1,\n \"volatilityPercent\": 46.2,\n \"networkStabilityPercent\": 65.5,\n \"connectivityHealth\": \"Warning\",\n \"qualityOfExperience\": 4.921,\n \"expectedLatencyMS\": 40,\n \"expectedStabilityPercent\": 98,\n \"expectedPacketLossPercent\": 0.1\n },\n \"Attributes\": {\n \"time\": \"2025-03-26T14:01:23.305Z\",\n \"agentName\": \"GenericQoSAgent\",\n \"hardware\": \"Not-Applicable\",\n \"networkName\": \"OutScale-Network\",\n \"networkType\": \"Outscale\",\n \"gpsPos\": \"48.864716,2.349014\",\n \"details\": \"Generic QoSAgent preinstalled with OMI\"\n },\n \"APInotes\": {\n \"comment\": \"Results from LatenceTech ConnectivityInsight API version 2.1\",\n \"documentation\": \"Refer to docs.latence.ca for API details and data structure\"\n }\n}", + "latency": 0, + "statusCode": 200, + "label": "warning", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "customer_id", + "value": "1", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "ac915179-9b07-49ec-9cf5-560396ee464e", + "body": "{\n \"CustomerID\": \"2\",\n \"AgentID\": \"2\",\n \"KPIs\": {\n \"tcpMs\": 8.94,\n \"udpMs\": 9.53,\n \"httpMs\": 9.09,\n \"httpsMs\": 18,\n \"icmpMs\": 9.2,\n \"twampMs\": 9.45,\n \"downloadThroughputMbps\": 1383.58,\n \"uploadThroughputMbps\": 950.06,\n \"networkLatencyMs\": 9.32,\n \"applicationLatencyMs\": 11.39,\n \"packetLossRatePercent\": 0,\n \"jitterMs\": 6.1,\n \"volatilityPercent\": 46.2,\n \"networkStabilityPercent\": 65.5,\n \"connectivityHealth\": \"Need Attention\",\n \"qualityOfExperience\": 4.921,\n \"expectedLatencyMS\": 40,\n \"expectedStabilityPercent\": 98,\n \"expectedPacketLossPercent\": 0.1\n },\n \"Attributes\": {\n \"time\": \"2025-03-26T14:01:23.305Z\",\n \"agentName\": \"GenericQoSAgent\",\n \"hardware\": \"Not-Applicable\",\n \"networkName\": \"OutScale-Network\",\n \"networkType\": \"Outscale\",\n \"gpsPos\": \"48.864716,2.349014\",\n \"details\": \"Generic QoSAgent preinstalled with OMI\"\n },\n \"APInotes\": {\n \"comment\": \"Results from LatenceTech ConnectivityInsight API version 2.1\",\n \"documentation\": \"Refer to docs.latence.ca for API details and data structure\"\n }\n}", + "latency": 0, + "statusCode": 200, + "label": "critical", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "customer_id", + "value": "2", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "a8045b6a-886a-4ba0-a2b4-9c9d425f9124", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/agents", + "responses": [ + { + "uuid": "0dfb8c64-6ee8-40aa-8f42-aefb39d9dd9d", + "body": "{\n \"CustomerID\": \"0\",\n \"count\": 3,\n \"agents\": [\n {\n \"id\": \"0\",\n \"name\": \"GenericQoSAgent\",\n \"networkName\": \"OutScale-Network\",\n \"networkType\": \"Outscale\",\n \"hardware\": \"Not-Applicable\",\n \"details\": \"Generic QoSAgent preinstalled with OMI\",\n \"gpsPosition\": \"48.864716,2.349014\"\n },\n {\n \"id\": \"2\",\n \"name\": \"Germany WEST\",\n \"networkName\": \"Azure Net 2\",\n \"networkType\": \"Azure Server Network\",\n \"hardware\": \"Azure Server\",\n \"details\": \"Azure Agent used for demonstration purposes\",\n \"gpsPosition\": \",undefined\"\n },\n {\n \"id\": \"3\",\n \"name\": \"South Central US\",\n \"networkName\": \"\",\n \"networkType\": \"Azure Server Network\",\n \"hardware\": \"Azure Server\",\n \"details\": \"Uses india beacon reflector\",\n \"gpsPosition\": \",undefined\"\n }\n ]\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "06ed6f2b-578e-4beb-94e0-f37f5c436038", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/forecast", + "responses": [ + { + "uuid": "8740d870-74b8-4846-a90b-1a27f8b59d45", + "body": "{\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T07:52:01.849Z\",\n \"projectedLatencyMs\": 10.63,\n \"forecastingIntervalMs\": 6.94,\n \"confidenceLevel\": 50.74\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "febdf454-e06c-4f7c-9ff4-99eecdc98447", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/latency", + "responses": [ + { + "uuid": "28ddcb61-823d-4dd9-9466-ab60b6ce604d", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:42:55.88Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.91\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:42:57.898Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.776\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:42:59.916Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.459\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:01.936Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.048\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:03.956Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.319\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:05.974Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.834\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:07.993Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.715\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:10.011Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.486\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:12.03Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.538\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:14.049Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.701\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:16.067Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.857\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:18.085Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 10.158\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:20.105Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.826\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:22.122Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.802\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:24.141Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.991\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:26.159Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.002\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:28.178Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.972\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:30.196Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.101\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:32.214Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.123\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:34.233Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 12.66\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:36.255Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.979\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:38.273Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:40.291Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.617\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:42.31Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.945\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:44.328Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.431\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:46.347Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.772\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:48.365Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.674\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:50.383Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.167\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:52.401Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.339\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:54.42Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.965\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:56.439Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.798\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:43:58.458Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.497\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:00.476Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.068\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:02.495Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.806\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:04.514Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.099\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:06.532Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.825\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:08.55Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.07\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:10.569Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.792\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:12.588Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.875\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:14.606Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.651\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:16.625Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.826\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:18.644Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.687\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:20.662Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.216\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:22.681Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.121\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:24.699Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.134\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:26.718Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.644\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:28.737Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.237\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:30.755Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.261\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:32.774Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.65\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:34.793Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.952\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:36.811Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.555\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:38.829Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.261\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:40.848Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.042\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:42.867Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.166\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:44.885Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.187\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:46.904Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.585\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:48.922Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.688\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:50.94Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.182\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:52.958Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.796\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:54.976Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.912\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:56.995Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 22.56\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:44:59.027Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.759\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:01.045Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.273\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:03.064Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.158\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:05.082Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.552\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:07.101Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.395\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:09.12Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.98\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:11.138Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.866\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:13.157Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.857\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:15.175Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.77\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:17.193Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.812\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:19.211Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.736\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:21.23Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.834\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:23.249Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.109\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:25.267Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.101\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:27.286Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.756\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:29.304Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.318\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:31.323Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.932\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:33.341Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.227\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:35.36Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.102\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:37.379Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.525\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:39.398Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.759\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:41.416Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.057\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:43.435Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.032\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:45.454Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.154\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:47.472Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.778\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:49.491Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.861\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:51.509Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.598\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:53.528Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.041\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:55.546Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.641\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:57.564Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.962\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:45:59.582Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.529\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:01.602Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.764\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:03.619Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.284\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:05.638Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.928\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:07.657Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.977\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:09.676Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 18.596\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:11.704Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.133\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:13.723Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.265\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:15.741Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.114\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:17.76Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.767\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:19.779Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.218\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:21.798Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.932\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:23.816Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.542\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:25.837Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.06\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:27.856Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.028\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:29.875Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.847\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:31.893Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.281\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:33.911Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.438\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:35.93Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 19.908\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:37.96Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.087\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:39.979Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.923\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:41.997Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 11.815\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:44.019Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.147\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:46.037Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.716\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:48.055Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.676\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:50.073Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.832\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:52.091Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.882\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:54.109Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.835\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:56.127Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.658\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:46:58.145Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.637\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:00.163Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.983\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:02.181Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.967\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:04.2Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.426\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:06.217Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.714\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:08.235Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.764\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:10.254Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.238\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:12.272Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 18.219\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:14.3Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.775\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:16.318Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.843\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:18.336Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.354\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:20.355Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.678\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:22.373Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.773\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:24.391Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.381\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:26.409Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.092\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:28.428Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.687\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:30.446Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.677\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:32.463Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 11.528\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:34.484Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.293\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:36.503Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.178\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:38.521Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.691\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:40.539Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.686\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:42.557Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.771\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:44.575Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.297\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:46.594Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.871\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:48.612Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 9.029\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:50.63Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.833\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:52.648Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.564\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:47:54.666Z\",\n \"measurement\": \"tcp_result\",\n \"value\": 8.889\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "TCP", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "tcp", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "34d120de-2d0d-4d56-9dca-43fbbe15b816", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:09.629Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.194\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:11.638Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.71\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:13.647Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.014\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:15.656Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.151\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:17.666Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.622\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:19.674Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.754\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:21.683Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.892\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:23.692Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.082\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:25.702Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:27.711Z\",\n \"measurement\": \"udp_result\",\n \"value\": 10.016\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:29.721Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.652\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:31.73Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.449\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:33.739Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.063\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:35.749Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.701\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:37.757Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.041\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:39.767Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.107\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:41.776Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.918\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:43.785Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.143\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:45.794Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.985\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:47.803Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.789\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:49.812Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.574\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:51.821Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.421\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:53.831Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.983\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:55.84Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.105\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:57.849Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.654\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:59.858Z\",\n \"measurement\": \"udp_result\",\n \"value\": 13.458\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:01.872Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.31\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:03.881Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.91\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:05.89Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.535\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:07.9Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.438\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:09.909Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.081\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:11.919Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.978\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:13.929Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.832\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:15.938Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.713\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:17.948Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.46\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:19.958Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.395\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:21.967Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.176\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:23.977Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.126\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:25.986Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.746\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:27.995Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.034\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:30.004Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.393\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:32.014Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.661\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:34.022Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.08\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:36.032Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.082\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:38.041Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.948\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:40.05Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.831\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:42.059Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.849\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:44.068Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.908\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:46.077Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.657\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:48.086Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.326\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:50.095Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.427\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:52.105Z\",\n \"measurement\": \"udp_result\",\n \"value\": 20.126\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:54.125Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.421\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:56.135Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.981\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:58.144Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.934\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:00.153Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.871\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:02.162Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.045\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:04.171Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.573\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:06.181Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.914\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:08.19Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.283\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:10.199Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.849\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:12.208Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.907\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:14.218Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.704\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:16.227Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.775\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:18.237Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.002\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:20.247Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.236\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:22.256Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.034\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:24.265Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.736\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:26.274Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.044\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:28.283Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.031\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:30.292Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.968\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:32.302Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.713\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:34.31Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.896\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:36.319Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.133\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:38.329Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.078\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:40.338Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.904\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:42.347Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.997\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:44.356Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.093\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:46.366Z\",\n \"measurement\": \"udp_result\",\n \"value\": 14.425\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:48.38Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.636\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:50.39Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.826\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:52.399Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.277\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:54.408Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.926\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:56.417Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.834\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:58.426Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.102\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:00.436Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.852\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:02.445Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.326\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:04.454Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.959\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:06.463Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.947\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:08.474Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.396\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:10.483Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.869\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:12.493Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.979\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:14.502Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.06\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:16.512Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.536\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:18.521Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.609\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:20.531Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.279\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:22.541Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.186\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:24.55Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.906\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:26.559Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.03\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:28.568Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.978\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:30.577Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.044\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:32.586Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.653\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:34.595Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.086\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:36.604Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.237\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:38.614Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.494\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:40.624Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.155\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:42.633Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.918\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:44.642Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.072\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:46.651Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.034\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:48.66Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.038\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:50.669Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.834\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:52.678Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.925\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:54.688Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.922\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:56.697Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.757\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:58.706Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.977\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:00.715Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.121\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:02.724Z\",\n \"measurement\": \"udp_result\",\n \"value\": 22.126\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:04.747Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.25\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:06.756Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.27\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:08.765Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.427\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:10.775Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.199\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:12.784Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.017\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:14.793Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.103\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:16.803Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.943\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:18.812Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.048\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:20.821Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.275\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:22.831Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.888\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:24.84Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.713\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:26.85Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.339\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:28.859Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.751\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:30.868Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.896\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:32.877Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.728\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:34.886Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.904\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:36.895Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.047\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:38.904Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.723\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:40.913Z\",\n \"measurement\": \"udp_result\",\n \"value\": 8.948\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:42.922Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.039\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:44.932Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.218\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:46.941Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.22\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:48.95Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.502\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:50.96Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.666\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:52.97Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.505\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:54.98Z\",\n \"measurement\": \"udp_result\",\n \"value\": 10.91\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:56.991Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.19\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:59Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.949\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:01.01Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.56\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:03.02Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.584\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:05.03Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.589\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:07.039Z\",\n \"measurement\": \"udp_result\",\n \"value\": 9.711\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "UDP", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "udp", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "6380d7aa-3889-44a6-a47d-f3aded8e26c8", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:48.047Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.895\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:50.066Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.839\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:52.085Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.954\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:54.104Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.879\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:56.122Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.135\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:48:58.141Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.061\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:00.16Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.058\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:02.18Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.253\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:04.199Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.215\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:06.217Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.758\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:08.236Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.87\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:10.255Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.916\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:12.274Z\",\n \"measurement\": \"http_result\",\n \"value\": 14.437\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:14.298Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.914\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:16.317Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.882\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:18.337Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.51\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:20.355Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.661\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:22.374Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.129\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:24.393Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.067\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:26.412Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.564\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:28.431Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.866\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:30.45Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.139\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:32.468Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.822\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:34.487Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.852\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:36.517Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.361\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:38.536Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.016\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:40.556Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.275\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:42.575Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.949\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:44.594Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.057\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:46.613Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.034\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:48.632Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.036\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:50.65Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.133\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:52.67Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.998\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:54.688Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:56.707Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.867\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:49:58.726Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.809\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:00.745Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.932\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:02.764Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.934\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:04.783Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.059\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:06.802Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.964\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:08.821Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.776\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:10.84Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.042\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:12.859Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:14.878Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.867\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:16.897Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.085\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:18.915Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.774\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:20.933Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.34\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:22.953Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.975\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:24.972Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.203\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:26.991Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.299\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:29.01Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.206\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:31.029Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.105\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:33.048Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.261\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:35.067Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.859\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:37.086Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.921\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:39.105Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.873\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:41.123Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.16\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:43.142Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.742\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:45.16Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.805\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:47.179Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.959\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:49.198Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.841\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:51.216Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.049\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:53.236Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.947\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:55.254Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.818\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:57.274Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.954\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:50:59.293Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.722\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:01.312Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.128\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:03.331Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.109\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:05.35Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.901\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:07.369Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.77\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:09.387Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.885\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:11.406Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.318\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:13.429Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.161\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:15.448Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.162\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:17.466Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.02\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:19.485Z\",\n \"measurement\": \"http_result\",\n \"value\": 13.769\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:21.509Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.645\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:23.528Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.272\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:25.547Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.146\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:27.566Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.831\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:29.585Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.912\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:31.604Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.391\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:33.623Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.964\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:35.642Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.048\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:37.661Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.001\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:39.68Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.539\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:41.698Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.986\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:43.717Z\",\n \"measurement\": \"http_result\",\n \"value\": 10.941\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:45.738Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.143\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:47.757Z\",\n \"measurement\": \"http_result\",\n \"value\": 10.801\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:49.777Z\",\n \"measurement\": \"http_result\",\n \"value\": 11.382\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:51.798Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.87\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:53.818Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.029\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:55.837Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.307\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:57.856Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.226\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:51:59.875Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.059\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:01.894Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.328\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:03.914Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.932\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:05.932Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.832\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:07.951Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.25\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:09.97Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.592\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:11.989Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.785\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:14.007Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.082\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:16.026Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.174\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:18.05Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.208\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:20.069Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.819\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:22.088Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.129\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:24.106Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.931\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:26.125Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.798\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:28.143Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.918\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:30.162Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.637\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:32.181Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.721\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:34.2Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.334\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:36.219Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.061\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:38.248Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.954\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:40.266Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.902\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:42.285Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:44.304Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.268\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:46.323Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.537\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:48.343Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.096\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:50.362Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.962\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:52.381Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.968\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:54.4Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.83\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:56.418Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.304\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:52:58.437Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.776\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:00.456Z\",\n \"measurement\": \"http_result\",\n \"value\": 15.621\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:02.482Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.227\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:04.502Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.973\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:06.52Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.084\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:08.539Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.148\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:10.558Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.945\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:12.577Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.09\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:14.596Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.015\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:16.616Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.087\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:18.634Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.892\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:20.654Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.214\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:22.673Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:24.693Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.233\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:26.712Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.094\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:28.731Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.922\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:30.749Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.068\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:32.768Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.114\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:34.787Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.764\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:36.806Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.239\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:38.825Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.238\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:40.844Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.282\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:42.863Z\",\n \"measurement\": \"http_result\",\n \"value\": 8.747\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:53:44.882Z\",\n \"measurement\": \"http_result\",\n \"value\": 9.516\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "HTTP", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "http", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "27e5465f-26df-41d6-94c5-f3e318431688", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:18.879Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.272\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:20.934Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.08\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:22.986Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.648\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:25.035Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.499\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:27.086Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.205\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:29.133Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.817\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:31.181Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.768\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:33.232Z\",\n \"measurement\": \"https_result\",\n \"value\": 25.229\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:35.289Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.445\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:37.335Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.719\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:39.383Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.084\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:41.428Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.116\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:43.478Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.312\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:45.527Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.177\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:47.578Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.953\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:49.628Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.805\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:51.678Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.915\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:53.726Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.984\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:55.775Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.673\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:57.823Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.246\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:55:59.87Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.28\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:01.916Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.232\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:03.965Z\",\n \"measurement\": \"https_result\",\n \"value\": 22.644\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:06.017Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.901\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:08.066Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.653\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:10.116Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.372\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:12.162Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.503\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:14.212Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.42\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:16.261Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.778\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:18.308Z\",\n \"measurement\": \"https_result\",\n \"value\": 19.64\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:20.356Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.061\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:22.406Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.581\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:24.453Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.442\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:26.502Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.392\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:28.552Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.602\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:30.599Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.459\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:32.648Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.589\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:34.697Z\",\n \"measurement\": \"https_result\",\n \"value\": 19.048\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:36.748Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.253\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:38.799Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.275\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:40.85Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.841\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:42.908Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.222\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:44.959Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.381\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:47.006Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.878\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:49.054Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.588\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:51.103Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.223\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:53.148Z\",\n \"measurement\": \"https_result\",\n \"value\": 26.018\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:55.211Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.915\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:57.258Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.438\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:59.307Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.665\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:01.358Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.642\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:03.409Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.403\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:05.459Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.131\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:07.507Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.654\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:09.553Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.36\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:11.606Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.952\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:13.654Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.885\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:15.701Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.196\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:17.75Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.438\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:19.795Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.784\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:21.842Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.187\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:23.902Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.669\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:25.948Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.231\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:27.995Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.475\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:30.045Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.633\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:32.097Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.544\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:34.146Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.954\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:36.196Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.208\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:38.247Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.23\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:40.294Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.206\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:42.344Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.082\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:44.394Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.359\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:46.44Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:48.487Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.458\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:50.539Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.435\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:52.585Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.285\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:54.636Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.248\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:56.681Z\",\n \"measurement\": \"https_result\",\n \"value\": 21.825\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:58.732Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.226\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:00.782Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.204\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:02.83Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.051\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:04.88Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.149\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:06.929Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.398\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:08.979Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.792\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:11.028Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.013\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:13.076Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.004\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:15.121Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.426\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:17.169Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.614\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:19.218Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.432\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:21.266Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.039\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:23.314Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.004\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:25.361Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.455\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:27.413Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.098\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:29.463Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.437\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:31.51Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.787\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:33.56Z\",\n \"measurement\": \"https_result\",\n \"value\": 27.287\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:35.614Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.411\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:37.661Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.283\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:39.711Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.721\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:41.756Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.381\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:43.803Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.077\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:45.849Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.569\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:47.896Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.865\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:49.95Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.568\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:52Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.442\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:54.048Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.449\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:56.097Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.998\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:58.142Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.037\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:00.192Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:02.239Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.323\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:04.289Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.846\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:06.336Z\",\n \"measurement\": \"https_result\",\n \"value\": 19.202\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:08.387Z\",\n \"measurement\": \"https_result\",\n \"value\": 16.967\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:10.436Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.37\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:12.487Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.256\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:14.536Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.981\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:16.593Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.493\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:18.643Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.752\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:20.696Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.083\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:22.741Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.687\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:24.789Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.233\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:26.836Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.071\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:28.891Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.985\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:30.946Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.448\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:32.993Z\",\n \"measurement\": \"https_result\",\n \"value\": 19.037\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:35.039Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.211\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:37.096Z\",\n \"measurement\": \"https_result\",\n \"value\": 20.485\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:39.144Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.058\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:41.189Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.267\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:43.233Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.246\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:45.279Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.487\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:47.324Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.104\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:49.374Z\",\n \"measurement\": \"https_result\",\n \"value\": 19.106\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:51.422Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.343\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:53.471Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.346\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:55.517Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.718\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:57.568Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.383\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:59.619Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.099\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:01.668Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.377\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:03.724Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.329\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:05.769Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.269\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:07.814Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.479\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:09.859Z\",\n \"measurement\": \"https_result\",\n \"value\": 17.939\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:11.903Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.394\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:13.953Z\",\n \"measurement\": \"https_result\",\n \"value\": 18.868\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "HTTPS", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "https", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "451438a8-040c-496d-9fd0-6f05a0b81f31", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:03.379Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.14\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:05.397Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:07.416Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.98\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:09.434Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.89\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:11.455Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.6\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:13.473Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.27\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:15.491Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.89\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:17.51Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.64\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:19.528Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:21.545Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.93\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:23.563Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.73\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:25.581Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.85\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:27.603Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.15\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:29.628Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:31.645Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.86\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:33.663Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.17\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:35.681Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.23\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:37.702Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.33\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:39.72Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.93\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:41.737Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:43.755Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.61\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:45.773Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.91\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:47.792Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.14\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:49.809Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.82\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:51.827Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.87\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:53.845Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.01\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:55.862Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.91\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:57.881Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:59.898Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:01.915Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.19\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:03.934Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.18\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:05.953Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.07\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:07.971Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.97\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:09.99Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:12.007Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.89\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:14.024Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.97\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:16.042Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:18.06Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:20.077Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.21\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:22.095Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.83\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:24.114Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.89\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:26.131Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.98\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:28.147Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:30.163Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:32.18Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.51\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:34.197Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.76\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:36.214Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.82\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:38.241Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 18.9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:40.258Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.93\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:42.276Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.85\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:44.292Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:46.309Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.4\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:48.327Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.66\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:50.343Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.74\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:52.362Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.99\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:54.381Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.13\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:56.406Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.09\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:58.427Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:00.445Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.33\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:02.463Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.03\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:04.487Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.08\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:06.504Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:08.522Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.57\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:10.54Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.83\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:12.556Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.94\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:14.573Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.98\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:16.591Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.03\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:18.608Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.68\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:20.626Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:22.642Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.18\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:24.659Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.12\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:26.679Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.18\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:28.698Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:30.714Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.28\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:32.74Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.68\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:34.763Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:36.78Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:38.799Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.8\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:40.818Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:42.835Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.7\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:44.852Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.03\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:46.868Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.17\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:48.886Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.31\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:50.904Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.79\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:52.92Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:54.939Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.38\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:56.956Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:58.974Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:00.992Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.79\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:03.009Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.02\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:05.036Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.3\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:07.07Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 22.1\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:09.095Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.29\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:11.113Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.12\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:13.13Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.97\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:15.146Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.59\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:17.165Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.51\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:19.186Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:21.202Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.57\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:23.22Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.24\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:25.237Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.13\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:27.254Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.05\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:29.273Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.86\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:31.291Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.79\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:33.307Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.58\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:35.339Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.88\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:37.368Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 11.9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:39.385Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:41.403Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.75\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:43.42Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.81\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:45.436Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.72\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:47.453Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.15\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:49.472Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.39\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:51.49Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.8\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:53.508Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.83\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:55.524Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.01\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:57.544Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.68\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:59.563Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.12\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:01.582Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.05\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:03.6Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:05.618Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:07.638Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.65\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:09.655Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.44\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:11.673Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:13.691Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.73\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:16.694Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:18.713Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.57\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:20.729Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.37\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:22.745Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.51\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:24.762Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.95\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:26.779Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.77\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:28.796Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.64\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:30.815Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.7\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:32.831Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.55\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:34.848Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.72\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:36.865Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.7\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:38.884Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.83\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:40.902Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.52\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:42.919Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 9.08\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:44.938Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:46.959Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.72\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:48.976Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.55\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:50.991Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.8\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:53.009Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.76\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:55.032Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.84\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:57.057Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.63\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:59.075Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 11.1\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:01.091Z\",\n \"measurement\": \"icmp_result\",\n \"value\": 8.7\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "ICMP", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "icmp", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + }, + { + "uuid": "2ea63c4e-98c9-4d7c-b822-bad5f301e03a", + "body": "[\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:37.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.146\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:39.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.557\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:41.184Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.907\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:43.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.173\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:45.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.913\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:47.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.18\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:49.185Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.987\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:51.186Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.662\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:55.203Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.696\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:57.203Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.99\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:56:59.203Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.023\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:01.203Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.854\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:03.206Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 11.591\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:05.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.759\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:07.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.686\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:09.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.885\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:11.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.32\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:13.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.785\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:15.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.696\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:17.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.328\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:19.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.907\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:21.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.043\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:23.204Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.719\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:27.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.078\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:29.222Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.979\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:31.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.824\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:33.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.985\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:35.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.661\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:37.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.103\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:39.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.814\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:41.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.725\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:43.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.847\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:45.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.932\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:47.224Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.174\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:49.223Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.76\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:51.224Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.956\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:53.224Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.822\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:55.224Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.835\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:57:59.243Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.254\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:01.243Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.079\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:03.243Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.019\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:05.243Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.017\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:07.243Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.844\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:09.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.25\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:11.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.996\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:13.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.906\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:15.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.393\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:17.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.965\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:19.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.577\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:21.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.92\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:23.245Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.281\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:25.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.708\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:27.244Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.863\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:31.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.661\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:33.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.719\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:35.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.55\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:37.265Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 10.827\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:39.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.159\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:41.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.231\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:43.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:45.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.955\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:47.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.356\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:49.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.152\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:51.265Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.281\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:53.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.833\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:55.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.783\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:57.264Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.777\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:58:59.265Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.835\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:03.283Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.34\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:05.283Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.938\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:07.285Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 10.219\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:09.283Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.898\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:11.283Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.686\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:13.283Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.739\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:15.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.934\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:17.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.985\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:19.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.022\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:21.288Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 12.87\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:23.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.728\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:25.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.505\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:27.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.752\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:29.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.925\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:31.284Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.502\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:35.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.462\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:37.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.014\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:39.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.849\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:41.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.136\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:43.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.045\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:45.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.713\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:47.303Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.423\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:49.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.952\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:51.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.786\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:53.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.236\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:55.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.237\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:57.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.712\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T08:59:59.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.02\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:01.304Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.126\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:03.305Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.121\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:07.327Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 12.74\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:09.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.96\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:11.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.167\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:13.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.826\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:15.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.525\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:17.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.206\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:19.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.789\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:21.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.029\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:23.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.709\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:25.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.929\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:27.324Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.73\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:29.325Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.923\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:31.331Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 15.112\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:33.325Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.681\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:35.325Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.909\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:39.344Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.404\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:41.344Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.73\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:43.344Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.862\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:45.344Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.598\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:47.344Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.717\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:49.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.117\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:51.352Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 15.858\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:53.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.863\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:55.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.822\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:57.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.827\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:00:59.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.025\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:01.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.928\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:03.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.662\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:05.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.78\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:07.345Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.756\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:11.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.526\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:13.363Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.362\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:15.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.992\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:17.363Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.651\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:19.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.055\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:21.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.483\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:23.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.732\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:25.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.67\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:27.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.972\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:29.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.732\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:31.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.751\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:33.364Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 8.53\n },\n {\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T09:01:35.365Z\",\n \"measurement\": \"twamp_result\",\n \"value\": 9.089\n }\n]", + "latency": 0, + "statusCode": 200, + "label": "TWAMP", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [ + { + "target": "query", + "modifier": "protocol", + "value": "twamp", + "invert": false, + "operator": "equals" + } + ], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "6ba46385-639a-41c6-8890-c487af160499", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/radio", + "responses": [ + { + "uuid": "0d20ae09-1365-42e9-913c-e75c0fcc7ba4", + "body": "{\n \"CustomerID\": \"0\",\n \"agentID\": \"1\",\n \"time\": \"2025-02-04T17:12:56.062Z\",\n \"networkName\": \"Bell\",\n \"networkType\": \"4G LTE\",\n \"cellID\": \"40\",\n \"SINR_dB\": \"2.147489\",\n \"RSSI_dBm\": \"-63\",\n \"RSRP_dBm\": \"-10\",\n \"RSRQ_dB\": \"-94\"\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "232fe410-d4af-42c9-8efa-919b0c576625", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/lifbe", + "responses": [ + { + "uuid": "93141e59-7bca-44f8-b094-72f56ffec4f6", + "body": "{\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T13:53:19.725Z\",\n \"lifbeDownload\": 531.58,\n \"lifbeUpload\": 47.05,\n \"jitterDownload\": 1.17,\n \"jitterUpload\": 3.38,\n \"packetLossDownload\": 0,\n \"packetLossUpload\": 0,\n \"networkInterface\": \"MOBILE\",\n \"networkType\": \"MOBILE_5G\"\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + }, + { + "uuid": "b7c86f2c-4e28-4834-bd84-3d5bfef56e19", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v1/twamp", + "responses": [ + { + "uuid": "33177ab5-ec9a-4b4a-b519-c4e25fbc96c7", + "body": "{\n \"CustomerID\": \"0\",\n \"agentID\": \"2\",\n \"time\": \"2025-07-25T14:13:08.975Z\",\n \"TWAMPfwdDelta\": 12.92,\n \"TWAMPRevDelta\": -4.19,\n \"TWAMPProcDelta\": 0.11\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + } + ], + "rootChildren": [ + { + "type": "route", + "uuid": "2a664365-e4a5-470d-a21e-08006280ba55" + }, + { + "type": "route", + "uuid": "a8045b6a-886a-4ba0-a2b4-9c9d425f9124" + }, + { + "type": "route", + "uuid": "06ed6f2b-578e-4beb-94e0-f37f5c436038" + }, + { + "type": "route", + "uuid": "febdf454-e06c-4f7c-9ff4-99eecdc98447" + }, + { + "type": "route", + "uuid": "6ba46385-639a-41c6-8890-c487af160499" + }, + { + "type": "route", + "uuid": "232fe410-d4af-42c9-8efa-919b0c576625" + }, + { + "type": "route", + "uuid": "b7c86f2c-4e28-4834-bd84-3d5bfef56e19" + } + ], + "proxyMode": false, + "proxyHost": "", + "proxyRemovePrefix": false, + "tlsOptions": { + "enabled": false, + "type": "CERT", + "pfxPath": "", + "certPath": "", + "keyPath": "", + "caPath": "", + "passphrase": "" + }, + "cors": true, + "headers": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + }, + { + "key": "Access-Control-Allow-Methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "Access-Control-Allow-Headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + } + ], + "proxyReqHeaders": [ + { + "key": "", + "value": "" + } + ], + "proxyResHeaders": [ + { + "key": "", + "value": "" + } + ], + "data": [], + "callbacks": [] +} \ No newline at end of file diff --git a/tests/apps/monitoring/latencetech/restapi/radio.robot b/tests/apps/monitoring/latencetech/restapi/radio.robot new file mode 100644 index 000000000..664b0441a --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/radio.robot @@ -0,0 +1,55 @@ +*** Settings *** +Documentation Check the LatenceTech radio mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=radio +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +Radio ${tc} + [Documentation] Check the agent radio statistics. + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... --agent-id=1 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: Agent '1' Signal noise ratio: 2.15db, Received Signal Strength Indicator: -63.00dbm, Reference signal receive power: -10.00dbm, Reference signal receive quality: -94.00db | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 2 --warning-snr-dbm=1.5 + ... WARNING: Agent '1' Signal noise ratio: 2.15db | '1#signal.noise.ratio.db'=2.15dbm;0:1.5;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 3 --critical-snr-dbm=2.05 + ... CRITICAL: Agent '1' Signal noise ratio: 2.15db | '1#signal.noise.ratio.db'=2.15dbm;;0:2.05;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 4 --warning-rssi-dbm=-65.5 + ... WARNING: Agent '1' Received Signal Strength Indicator: -63.00dbm | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;0:-65.5;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 5 --critical-rssi-dbm=-70.3 + ... CRITICAL: Agent '1' Received Signal Strength Indicator: -63.00dbm | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;0:-70.3;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 6 --warning-rsrp-dbm=-15.2 + ... WARNING: Agent '1' Reference signal receive power: -10.00dbm | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;0:-15.2;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 7 --critical-rsrp-dbm=-20.7 + ... CRITICAL: Agent '1' Reference signal receive power: -10.00dbm | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;0:-20.7;; '1#reference.signalreceive.quality.dbm'=-94.00db;;;; + ... 8 --warning-rsrq-db=-90.5 + ... WARNING: Agent '1' Reference signal receive quality: -94.00db | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;0:-90.5;;; + ... 9 --critical-rsrq-db=-95.2 + ... CRITICAL: Agent '1' Reference signal receive quality: -94.00db | '1#signal.noise.ratio.db'=2.15dbm;;;; '1#received.signalstrength.indicator.dbm'=-63.00dbm;;;; '1#reference.signalreceive.power.dbm'=-10.00dbm;;;; '1#reference.signalreceive.quality.dbm'=-94.00db;;0:-95.2;; diff --git a/tests/apps/monitoring/latencetech/restapi/throughput.robot b/tests/apps/monitoring/latencetech/restapi/throughput.robot new file mode 100644 index 000000000..de81750c7 --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/throughput.robot @@ -0,0 +1,55 @@ +*** Settings *** +Documentation Check the LatenceTech throughput mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=throughput +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + +*** Test Cases *** +Throughput ${tc} + [Documentation] Check agent throughput statistics. + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... --agent-id=2 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: Agent '2' LIFBE Download: 531.58Mbps, LIFBE Upload: 47.05Mbps, Jitter Download Time: 1.17ms, Jitter Upload Time: 3.38ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 2 --warning-lifbe-download=500 + ... WARNING: Agent '2' LIFBE Download: 531.58Mbps | '2#lifbe.download.bandwidth.bps'=531580000bps;0:500;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 3 --critical-lifbe-download=450 + ... CRITICAL: Agent '2' LIFBE Download: 531.58Mbps | '2#lifbe.download.bandwidth.bps'=531580000bps;;0:450;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 4 --warning-lifbe-upload=45000000 + ... WARNING: Agent '2' LIFBE Upload: 47.05Mbps | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;0:45000000;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 5 --critical-lifbe-upload=40000000 + ... CRITICAL: Agent '2' LIFBE Upload: 47.05Mbps | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;0:40000000;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 6 --critical-lifbe-upload=48000000 + ... OK: Agent '2' LIFBE Download: 531.58Mbps, LIFBE Upload: 47.05Mbps, Jitter Download Time: 1.17ms, Jitter Upload Time: 3.38ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;0:48000000;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 7 --warning-jitter-download=0.9 + ... WARNING: Agent '2' Jitter Download Time: 1.17ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;0:0.9;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 8 --critical-jitter-download=1.1 + ... CRITICAL: Agent '2' Jitter Download Time: 1.17ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;0:1.1;0; '2#jitter.upload.time.milliseconds'=3.38ms;;;0; + ... 9 --warning-jitter-upload=3 + ... WARNING: Agent '2' Jitter Upload Time: 3.38ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;0:3;;0; + ... 10 --critical-jitter-upload=3.25 + ... CRITICAL: Agent '2' Jitter Upload Time: 3.38ms | '2#lifbe.download.bandwidth.bps'=531580000bps;;;0; '2#lifbe.upload.bandwidth.bps'=47050000bps;;;0; '2#jitter.download.time.milliseconds'=1.17ms;;;0; '2#jitter.upload.time.milliseconds'=3.38ms;;0:3.25;0; diff --git a/tests/apps/monitoring/latencetech/restapi/twamp.robot b/tests/apps/monitoring/latencetech/restapi/twamp.robot new file mode 100644 index 000000000..59f1b5ac6 --- /dev/null +++ b/tests/apps/monitoring/latencetech/restapi/twamp.robot @@ -0,0 +1,51 @@ +*** Settings *** +Documentation Check the LatenceTech twamp mode with api custom mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::monitoring::latencetech::restapi::plugin +... --custommode=api +... --mode=twamp +... --hostname=${HOSTNAME} +... --api-key=key +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +Twamp ${tc} + [Documentation] Check the agent forecast statistics + [Tags] apps monitoring latencetech restapi + + ${command} Catenate + ... ${cmd} + ... --customer-id=0 + ... --agent-id=2 + ... ${extraoptions} + Log ${cmd} + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: Agent '2' TWAMP Forward Delta: 12.92ms, TWAMP Reverse Delta: -4.19ms, TWAMP Processing Delta: 0.11ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;;0; + ... 2 --warning-twamp-forward=10 + ... WARNING: Agent '2' TWAMP Forward Delta: 12.92ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;0:10;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;;0; + ... 3 --critical-twamp-forward=12.5 + ... CRITICAL: Agent '2' TWAMP Forward Delta: 12.92ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;0:12.5;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;;0; + ... 4 --warning-twamp-reverse=-4.5 + ... WARNING: Agent '2' TWAMP Reverse Delta: -4.19ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;0:-4.5;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;;0; + ... 5 --critical-twamp-reverse=-5 + ... CRITICAL: Agent '2' TWAMP Reverse Delta: -4.19ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;0:-5;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;;0; + ... 6 --warning-twamp-processing=0.05 + ... WARNING: Agent '2' TWAMP Processing Delta: 0.11ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;0:0.05;;0; + ... 7 --critical-twamp-processing=0.1 + ... CRITICAL: Agent '2' TWAMP Processing Delta: 0.11ms | '2#twamp.forwarddelta.time.milliseconds'=12.92ms;;;0; '2#twamp.reversedelta.time.milliseconds'=-4.19ms;;;0; '2#twamp.processingdelta.time.milliseconds'=0.11ms;;0:0.1;0; diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 335cf715c..7eb6eefe7 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -113,6 +113,7 @@ hashicorpvault HPE HTTPR Huawei +ICMP ifAlias ifDesc ifName @@ -150,6 +151,7 @@ kccevent keepass Keysight Kubernetes +LatenceTech ldap LDP --legacy-api-beta @@ -308,6 +310,7 @@ tower-cli TLSv1 TrendMicro tsdb-version +TWAMP UCD UDP unicast