Skip to content

Commit

Permalink
Add systemd_exporter
Browse files Browse the repository at this point in the history
Systemd_exporter is now needed to expose data from the systemd managed
processes

Signed-off-by: Julien Godin <julien.godin@camptocamp.com>
  • Loading branch information
JGodin-C2C committed May 5, 2023
1 parent ad83fb8 commit 2579baf
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
7 changes: 7 additions & 0 deletions data/defaults.yaml
Expand Up @@ -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'
Expand Down
116 changes: 116 additions & 0 deletions 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,
}
}

0 comments on commit 2579baf

Please sign in to comment.