From 3b81e279789a7818f26b7d4d3ed3a7075aefbab4 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 | 21 +++++++++++++-------- manifests/init.pp | 27 +++++++++++++++++++++------ manifests/params.pp | 1 + templates/graphite.yaml.erb | 1 + 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/lib/puppet/reports/graphite.rb b/lib/puppet/reports/graphite.rb index a5a670c..d76dbb5 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. @@ -26,25 +27,29 @@ def send_metric payload def process Puppet.debug "Sending status for #{self.host} to Graphite server at #{GRAPHITE_SERVER}" - + prefix_parts = Array.new - + if GRAPHITE_PREFIX != nil 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 - + prefix = prefix_parts.join(".") - + epochtime = Time.now.utc.to_i self.metrics.each { |metric,data| data.values.each { |val| 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') %>