Puppet Class: metamonitoring::expected_instances

Defined in:
modules/metamonitoring/manifests/expected_instances.pp

Overview

SPDX-License-Identifier: Apache-2.0

Parameters:

  • datacenters (Array[String]) (defaults to: lookup('datacenters'))


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
# File 'modules/metamonitoring/manifests/expected_instances.pp', line 2

class metamonitoring::expected_instances (
    Array[String] $datacenters = lookup('datacenters'), # lint:ignore:wmf_styleguide
) {
    $dc_pattern = join($datacenters, '|')
    $re = Regexp("^.*\\.(${dc_pattern}).*$")
    $prometheus_instances = wmflib::puppetdb_query('resources [title, certname] { (title ~ "^prometheus@") and (type = "Service")}')
    $icinga_instances = (wmflib::puppetdb_query('resources [certname] { (title = "icinga") and (type = "Systemd::Service")}')).reduce({}) |$memo, $instance| {
        $host = regsubst($instance['certname'], '\..*$', '')
        $site_index = Integer(regsubst($host, '^[^0-9]*([0-9]).*$', '\1')) - 1
        $site = $datacenters[$site_index]
        $memo + {
            "icinga_${host}_${site}" => {
                  'source' => 'icinga',
                  'site'   => $site,
                  'host'   => $host,
                  'fqdn'   => $instance['certname'],
            }
        }
    }

    $monitored_instances = $prometheus_instances.reduce({}) |$memo, $instance| {
        if $instance['certname'] =~ $re {
            $site = $1
            $e = {
                'source'     => 'prometheus',
                'prometheus' => $instance['title'].downcase.split('@')[-1],
                'site'       => $site,
            }
            $memo + { "prometheus_${instance['title'].downcase.split('@')[-1]}_${site}" => $e }
        } else {
            # continue
            $memo
        }
    } + { 'thanos' => {
            'source' => 'thanos'
        }
    } + $icinga_instances
}