diff --git a/site-modules/profile/manifests/prometheus/node.pp b/site-modules/profile/manifests/prometheus/node.pp index 983e3d01..c2f575ee 100644 --- a/site-modules/profile/manifests/prometheus/node.pp +++ b/site-modules/profile/manifests/prometheus/node.pp @@ -1,51 +1,58 @@ # Prometheus configuration for nodes class profile::prometheus::node { include profile::prometheus::apt_config $defaults_file = '/etc/default/prometheus-node-exporter' package {'prometheus-node-exporter': ensure => latest, notify => Service['prometheus-node-exporter'], } service {'prometheus-node-exporter': ensure => 'running', enable => true, require => [ Package['prometheus-node-exporter'], File[$defaults_file], ] } + ::systemd::dropin_file {'prometheus-node-exporter/restart.conf': + ensure => present, + unit => 'prometheus-node-exporter.service', + filename => 'restart.conf', + content => "[Service]\nRestart=always\nRestartSec=5\n", + } + $lookup_defaults_config = lookup('prometheus::node::defaults_config', Hash) $listen_network = lookup('prometheus::node::listen_network', Optional[String], 'first', undef) $listen_address = lookup('prometheus::node::listen_address', Optional[String], 'first', undef) $actual_listen_address = pick($listen_address, ip_for_network($listen_network)) $listen_port = lookup('prometheus::node::listen_port') $target = "${actual_listen_address}:${listen_port}" $defaults_config = deep_merge( $lookup_defaults_config, { web => { listen_address => $target, }, } ) # Uses $defaults_config file {$defaults_file: ensure => 'present', owner => 'root', group => 'root', mode => '0644', content => template('profile/prometheus/node/prometheus-node-exporter.defaults.erb'), require => Package['prometheus-node-exporter'], notify => Service['prometheus-node-exporter'], } profile::prometheus::export_scrape_config {'node': target => $target, } } diff --git a/site-modules/profile/manifests/prometheus/sql.pp b/site-modules/profile/manifests/prometheus/sql.pp index 876dd1ec..9cc99c03 100644 --- a/site-modules/profile/manifests/prometheus/sql.pp +++ b/site-modules/profile/manifests/prometheus/sql.pp @@ -1,90 +1,96 @@ # Deployment of prometheus SQL exporter class profile::prometheus::sql { $exporter_name = 'sql' $package_name = "prometheus-${exporter_name}-exporter" $service_name = $package_name $defaults_file = "/etc/default/${package_name}" $config_file = "/etc/${package_name}.yml" $config_template = "${config_file}.in" $config_updater = "/usr/bin/update-${package_name}-config" package {$package_name: ensure => latest, } service {$service_name: ensure => 'running', enable => true, require => [ Package[$package_name], Exec[$config_updater], ] } + ::systemd::dropin_file {"${service_name}/restart.conf": + ensure => present, + unit => "${service_name}.service", + filename => 'restart.conf', + content => "[Service]\nRestart=always\nRestartSec=5\n", + } file {$config_updater: ensure => present, owner => 'root', group => 'root', mode => '0755', source => 'puppet:///modules/profile/prometheus/sql/update-prometheus-sql-exporter-config', } # needed for the the configuration generation # optional extra configuration per host $extra_config = lookup('prometheus::sql::exporter::extra_config', Data, 'first', undef) file {$config_template: ensure => present, owner => 'root', group => 'root', mode => '0644', content => template('profile/prometheus/sql/prometheus-sql-exporter.yml.in.erb'), notify => Exec[$config_updater], } $update_deps = ['python3-pkg-resources', 'python3-yaml'] ensure_packages( $update_deps, { ensure => present }, ) exec {$config_updater: refreshonly => true, creates => $config_file, require => [ Package[$update_deps], File[$config_template], File[$config_updater], ], notify => Service[$service_name], } $listen_network = lookup('prometheus::sql::listen_network', Optional[String], 'first', undef) $listen_address = lookup('prometheus::sql::listen_address', Optional[String], 'first', undef) $actual_listen_address = pick($listen_address, ip_for_network($listen_network)) $listen_port = lookup('prometheus::sql::listen_port') $target = "${actual_listen_address}:${listen_port}" $defaults_config = { web => { listen_address => $target, }, } file {$defaults_file: ensure => present, owner => 'root', group => 'root', mode => '0644', content => template('profile/prometheus/sql/prometheus-sql-exporter.defaults.erb'), require => Package[$package_name], notify => Service[$service_name], } profile::prometheus::export_scrape_config {'sql': target => $target, } }