From 2994471674e214df9768051b25a293c605183fe4 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Wed, 11 Sep 2024 12:46:05 +0100 Subject: [PATCH 1/7] 18586 add function to register sensors in proxy --- resources/libraries/rbmonitor_helpers.rb | 8 +- resources/libraries/update_sensor_proxyips.rb | 83 +++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 resources/libraries/update_sensor_proxyips.rb diff --git a/resources/libraries/rbmonitor_helpers.rb b/resources/libraries/rbmonitor_helpers.rb index 8d9ca3b..1f2ee10 100644 --- a/resources/libraries/rbmonitor_helpers.rb +++ b/resources/libraries/rbmonitor_helpers.rb @@ -130,7 +130,13 @@ def update_config(resource) update_cluster_config(resource) update_service_config(resource) update_manager_config(resource) - update_sensor_config(resource) + # Probably not super reliable but it's what I have atm + puts "PEDRO RESOURCE #{resource}" + if resource['managers'] && !resource['managers'].empty? + update_sensor_config(resource) + else + update_sensor_proxyips(resource) + end node.default['redborder']['monitor']['config']['conf'] = { 'debug': log_level, diff --git a/resources/libraries/update_sensor_proxyips.rb b/resources/libraries/update_sensor_proxyips.rb new file mode 100644 index 0000000..1e01477 --- /dev/null +++ b/resources/libraries/update_sensor_proxyips.rb @@ -0,0 +1,83 @@ +module Rbmonitor + module Helpers + def update_sensor_proxyips(resource) + # SENSOR MONITORIZATION FOR PROXY AND IPS + # This is a BAD solution but I'm on a time constraint + # So please, merge this file with update_sensor_config.rb when possible + + # FLOW SENSORS + flow_nodes = resource['flow_nodes'] + begin + if flow_nodes + # Title of section + node.default['redborder']['monitor']['config']['sensors'].push('/* REMOTE SENSORS */') + + flow_nodes.each do |fnode| + next unless !fnode['redborder']['monitors'].empty? && fnode['ipaddress'] + + fnode_name = fnode['rbname'] || fnode.name + fnode_count = fnode['redborder']['monitors']&.size || 0 + + if fnode['redborder'] && !fnode['redborder']['monitors'].empty? + # Title of sensor + node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{fnode_name} Monitors: #{fnode_count} */") + sensor = { + 'timeout': 5, + 'sensor_name': fnode_name, + 'sensor_ip': fnode['ipaddress'], + 'community': (fnode['redborder']['snmp_community'].nil? || fnode['redborder']['snmp_community'] == '') ? 'public' : fnode['redborder']['snmp_community'].to_s, + 'snmp_version' => (fnode['redborder']['snmp_version'].nil? || fnode['redborder']['snmp_version'] == '') ? '2c' : fnode['redborder']['snmp_version'].to_s, + 'enrichment' => enrich(fnode), + 'monitors' => monitors(fnode), + } + node.default['redborder']['monitor']['count'] = node.default['redborder']['monitor']['count'] + fnode['redborder']['monitors'].length + node.default['redborder']['monitor']['config']['sensors'].push(sensor) + else + # The sensor is registered in another manager + node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{fnode_name} Monitors: #{fnode_count} (not in this manager) */") + end + end + end + rescue + puts 'Cant access to flow sensor, skipping...' + end + + # DEVICES SENSORS + device_nodes = resource['device_nodes'] + begin + if device_nodes + # Title of section + node.default['redborder']['monitor']['config']['sensors'].push('/* DEVICE SENSORS */') + + device_nodes.each do |dnode| + next unless !dnode['redborder']['monitors'].empty? && dnode['ipaddress'] + + dnode_name = dnode['rbname'] || dnode.name + dnode_count = dnode['redborder']['monitors'].size + + if dnode['redborder'] && !dnode['redborder']['monitors'].empty? + # Title of sensor + node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{dnode_name} Monitors: #{dnode_count} */") + sensor = { + 'timeout': 5, + 'sensor_name': dnode_name, + 'sensor_ip': dnode['ipaddress'], + 'community': (dnode['redborder']['snmp_community'].nil? || dnode['redborder']['snmp_community'] == '') ? 'public' : dnode['redborder']['snmp_community'].to_s, + 'snmp_version': (dnode['redborder']['snmp_version'].nil? || dnode['redborder']['snmp_version'] == '') ? '2c' : dnode['redborder']['snmp_version'].to_s, + 'enrichment' => enrich(dnode), + 'monitors' => monitors(dnode), + } + node.default['redborder']['monitor']['count'] = node.default['redborder']['monitor']['count'] + dnode['redborder']['monitors'].length + node.default['redborder']['monitor']['config']['sensors'].push(sensor) + else + # The sensor is registered in another manager + node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{dnode_name} Monitors: #{dnode_count} (not in this manager) */") + end + end + end + rescue + puts 'Cant access to device sensor, skipping...' + end + end + end +end From 1f1aea6d0c32a6bb78d022b121591226c2c9dbf3 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Wed, 11 Sep 2024 12:48:46 +0100 Subject: [PATCH 2/7] 18586 lint fixes --- resources/libraries/update_sensor_proxyips.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/libraries/update_sensor_proxyips.rb b/resources/libraries/update_sensor_proxyips.rb index 1e01477..7e6c9d6 100644 --- a/resources/libraries/update_sensor_proxyips.rb +++ b/resources/libraries/update_sensor_proxyips.rb @@ -14,7 +14,7 @@ def update_sensor_proxyips(resource) flow_nodes.each do |fnode| next unless !fnode['redborder']['monitors'].empty? && fnode['ipaddress'] - + fnode_name = fnode['rbname'] || fnode.name fnode_count = fnode['redborder']['monitors']&.size || 0 @@ -51,7 +51,7 @@ def update_sensor_proxyips(resource) device_nodes.each do |dnode| next unless !dnode['redborder']['monitors'].empty? && dnode['ipaddress'] - + dnode_name = dnode['rbname'] || dnode.name dnode_count = dnode['redborder']['monitors'].size From 1af63376521083249a9a535f3667787890fea969 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Wed, 11 Sep 2024 15:05:09 +0100 Subject: [PATCH 3/7] fix add flow sensors to manager --- resources/libraries/update_sensor_config.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/resources/libraries/update_sensor_config.rb b/resources/libraries/update_sensor_config.rb index f4eb7e4..33e2412 100644 --- a/resources/libraries/update_sensor_config.rb +++ b/resources/libraries/update_sensor_config.rb @@ -9,17 +9,20 @@ def update_sensor_config(resource) # FLOW SENSORS flow_nodes = resource['flow_nodes'] manager_list = resource['managers'] + begin if flow_nodes && !manager_list.empty? # Title of section node.default['redborder']['monitor']['config']['sensors'].push('/* REMOTE SENSORS, MONITORED ON ANY MANAGER */') manager_index = manager_list.find_index(resource['hostname']) + flow_nodes.each_with_index do |fnode, findex| next unless !fnode['redborder']['monitors'].empty? && fnode['ipaddress'] && fnode['redborder']['parent_id'].nil? fnode_name = fnode['rbname'].nil? ? fnode.name : fnode['rbname'] fnode_count = fnode['redborder']['monitors'].size - if findex % manager_list.length == manager_index && fnode['redborder'] && !fnode['redborder']['monitors'].size.empty? + + if findex % manager_list.length == manager_index && fnode['redborder'] && !fnode['redborder']['monitors'].empty? # Title of sensor node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{fnode_name} Monitors: #{fnode_count} */") sensor = { @@ -46,16 +49,19 @@ def update_sensor_config(resource) # DEVICES SENSORS device_nodes = resource['device_nodes'] manager_list = node['redborder']['managers_list'] + begin if device_nodes && !manager_list.empty? # Title of section node.default['redborder']['monitor']['config']['sensors'].push('/* DEVICE SENSORS */') manager_index = manager_list.find_index(resource['hostname']) + device_nodes.each_with_index do |dnode, dindex| next unless !dnode['redborder']['monitors'].empty? && dnode['ipaddress'] && dnode['redborder']['parent_id'].nil? dnode_name = dnode['rbname'].nil? ? dnode.name : dnode['rbname'] dnode_count = dnode['redborder']['monitors'].size + if dindex % manager_list.length == manager_index && dnode['redborder'] && !dnode['redborder']['monitors'].empty? # Title of sensor node.default['redborder']['monitor']['config']['sensors'].push("/* Node: #{dnode_name} Monitors: #{dnode_count} */") From 258d642d060c76d43b9f41cc0b72ee9f0e750526 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Thu, 12 Sep 2024 09:35:23 +0100 Subject: [PATCH 4/7] more lint fixes --- resources/libraries/update_sensor_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/libraries/update_sensor_config.rb b/resources/libraries/update_sensor_config.rb index 33e2412..f31bc01 100644 --- a/resources/libraries/update_sensor_config.rb +++ b/resources/libraries/update_sensor_config.rb @@ -49,7 +49,7 @@ def update_sensor_config(resource) # DEVICES SENSORS device_nodes = resource['device_nodes'] manager_list = node['redborder']['managers_list'] - + begin if device_nodes && !manager_list.empty? # Title of section From 8ec9f2830a84e92ee1aac5f2c924b7d215666759 Mon Sep 17 00:00:00 2001 From: Daniel Castro Date: Thu, 12 Sep 2024 09:35:56 +0100 Subject: [PATCH 5/7] delete comment for debugging --- resources/libraries/rbmonitor_helpers.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/libraries/rbmonitor_helpers.rb b/resources/libraries/rbmonitor_helpers.rb index 1f2ee10..8338bd6 100644 --- a/resources/libraries/rbmonitor_helpers.rb +++ b/resources/libraries/rbmonitor_helpers.rb @@ -131,7 +131,6 @@ def update_config(resource) update_service_config(resource) update_manager_config(resource) # Probably not super reliable but it's what I have atm - puts "PEDRO RESOURCE #{resource}" if resource['managers'] && !resource['managers'].empty? update_sensor_config(resource) else From 114a10d08517b1e9b403bd3171e360c6a0cbfd20 Mon Sep 17 00:00:00 2001 From: JPeraltaNic Date: Fri, 13 Sep 2024 14:27:42 +0100 Subject: [PATCH 6/7] Remove comments --- resources/libraries/rbmonitor_helpers.rb | 2 +- resources/libraries/update_sensor_proxyips.rb | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/libraries/rbmonitor_helpers.rb b/resources/libraries/rbmonitor_helpers.rb index 8338bd6..2f130e5 100644 --- a/resources/libraries/rbmonitor_helpers.rb +++ b/resources/libraries/rbmonitor_helpers.rb @@ -130,7 +130,7 @@ def update_config(resource) update_cluster_config(resource) update_service_config(resource) update_manager_config(resource) - # Probably not super reliable but it's what I have atm + if resource['managers'] && !resource['managers'].empty? update_sensor_config(resource) else diff --git a/resources/libraries/update_sensor_proxyips.rb b/resources/libraries/update_sensor_proxyips.rb index 7e6c9d6..3713b02 100644 --- a/resources/libraries/update_sensor_proxyips.rb +++ b/resources/libraries/update_sensor_proxyips.rb @@ -2,9 +2,8 @@ module Rbmonitor module Helpers def update_sensor_proxyips(resource) # SENSOR MONITORIZATION FOR PROXY AND IPS - # This is a BAD solution but I'm on a time constraint - # So please, merge this file with update_sensor_config.rb when possible + # TODO: Refactor # FLOW SENSORS flow_nodes = resource['flow_nodes'] begin From dfffd6d69bae6baf92f0d483bec16074229729f5 Mon Sep 17 00:00:00 2001 From: JPeraltaNic Date: Fri, 13 Sep 2024 15:01:50 +0100 Subject: [PATCH 7/7] Release 0.1.0 --- CHANGELOG.md | 9 +++++++-- resources/metadata.rb | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3af167f..99503da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,18 @@ cookbook-rb-monitor CHANGELOG =============== +## 0.1.0 + + - Daniel Castro + - [1af6337] fix add flow sensors to manager + - [2994471] add function to register sensors in proxy + ## 0.0.10 - Miguel Negrón - [c827e71] Merge pull request #22 from redBorder/bugfix/18354_device_sensors_not_in_config -## 0.1.0 +## 0.9.0 - Miguel Alvarez - [d89a1db] Fix sensor_name array invalid @@ -40,4 +46,3 @@ cookbook-rb-monitor CHANGELOG ## 0.0.1 ----- - [ejimenez] - Initial skel - diff --git a/resources/metadata.rb b/resources/metadata.rb index 4cd6330..6af5e6e 100644 --- a/resources/metadata.rb +++ b/resources/metadata.rb @@ -3,4 +3,4 @@ maintainer_email 'git@redborder.com' license 'AGPL-3.0' description 'Installs/Configures rb-monitor' -version '0.0.10' +version '0.1.0'