Defined Type: prometheus::swagger::service_catalog
- Defined in:
- modules/prometheus/manifests/swagger/service_catalog.pp
Overview
Generate targets for swagger_exporter checks.
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),
}
}
|