From 8cbf1f1e09b2838485fa2685be314513fdd513c7 Mon Sep 17 00:00:00 2001 From: Taylan Develioglu Date: Fri, 24 Jun 2016 13:23:06 +0200 Subject: [PATCH] Add support for a new parameter `graphite_flatten_hostname` that converts the hostname into one single graphite metric component. In our case we do not use the components of the host fqdn as part of the metric tree. Instead, the fqdn is a single component with dots replaced by underscores. e.g. foo.example.com becomes foo_example_com. This commit adds support for this but leaves it turned off by default. It also adds the missing parameter docs to the class header. --- lib/puppet/reports/graphite.rb | 11 ++++++++--- manifests/init.pp | 27 +++++++++++++++++++++------ manifests/params.pp | 1 + templates/graphite.yaml.erb | 1 + 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/lib/puppet/reports/graphite.rb b/lib/puppet/reports/graphite.rb index a5a670c..581b1a4 100644 --- a/lib/puppet/reports/graphite.rb +++ b/lib/puppet/reports/graphite.rb @@ -13,6 +13,7 @@ GRAPHITE_PREFIX = config[:graphite_prefix] GRAPHITE_SUFFIX = config[:graphite_suffix] GRAPHITE_REVERSE_HOSTNAME = config[:graphite_reverse_hostname] + GRAPHITE_FLATTEN_HOSTNAME = config[:graphite_flatten_hostname] desc <<-DESC Send notification of failed reports to a Graphite server via socket. @@ -33,12 +34,16 @@ def process prefix_parts.push GRAPHITE_PREFIX end + hostname = self.host if GRAPHITE_REVERSE_HOSTNAME - prefix_parts.push self.host.split(".").reverse.join(".") - else - prefix_parts.push self.host + hostname = hostname.split(".").reverse.join(".") end + if GRAPHITE_FLATTEN_HOSTNAME + hostname = hostname.gsub(".", "_") + end + prefix_parts.push hostname + if GRAPHITE_SUFFIX != nil prefix_parts.push GRAPHITE_SUFFIX end diff --git a/manifests/init.pp b/manifests/init.pp index 69e8b6b..6f4b2d0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -25,6 +25,21 @@ # String. The config file's group. Should be pe_puppet for Puppet Enterprise. # Default: puppet # +# [*graphite_prefix*] +# String. Prefix to use for graphite metrics. +# Default: undef +# +# [*graphite_suffix*] +# String. Suffix to use for graphite metrics. +# Default: puppet +# +# [*graphite_reverse_hostname*] +# Bool. Reverse the components of the fqdn in the graphite metrics. +# Default: true +# +# [*graphite_flatten_hostname*] +# Bool. Replace all dot ('.') characters in the fqdn with underscores ('_'). +# Default: false # # === Examples # @@ -41,15 +56,15 @@ # # class graphite_reporter ( - $graphite_host = $graphite_reporter::params::graphite_host, - $graphite_port = $graphite_reporter::params::graphite_port, - $config_file = $graphite_reporter::params::config_file, - $config_owner = $graphite_reporter::params::config_owner, - $config_group = $graphite_reporter::params::config_group, - + $graphite_host = $graphite_reporter::params::graphite_host, + $graphite_port = $graphite_reporter::params::graphite_port, + $config_file = $graphite_reporter::params::config_file, + $config_owner = $graphite_reporter::params::config_owner, + $config_group = $graphite_reporter::params::config_group, $graphite_prefix = $graphite_reporter::params::graphite_prefix, $graphite_suffix = $graphite_reporter::params::graphite_suffix, $graphite_reverse_hostname = $graphite_reporter::params::graphite_reverse_hostname, + $graphite_flatten_hostname = $graphite_reporter::params::graphite_flatten_hostname, ) inherits graphite_reporter::params { file { $config_file: diff --git a/manifests/params.pp b/manifests/params.pp index f405c67..f22e25c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -9,6 +9,7 @@ $graphite_prefix = undef $graphite_suffix = 'puppet' $graphite_reverse_hostname = true + $graphite_flatten_hostname = false if str2bool($::is_pe) { $config_file = '/etc/puppetlabs/puppet/graphite.yaml' diff --git a/templates/graphite.yaml.erb b/templates/graphite.yaml.erb index 3f66094..ca071d0 100644 --- a/templates/graphite.yaml.erb +++ b/templates/graphite.yaml.erb @@ -4,3 +4,4 @@ :graphite_prefix: <%= scope.lookupvar('graphite_prefix') %> :graphite_suffix: <%= scope.lookupvar('graphite_suffix') %> :graphite_reverse_hostname: <%= scope.lookupvar('graphite_reverse_hostname') %> +:graphite_flatten_hostname: <%= scope.lookupvar('graphite_flatten_hostname') %>