From 195c5afd5b6e3021d01417dd75cff46821e1478a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 20 Sep 2019 11:38:40 -0400 Subject: [PATCH] add labeling support for exported scrape jobs The previous work to collect scrape jobs (#304) was a good start, but it really becomes powerful when you can select certain labels to apply on the exporters. For example, I use this to export the node roles' in the prometheus metrics, which allows me to regroup results by role instead of by node. --- manifests/apache_exporter.pp | 2 ++ manifests/beanstalkd_exporter.pp | 2 ++ manifests/blackbox_exporter.pp | 2 ++ manifests/collectd_exporter.pp | 2 ++ manifests/consul_exporter.pp | 2 ++ manifests/daemon.pp | 3 ++- manifests/elasticsearch_exporter.pp | 2 ++ manifests/graphite_exporter.pp | 2 ++ manifests/haproxy_exporter.pp | 2 ++ manifests/mesos_exporter.pp | 2 ++ manifests/mongodb_exporter.pp | 2 ++ manifests/mysqld_exporter.pp | 2 ++ manifests/nginx_vts_exporter.pp | 2 ++ manifests/node_exporter.pp | 2 ++ manifests/postgres_exporter.pp | 2 ++ manifests/process_exporter.pp | 2 ++ manifests/rabbitmq_exporter.pp | 2 ++ manifests/redis_exporter.pp | 2 ++ manifests/snmp_exporter.pp | 2 ++ manifests/statsd_exporter.pp | 2 ++ manifests/varnish_exporter.pp | 2 ++ 21 files changed, 42 insertions(+), 1 deletion(-) diff --git a/manifests/apache_exporter.pp b/manifests/apache_exporter.pp index caf12d4ec..d31f8873c 100644 --- a/manifests/apache_exporter.pp +++ b/manifests/apache_exporter.pp @@ -103,6 +103,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9117, String[1] $scrape_job_name = 'apache', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 @@ -139,5 +140,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/beanstalkd_exporter.pp b/manifests/beanstalkd_exporter.pp index bf25c06c8..cc398f39b 100644 --- a/manifests/beanstalkd_exporter.pp +++ b/manifests/beanstalkd_exporter.pp @@ -111,6 +111,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 8080, String[1] $scrape_job_name = 'beanstalkd', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 @@ -159,5 +160,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/blackbox_exporter.pp b/manifests/blackbox_exporter.pp index 558b25f30..590be740f 100644 --- a/manifests/blackbox_exporter.pp +++ b/manifests/blackbox_exporter.pp @@ -119,6 +119,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9115, String[1] $scrape_job_name = 'blackbox', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { @@ -171,5 +172,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/collectd_exporter.pp b/manifests/collectd_exporter.pp index 75c3823b1..120cf4d14 100644 --- a/manifests/collectd_exporter.pp +++ b/manifests/collectd_exporter.pp @@ -91,6 +91,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9103, String[1] $scrape_job_name = 'collectd', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -124,5 +125,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/consul_exporter.pp b/manifests/consul_exporter.pp index 569539c57..8f9a2d665 100644 --- a/manifests/consul_exporter.pp +++ b/manifests/consul_exporter.pp @@ -115,6 +115,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9107, String[1] $scrape_job_name = 'consul', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { # Prometheus added a 'v' on the realease name at 0.3.0 @@ -170,5 +171,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/daemon.pp b/manifests/daemon.pp index a150c0a81..7749a7ed2 100644 --- a/manifests/daemon.pp +++ b/manifests/daemon.pp @@ -89,6 +89,7 @@ Stdlib::Host $scrape_host = $facts['fqdn'], Optional[Stdlib::Port] $scrape_port = undef, String[1] $scrape_job_name = $name, + Optional[Hash] $scrape_job_labels = {}, ) { case $install_method { @@ -266,7 +267,7 @@ @@prometheus::scrape_job { "${scrape_host}:${scrape_port}": job_name => $scrape_job_name, targets => ["${scrape_host}:${scrape_port}"], - labels => { 'alias' => $scrape_host }, + labels => { 'alias' => $scrape_host } + $scrape_job_labels, } } } diff --git a/manifests/elasticsearch_exporter.pp b/manifests/elasticsearch_exporter.pp index d3aa8eacf..274ab0afe 100644 --- a/manifests/elasticsearch_exporter.pp +++ b/manifests/elasticsearch_exporter.pp @@ -112,6 +112,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9114, String[1] $scrape_job_name = 'elasticsearch', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 @@ -154,5 +155,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/graphite_exporter.pp b/manifests/graphite_exporter.pp index 42fd74a5e..65bdb4281 100644 --- a/manifests/graphite_exporter.pp +++ b/manifests/graphite_exporter.pp @@ -91,6 +91,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9108, String[1] $scrape_job_name = 'graphite', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -124,5 +125,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/haproxy_exporter.pp b/manifests/haproxy_exporter.pp index ea3cfd556..cd0280e58 100644 --- a/manifests/haproxy_exporter.pp +++ b/manifests/haproxy_exporter.pp @@ -99,6 +99,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9101, String[1] $scrape_job_name = 'haproxy', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -134,6 +135,7 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/mesos_exporter.pp b/manifests/mesos_exporter.pp index 9419a73ef..3c7afa45c 100644 --- a/manifests/mesos_exporter.pp +++ b/manifests/mesos_exporter.pp @@ -103,6 +103,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9105, String[1] $scrape_job_name = 'mesos', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -138,5 +139,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/mongodb_exporter.pp b/manifests/mongodb_exporter.pp index 70e57c8f2..e070896dc 100644 --- a/manifests/mongodb_exporter.pp +++ b/manifests/mongodb_exporter.pp @@ -105,6 +105,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9216, String[1] $scrape_job_name = 'mongodb', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 @@ -147,5 +148,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/mysqld_exporter.pp b/manifests/mysqld_exporter.pp index 02bc5c81a..132583eda 100644 --- a/manifests/mysqld_exporter.pp +++ b/manifests/mysqld_exporter.pp @@ -123,6 +123,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9104, String[1] $scrape_job_name = 'mysql', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 @@ -171,5 +172,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/nginx_vts_exporter.pp b/manifests/nginx_vts_exporter.pp index 2dcd6b50c..1396bdce6 100644 --- a/manifests/nginx_vts_exporter.pp +++ b/manifests/nginx_vts_exporter.pp @@ -99,6 +99,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9913, String[1] $scrape_job_name = 'nginx_vts', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -134,6 +135,7 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/node_exporter.pp b/manifests/node_exporter.pp index fab4033ca..49559ca4c 100644 --- a/manifests/node_exporter.pp +++ b/manifests/node_exporter.pp @@ -115,6 +115,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9100, String[1] $scrape_job_name = 'node', + Optional[Hash] $scrape_job_labels = {}, Optional[String[1]] $bin_name = undef, ) inherits prometheus { @@ -173,6 +174,7 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, bin_name => $bin_name, } } diff --git a/manifests/postgres_exporter.pp b/manifests/postgres_exporter.pp index 2ce105b78..3d214048f 100644 --- a/manifests/postgres_exporter.pp +++ b/manifests/postgres_exporter.pp @@ -126,6 +126,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9187, String[1] $scrape_job_name = 'postgres', + Optional[Hash] $scrape_job_labels = {} ) inherits prometheus { $release = "v${version}" @@ -219,5 +220,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/process_exporter.pp b/manifests/process_exporter.pp index 078f5de17..6fb9d323e 100644 --- a/manifests/process_exporter.pp +++ b/manifests/process_exporter.pp @@ -98,6 +98,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9256, String[1] $scrape_job_name = 'process', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $filename = "${package_name}-${version}.${os}-${arch}.${download_extension}" @@ -143,5 +144,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/rabbitmq_exporter.pp b/manifests/rabbitmq_exporter.pp index 173b8344d..27cc74107 100644 --- a/manifests/rabbitmq_exporter.pp +++ b/manifests/rabbitmq_exporter.pp @@ -131,6 +131,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9090, String[1] $scrape_job_name = 'rabbitmq', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url, "${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -177,5 +178,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/redis_exporter.pp b/manifests/redis_exporter.pp index edf955f6d..53134aafd 100644 --- a/manifests/redis_exporter.pp +++ b/manifests/redis_exporter.pp @@ -110,6 +110,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9121, String[1] $scrape_job_name = 'redis', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $release = "v${version}" @@ -180,5 +181,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/snmp_exporter.pp b/manifests/snmp_exporter.pp index 981ccf044..715539a63 100644 --- a/manifests/snmp_exporter.pp +++ b/manifests/snmp_exporter.pp @@ -107,6 +107,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9116, String[1] $scrape_job_name = 'snmp', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -169,5 +170,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/statsd_exporter.pp b/manifests/statsd_exporter.pp index 1d41f1a15..78c9dff23 100644 --- a/manifests/statsd_exporter.pp +++ b/manifests/statsd_exporter.pp @@ -109,6 +109,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9102, String[1] $scrape_job_name = 'statsd', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { # Prometheus added a 'v' on the realease name at 0.4.0 and changed the configuration format to yaml in 0.5.0 @@ -165,5 +166,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } } diff --git a/manifests/varnish_exporter.pp b/manifests/varnish_exporter.pp index 1203e9005..e0f3303b2 100644 --- a/manifests/varnish_exporter.pp +++ b/manifests/varnish_exporter.pp @@ -97,6 +97,7 @@ Boolean $export_scrape_job = false, Stdlib::Port $scrape_port = 9131, String[1] $scrape_job_name = 'varnish', + Optional[Hash] $scrape_job_labels = {}, ) inherits prometheus { $real_download_url = pick($download_url,"${download_url_base}/download/${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") @@ -131,5 +132,6 @@ export_scrape_job => $export_scrape_job, scrape_port => $scrape_port, scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, } }