Defined Type: prometheus::swagger::service_catalog

Defined in:
modules/prometheus/manifests/swagger/service_catalog.pp

Overview

Generate targets for swagger_exporter checks.

Parameters:

  • services (Hash[String, Wmflib::Service])
  • targets_path (Stdlib::Unixpath)


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
# File 'modules/prometheus/manifests/swagger/service_catalog.pp', line 4

define prometheus::swagger::service_catalog (
  Hash[String, Wmflib::Service] $services,
  Stdlib::Unixpath              $targets_path
) {
  $targets = $services.reduce([]) |$memo, $el| {
    $service_config = $el[1]
    if 'aliases' in $service_config {
      $service_name = $service_config['aliases'][0]
    } else {
      $service_name = $el[0]
    }
    $scheme = $service_config['encryption'] ? {
      true    => 'https',
      default => 'http',
    }

    $swagger_probes = $service_config['probes'].filter |$item| { $item['type'] == 'swagger' }
    # there should only be one swagger probe per service
    $probe_config = $swagger_probes[0]

    # leverage relabel_config to pass job params from target labels
    if $probe_config['params'] {
      $labels = prefix($probe_config['params'], '__param_')
    } else {
      $labels = {}
    }

    $memo + [{
      'targets' => [
        "${scheme}://${service_name}.svc.${::site}.wmnet:${service_config['port']}"
      ],
      'labels' => $labels
    }]
  }
  file { "${targets_path}/swagger_${title}.yaml":
    owner   => 'root',
    group   => 'root',
    mode    => '0444',
    content => to_yaml($targets),
  }
}