From 5a283884529c87ef4dcf82d5504ea77429cc5353 Mon Sep 17 00:00:00 2001 From: Adrian Date: Thu, 29 Sep 2022 08:35:57 -0700 Subject: [PATCH 1/2] (SUP-3681) Check for valid status key in metrics Prior to this commit, an authentication failure would return a single hash instead of an array of hashes, which caused an exception. This commit uses dig() to check the status and skip nulls. --- files/pe_metrics.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/files/pe_metrics.rb b/files/pe_metrics.rb index 739c48bc..9f3d4c95 100755 --- a/files/pe_metrics.rb +++ b/files/pe_metrics.rb @@ -134,13 +134,17 @@ def retrieve_additional_metrics(host, port, use_ssl, metrics_type, metrics) metrics.each_index do |index| metric_name = metrics[index]['name'] metric_data = metrics_output[index] - if metric_data['status'] == 200 + + metric_status = metrics_output.dig('status') + next unless metric_status + + if metric_status == 200 metrics_array << { 'name' => metric_name, 'data' => metric_data['value'] } - elsif metric_data['status'] == 404 + elsif metric_status == 404 metrics_array << { 'name' => metric_name, 'data' => nil } else metric_mbean = metrics[index]['mbean'] - $error_array << "HTTP Error #{metric_data['status']} for #{metric_mbean}" + $error_array << "HTTP Error #{metric_status} for #{metric_mbean}" end end From 54b701f58bbb93942b20572952955abbbf4e7a75 Mon Sep 17 00:00:00 2001 From: Adrian Date: Thu, 29 Sep 2022 10:49:56 -0700 Subject: [PATCH 2/2] Check if metric_data is nil --- files/pe_metrics.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/pe_metrics.rb b/files/pe_metrics.rb index 9f3d4c95..b01426b4 100755 --- a/files/pe_metrics.rb +++ b/files/pe_metrics.rb @@ -135,7 +135,7 @@ def retrieve_additional_metrics(host, port, use_ssl, metrics_type, metrics) metric_name = metrics[index]['name'] metric_data = metrics_output[index] - metric_status = metrics_output.dig('status') + metric_status = metric_data ? metric_data.dig('status') : nil next unless metric_status if metric_status == 200