From 5d20ad632cf37c2b42d9f5243c724c04b3eab79b Mon Sep 17 00:00:00 2001 From: Fernando Theirs Date: Thu, 22 Jul 2021 10:36:54 -0300 Subject: [PATCH] Collectd network configuration Process values from network_servers and apply these fields to collectd network plugin configuration. For IPv6 brackets around IP must be removed to make it work in Collectd. For every configured host, an entry with the following format will be added: Server "HostN" "PortN" Story: 2009018 Task: 42875 Depends-On: https://review.opendev.org/c/starlingx/config/+/799470 Signed-off-by: Fernando Theirs Change-Id: I248d0ddab58fce09d54b7befa9d6ac212d071487 --- puppet-manifests/src/hieradata/global.yaml | 3 +-- .../modules/platform/manifests/collectd.pp | 26 +++++++++++++++++-- .../platform/templates/collectd.conf.erb | 7 +++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/puppet-manifests/src/hieradata/global.yaml b/puppet-manifests/src/hieradata/global.yaml index 3ebdbb39..82537e79 100644 --- a/puppet-manifests/src/hieradata/global.yaml +++ b/puppet-manifests/src/hieradata/global.yaml @@ -32,8 +32,7 @@ platform::collectd::params::write_threads: 1 platform::collectd::params::max_read_interval: 86400 platform::collectd::params::write_queue_limit_high: 1000000 platform::collectd::params::write_queue_limit_low: 800000 -platform::collectd::params::server_addrs: [] -platform::collectd::params::server_port: 25826 +platform::collectd::params::default_server_port: 25826 platform::collectd::params::collectd_d_dir: '/etc/collectd.d/starlingx' # collectd: module named plugins diff --git a/puppet-manifests/src/modules/platform/manifests/collectd.pp b/puppet-manifests/src/modules/platform/manifests/collectd.pp index 41aa2ce3..16f28df6 100644 --- a/puppet-manifests/src/modules/platform/manifests/collectd.pp +++ b/puppet-manifests/src/modules/platform/manifests/collectd.pp @@ -5,10 +5,11 @@ class platform::collectd::params ( $write_threads = undef, $write_queue_limit_high = undef, $write_queue_limit_low = undef, - $server_addrs = [], - $server_port = undef, $max_read_interval = undef, + $network_servers = [], + $default_server_port = undef, + # python plugin controls $module_path = undef, $plugins = [], @@ -22,6 +23,27 @@ class platform::collectd::params ( class platform::collectd inherits ::platform::collectd::params { + #Get port or set default one + $server_ports = $network_servers.map |$elem| { + if(split($elem, ':').size() > 2) { + if(']:' in $elem) { + split($elem, ':')[-1] + } else { + $default_server_port + } + } else { + if(':' in $elem) { + split($elem, ':')[-1] + } else { + $default_server_port + } + } + } + #Get address + $server_ips = $network_servers.map | $i, $elem| { + $address = regsubst($elem.delete(":${server_ports[$i]}"),'[\[\]]','','G') + } + file { '/etc/collectd.conf': ensure => 'present', replace => true, diff --git a/puppet-manifests/src/modules/platform/templates/collectd.conf.erb b/puppet-manifests/src/modules/platform/templates/collectd.conf.erb index cb833ef2..ee3bc933 100644 --- a/puppet-manifests/src/modules/platform/templates/collectd.conf.erb +++ b/puppet-manifests/src/modules/platform/templates/collectd.conf.erb @@ -81,12 +81,15 @@ WriteQueueLimitLow <%= @write_queue_limit_low %> # LogLevel info # +<% if @server_ips != [] -%> # Have collectd send to these servers on server_port -<%- @server_addrs.each do |server_addr| -%> - Server "<%= server_addr %>" "<%= @server_port %>" +<%- @server_ips.each_with_index do |ip, index| -%> + Server "<%= ip %>" "<%= @server_ports[index] %>" <%- end -%> +<% end -%> + LoadPlugin python