Puppet Class: profile::wmcs::metricsinfra::prometheus_configurator
- Defined in:
- modules/profile/manifests/wmcs/metricsinfra/prometheus_configurator.pp
Overview
SPDX-License-Identifier: Apache-2.0
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'modules/profile/manifests/wmcs/metricsinfra/prometheus_configurator.pp', line 2
class profile::wmcs::metricsinfra::prometheus_configurator (
Stdlib::HTTPUrl $config_manager_url = lookup('profile::wmcs::metricsinfra::config_manager_url', {default_value => 'http://config-manager.svc.metricsinfra.eqiad1.wikimedia.cloud'}),
Array[Stdlib::Fqdn] $alertmanager_hosts = lookup('profile::wmcs::metricsinfra::prometheus_alertmanager_hosts'),
Array[Hash] $global_jobs = lookup('profile::wmcs::metricsinfra::global_jobs'),
Stdlib::Fqdn $alertmanager_active_host = lookup('profile::wmcs::metricsinfra::alertmanager_active_host'),
) {
$gitdir = '/var/lib/git'
$clone_dir = "${gitdir}/cloud/metricsinfra/prometheus-configurator"
group { 'prometheus-configurator':
ensure => present,
system => true,
}
user { 'prometheus-configurator':
ensure => present,
system => true,
gid => 'prometheus-configurator',
home => '/nonexistent',
# add to prometheus group for access to edit its configuration
groups => ['prometheus'],
}
# at least this time the dependencies are packaged, so no need
# to do venv tricks here!
ensure_packages(['python3-requests', 'python3-yaml'])
wmflib::dir::mkdir_p("${gitdir}/cloud/metricsinfra")
# TODO: better deployment model (scap, debian, so on) - T288052
git::clone { 'cloud/metricsinfra/prometheus-configurator':
ensure => latest,
directory => $clone_dir,
owner => 'prometheus-configurator',
group => 'prometheus-configurator',
require => User['prometheus-configurator'],
}
file { '/etc/prometheus-configurator':
ensure => directory,
owner => 'prometheus-configurator',
group => 'prometheus-configurator',
}
$config = {
manager => {
url => $config_manager_url,
},
openstack => {
credentials => '/etc/novaobserver.yaml',
cloud => 'novaobserver',
},
alertmanager_hosts => $alertmanager_hosts.map |Stdlib::Fqdn $host| {
"${host}:9093"
},
alert_routing => {
irc_base => "http://${alertmanager_active_host}:19190/",
},
global_jobs => $global_jobs,
outputs => [],
external_rules_files => [
'alerts_default.yml',
],
external_labels => {
replica => $::facts['networking']['hostname'],
},
}
file { '/etc/prometheus-configurator/config.yaml':
ensure => present,
owner => 'prometheus-configurator',
group => 'prometheus-configurator',
content => to_yaml($config),
mode => '0440',
}
file { '/etc/prometheus-configurator/config.d/':
ensure => directory,
owner => 'prometheus-configurator',
group => 'prometheus-configurator',
}
systemd::timer::job { 'prometheus-configurator':
ensure => present,
description => 'Update prometheus configuration from the controller server',
working_directory => $clone_dir,
command => '/usr/bin/python3 scripts/create-prometheus-config --config /etc/prometheus-configurator/config.yaml --config "/etc/prometheus-configurator/config.d/*.yaml"',
user => 'prometheus-configurator',
interval => [
{
'start' => 'OnBootSec',
'interval' => '30s',
},
{
'start' => 'OnUnitInactiveSec',
'interval' => '300s',
},
],
environment => {
'PYTHONPATH' => $clone_dir,
},
}
}
|