diff --git a/data/defaults.yaml b/data/defaults.yaml index 563c956f..16e601c4 100644 --- a/data/defaults.yaml +++ b/data/defaults.yaml @@ -228,6 +228,13 @@ prometheus::statsd_exporter::package_name: 'statsd_exporter' prometheus::statsd_exporter::service_name: 'statsd_exporter' prometheus::statsd_exporter::user: 'statsd-exporter' prometheus::statsd_exporter::version: '0.17.0' +prometheus::systemd_exporter::download_extension: 'tar.gz' +prometheus::systemd_exporter::download_url_base: 'https://github.com/povilasv/systemd_exporter/releases' +prometheus::systemd_exporter::extra_groups: [] +prometheus::systemd_exporter::group: 'systemd-exporter' +prometheus::systemd_exporter::package_name: 'systemd_exporter' +prometheus::systemd_exporter::user: 'systemd-exporter' +prometheus::systemd_exporter::version: '0.5.0' prometheus::storage_retention: '360h' # 15d; "d" suffix is only supported with prom >= 2.* prometheus::blackbox_exporter::user: 'blackbox-exporter' prometheus::blackbox_exporter::group: 'blackbox-exporter' diff --git a/manifests/systemd_exporter.pp b/manifests/systemd_exporter.pp new file mode 100644 index 00000000..2a598c88 --- /dev/null +++ b/manifests/systemd_exporter.pp @@ -0,0 +1,116 @@ +# @summary This module manages prometheus node redis_exporter +# @param arch +# Architecture (amd64 or i386) +# @param bin_dir +# Directory where binaries are located +# @param download_extension +# Extension for the release binary archive +# @param download_url +# Complete URL corresponding to the where the release binary archive can be downloaded +# @param download_url_base +# Base URL for the binary archive +# @param extra_groups +# Extra groups to add the binary user to +# @param extra_options +# Extra options added to the startup command +# For a full list of the exporter's supported extra options +# please refer to https://github.com/oliver006/redis_exporter +# @param group +# Group under which the binary is running +# @param init_style +# Service startup scripts style (e.g. rc, upstart or systemd) +# @param install_method +# Installation method: url or package (only url is supported currently) +# @param manage_group +# Whether to create a group for or rely on external code for that +# @param manage_service +# Should puppet manage the service? (default true) +# @param manage_user +# Whether to create user or rely on external code for that +# @param namespace +# Namespace for the metrics, defaults to `redis`. +# @param os +# Operating system (linux is the only one supported) +# @param package_name +# The binary package name - not available yet +# @param purge_config_dir +# Purge config files no longer generated by Puppet +# @param restart_on_change +# Should puppet restart the service on configuration change? (default true) +# @param service_enable +# Whether to enable the service from puppet (default true) +# @param service_ensure +# State ensured for the service (default 'running') +# @param service_name +# Name of the node exporter service (default 'redis_exporter') +# @param user +# User which runs the service +# @param version +# The binary release version +class prometheus::systemd_exporter ( + String $download_extension, + Prometheus::Uri $download_url_base , + Array[String] $extra_groups, + String[1] $group, + String[1] $package_name, + String[1] $user, + String[1] $version, + Boolean $purge_config_dir = true, + Boolean $restart_on_change = true, + Boolean $service_enable = true, + Stdlib::Ensure::Service $service_ensure = 'running', + String[1] $service_name = 'systemd_exporter', + Prometheus::Initstyle $init_style = $facts['service_provider'], + Prometheus::Install $install_method = $prometheus::install_method, + Boolean $manage_group = true, + Boolean $manage_service = true, + Boolean $manage_user = true, + String[1] $namespace = 'systemd', + String[1] $os = downcase($facts['kernel']), + String $extra_options = '', + Optional[Prometheus::Uri] $download_url = undef, + String[1] $arch = $prometheus::real_arch, + String[1] $bin_dir = $prometheus::bin_dir, + Boolean $export_scrape_job = false, + Optional[Stdlib::Host] $scrape_host = undef, + Stdlib::Port $scrape_port = 9558, + String[1] $scrape_job_name = 'systemd', + Optional[Hash] $scrape_job_labels = undef, +) inherits prometheus { + $release = "v${version}" + + $real_download_url = pick($download_url, "${download_url_base}/download/${release}/${package_name}-${version}.${os}-${arch}.${download_extension}") + $notify_service = $restart_on_change ? { + true => Service[$service_name], + default => undef, + } + $options = $extra_options + + prometheus::daemon { $service_name: + install_method => 'url', + version => $version, + download_extension => $download_extension, + os => $os, + arch => $arch, + bin_dir => $bin_dir, + notify_service => $notify_service, + package_name => $package_name, + manage_user => $manage_user, + user => $user, + extra_groups => $extra_groups, + real_download_url => $real_download_url, + group => $group, + manage_group => $manage_group, + purge => $purge_config_dir, + options => $options, + init_style => $init_style, + service_ensure => $service_ensure, + service_enable => $service_enable, + manage_service => $manage_service, + export_scrape_job => $export_scrape_job, + scrape_host => $scrape_host, + scrape_port => $scrape_port, + scrape_job_name => $scrape_job_name, + scrape_job_labels => $scrape_job_labels, + } +}