From 26b7c042a0372cda8e501803bd8c0b7a7f2773d2 Mon Sep 17 00:00:00 2001 From: Tahaa Karim Date: Tue, 12 Sep 2017 17:34:11 +0530 Subject: [PATCH] Add support for mesos exporter --- manifests/mesos_exporter.pp | 138 ++++++++++++++++++++++++++++++++++++ manifests/params.pp | 10 +++ 2 files changed, 148 insertions(+) create mode 100644 manifests/mesos_exporter.pp diff --git a/manifests/mesos_exporter.pp b/manifests/mesos_exporter.pp new file mode 100644 index 000000000..864ab5c40 --- /dev/null +++ b/manifests/mesos_exporter.pp @@ -0,0 +1,138 @@ +# Class: prometheus::mesos_exporter +# +# This module manages prometheus mesos_exporter +# +# Parameters: +# [*arch*] +# Architecture (amd64 or i386) +# +# [*bin_dir*] +# Directory where binaries are located +# +# [*server_type*] +# Specify target type master or slave +# +# [*cnf_uri*] +# The URI to obtain mesos stats from +# +# [*download_extension*] +# Extension for the release binary archive +# +# [*download_url*] +# Complete URL corresponding to the where the release binary archive can be downloaded +# +# [*download_url_base*] +# Base URL for the binary archive +# +# [*extra_groups*] +# Extra groups to add the binary user to +# +# [*extra_options*] +# Extra options added to the startup command +# +# [*group*] +# Group under which the binary is running +# +# [*init_style*] +# Service startup scripts style (e.g. rc, upstart or systemd) +# +# [*install_method*] +# Installation method: url or package (only url is supported currently) +# +# [*manage_group*] +# Whether to create a group for or rely on external code for that +# +# [*manage_service*] +# Should puppet manage the service? (default true) +# +# [*manage_user*] +# Whether to create user or rely on external code for that +# +# [*os*] +# Operating system (linux is the only one supported) +# +# [*package_ensure*] +# If package, then use this for package ensure default 'latest' +# +# [*package_name*] +# The binary package name - not available yet +# +# [*purge_config_dir*] +# Purge config files no longer generated by Puppet +# +# [*restart_on_change*] +# Should puppet restart the service on configuration change? (default true) +# +# [*service_enable*] +# Whether to enable the service from puppet (default true) +# +# [*service_ensure*] +# State ensured for the service (default 'running') +# +# [*user*] +# User which runs the service +# +# [*version*] +# The binary release version +class prometheus::mesos_exporter ( + $arch = $::prometheus::params::arch, + $bin_dir = $::prometheus::params::bin_dir, + $server_type = $::prometheus::params::mesos_exporter_server_type, + $cnf_scrape_uri = $::prometheus::params::mesos_exporter_cnf_scrape_uri, + $download_extension = $::prometheus::params::mesos_exporter_download_extension, + $download_url = undef, + $download_url_base = $::prometheus::params::mesos_exporter_download_url_base, + $extra_groups = $::prometheus::params::mesos_exporter_extra_groups, + $extra_options = '', + $group = $::prometheus::params::mesos_exporter_group, + $init_style = $::prometheus::params::init_style, + $install_method = $::prometheus::params::install_method, + $manage_group = true, + $manage_service = true, + $manage_user = true, + $os = $::prometheus::params::os, + $package_ensure = $::prometheus::params::mesos_exporter_package_ensure, + $package_name = $::prometheus::params::mesos_exporter_package_name, + $purge_config_dir = true, + $restart_on_change = true, + $service_enable = true, + $service_ensure = 'running', + $user = $::prometheus::params::mesos_exporter_user, + $version = $::prometheus::params::mesos_exporter_version, +) inherits prometheus::params { + $real_download_url = pick($download_url,"${download_url_base}/download/v${version}/${package_name}-${version}.${os}-${arch}.${download_extension}") + validate_bool($purge_config_dir) + validate_bool($manage_user) + validate_bool($manage_service) + validate_bool($restart_on_change) + $notify_service = $restart_on_change ? { + true => Service['mesos_exporter'], + default => undef, + } + + $options = "-${server_type} ${cnf_scrape_uri} ${extra_options}" + + prometheus::daemon { 'mesos_exporter': + install_method => $install_method, + version => $version, + download_extension => $download_extension, + os => $os, + arch => $arch, + real_download_url => $real_download_url, + bin_dir => $bin_dir, + notify_service => $notify_service, + package_name => $package_name, + package_ensure => $package_ensure, + manage_user => $manage_user, + user => $user, + extra_groups => $extra_groups, + 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, + } +} diff --git a/manifests/params.pp b/manifests/params.pp index 0d8c680e6..37a1ca480 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -31,6 +31,16 @@ $group = 'prometheus' $install_method = 'url' $localstorage = '/var/lib/prometheus' + $mesos_exporter_server_type= 'master' + $mesos_exporter_cnf_scrape_uri = 'http://localhost:5050' + $mesos_exporter_download_extension = 'tar.gz' + $mesos_exporter_download_url_base = 'https://github.com/mesosphere/mesos_exporter/releases' + $mesos_exporter_extra_groups = [] + $mesos_exporter_group = 'mesos-exporter' + $mesos_exporter_user = 'mesos-exporter' + $mesos_exporter_package_ensure = 'latest' + $mesos_exporter_package_name = 'mesos_exporter' + $mesos_exporter_version = '1.0.0' $haproxy_exporter_cnf_scrape_uri = 'http://localhost:1234/haproxy?stats;csv' $haproxy_exporter_download_extension = 'tar.gz' $haproxy_exporter_download_url_base = 'https://github.com/prometheus/haproxy_exporter/releases'