From 60e161aab1ffb0703495ecd3a558405f5643e55d Mon Sep 17 00:00:00 2001 From: Nick Walker Date: Mon, 5 Feb 2018 16:41:01 -0800 Subject: [PATCH] Allow a hash of metrics server information Previously, we only allowed passing an influxdb host but you may want to pass a port or a different database type for influx. Additionally, you may prefer to ship to graphite. You can now do any of these by using the correct metrics_server_info hash. --- manifests/activemq.pp | 2 +- manifests/init.pp | 2 +- manifests/orchestrator.pp | 2 +- manifests/pe_metric.pp | 26 +++++++++++++++++++++++--- manifests/puppetdb.pp | 2 +- manifests/puppetserver.pp | 2 +- types/metrics_server.pp | 6 ++++++ 7 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 types/metrics_server.pp diff --git a/manifests/activemq.pp b/manifests/activemq.pp index 9385fff..d5b11aa 100644 --- a/manifests/activemq.pp +++ b/manifests/activemq.pp @@ -4,7 +4,7 @@ String $metrics_ensure = $::pe_metric_curl_cron_jobs::activemq_metrics_ensure, Array[String] $hosts = $::pe_metric_curl_cron_jobs::activemq_hosts, Integer $port = $::pe_metric_curl_cron_jobs::activemq_port, - Optional[String] $influxdb_host = $::pe_metric_curl_cron_jobs::influxdb_host, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = $::pe_metric_curl_cron_jobs::metrics_server_info, ) { $scripts_dir = $::pe_metric_curl_cron_jobs::scripts_dir diff --git a/manifests/init.pp b/manifests/init.pp index 8d64977..a21923a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -19,7 +19,7 @@ Array[String] $activemq_hosts = [ '127.0.0.1' ], Integer $activemq_port = 8161, Boolean $symlink_puppet_metrics_collector = true, - Optional[String] $influxdb_host = undef, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = undef, ) { $scripts_dir = "${output_dir}/scripts" $bin_dir = "${output_dir}/bin" diff --git a/manifests/orchestrator.pp b/manifests/orchestrator.pp index c5dfe8c..e66d7af 100644 --- a/manifests/orchestrator.pp +++ b/manifests/orchestrator.pp @@ -4,7 +4,7 @@ String $metrics_ensure = $::pe_metric_curl_cron_jobs::orchestrator_metrics_ensure, Array[String] $hosts = $::pe_metric_curl_cron_jobs::orchestrator_hosts, Integer $port = $::pe_metric_curl_cron_jobs::orchestrator_port, - Optional[String] $influxdb_host = $::pe_metric_curl_cron_jobs::influxdb_host, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = $::pe_metric_curl_cron_jobs::metrics_server_info, ) { Pe_metric_curl_cron_jobs::Pe_metric { output_dir => $::pe_metric_curl_cron_jobs::output_dir, diff --git a/manifests/pe_metric.pp b/manifests/pe_metric.pp index aced870..ea87a43 100644 --- a/manifests/pe_metric.pp +++ b/manifests/pe_metric.pp @@ -10,7 +10,7 @@ String $metric_script_file = 'tk_metrics', Array[Hash] $additional_metrics = [], Boolean $ssl = true, - Optional[String] $influxdb_host = undef, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = undef, ) { $metrics_output_dir = "${output_dir}/${metrics_type}" @@ -43,8 +43,28 @@ $metrics_base_command = "${script_file_name} --metrics_type ${metrics_type} --output-dir ${metrics_output_dir}" - if !empty($influxdb_host) { - $metrics_command = "${metrics_base_command} | ${conversion_script_file_name} --netcat ${influxdb_host} --convert-to influxdb --influx-db pe_metrics" + $metrics_server_hostname = $metrics_server_info['hostname'] + $metrics_server_port = $metrics_server_info['port'] + $metrics_server_type = $metrics_server_info['metrics_server_type'] + $metrics_server_db = $metrics_server_info['db_name'] + + if empty($metrics_server_db) and $metrics_server_type == 'influxdb' { + fail( 'When using an influxdb server you must provide the db_name to store metrics in' ) + } + + if !empty($metrics_server_info) { + $local_metrics_command = "${metrics_base_command} | ${conversion_script_file_name} --netcat ${metrics_server_hostname} --convert-to ${metrics_server_type}" + + $port_metrics_command = empty($metrics_server_port) ? { + false => "${local_metrics_command} --port ${metrics_server_port}", + true => $local_metrics_command, + } + + $metrics_command = $metrics_server_type ? { + 'influxdb' => "${port_metrics_command} --influx-db ${metrics_server_db}", + 'graphite' => $port_metrics_command, + default => $port_metrics_command, + } } else { $metrics_command = "${metrics_base_command} --no-print" } diff --git a/manifests/puppetdb.pp b/manifests/puppetdb.pp index 0e76bb4..54dc419 100644 --- a/manifests/puppetdb.pp +++ b/manifests/puppetdb.pp @@ -4,7 +4,7 @@ String $metrics_ensure = $::pe_metric_curl_cron_jobs::puppetdb_metrics_ensure, Array[String] $hosts = $::pe_metric_curl_cron_jobs::puppetdb_hosts, Integer $port = $::pe_metric_curl_cron_jobs::puppetdb_port, - Optional[String] $influxdb_host = $::pe_metric_curl_cron_jobs::influxdb_host, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = $::pe_metric_curl_cron_jobs::metrics_server_info, ) { Pe_metric_curl_cron_jobs::Pe_metric { output_dir => $::pe_metric_curl_cron_jobs::output_dir, diff --git a/manifests/puppetserver.pp b/manifests/puppetserver.pp index 2793a82..74d20a0 100644 --- a/manifests/puppetserver.pp +++ b/manifests/puppetserver.pp @@ -4,7 +4,7 @@ String $metrics_ensure = $::pe_metric_curl_cron_jobs::puppetserver_metrics_ensure, Array[String] $hosts = $::pe_metric_curl_cron_jobs::puppetserver_hosts, Integer $port = $::pe_metric_curl_cron_jobs::puppetserver_port, - Optional[String] $influxdb_host = $::pe_metric_curl_cron_jobs::influxdb_host, + Optional[Pe_metric_curl_cron_jobs::Metrics_server] $metrics_server_info = $::pe_metric_curl_cron_jobs::metrics_server_info, ) { Pe_metric_curl_cron_jobs::Pe_metric { output_dir => $::pe_metric_curl_cron_jobs::output_dir, diff --git a/types/metrics_server.pp b/types/metrics_server.pp new file mode 100644 index 0000000..44d4e03 --- /dev/null +++ b/types/metrics_server.pp @@ -0,0 +1,6 @@ +type Pe_metric_curl_cron_jobs::Metrics_server = Struct[{ + metrics_server_type => Enum['influxdb','graphite'], + hostname => String, + port => Integer, + db_name => String, +}]