summaryrefslogtreecommitdiff
path: root/roles/monitoring/prometheus/server/templates/prometheus.yml.j2
blob: e9d83c1d682bbf3c96b9af0a9ccffc50b064087a (plain) (blame)
1
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
# {{ ansible_managed }}

global:
  scrape_interval:     15s
  evaluation_interval: 15s
{% if prometheus_server_external_labels is defined %}
  external_labels:
{%   for name, value in prometheus_server_external_labels.items() %}
    {{ name }}: {{ value }}
{%   endfor %}
{% endif %}

rule_files:
  - /etc/prometheus/rules/*.yml
{% for subdir in (prometheus_server_jobs | select('match', '.*/.*') | map('dirname') | unique) %}
  - /etc/prometheus/rules/{{ subdir }}/*.yml
{% endfor %}
{% if prometheus_server_alertmanager is defined %}

alerting:
  alertmanagers:
  - static_configs:
    - targets: ['{{ prometheus_server_alertmanager.url }}']
{%   if 'path_prefix' in prometheus_server_alertmanager %}
    path_prefix: '{{ prometheus_server_alertmanager.path_prefix }}'
{%   endif %}
{%   if 'basic_auth' in prometheus_server_alertmanager %}
    basic_auth:
      username: '{{ prometheus_server_alertmanager.basic_auth.username }}'
      password_file: '/etc/prometheus/prometheus-alertmanager.password'
{%   endif %}
{% endif %}

scrape_configs:
  - job_name: 'prometheus'
{% if prometheus_server_web_route_prefix is defined or prometheus_server_web_external_url is defined %}
    metrics_path: '{{ (prometheus_server_web_route_prefix | default(prometheus_server_web_external_url | default('') | urlsplit('path')), 'metrics') | path_join }}'
{% endif %}
{% if prometheus_server_selfscraping_auth is defined %}
    basic_auth:
      username: '{{ prometheus_server_selfscraping_auth.username }}'
      password_file: '/etc/prometheus/prometheus-selfscraping.password'
{% endif %}
    static_configs:
    - targets: ['localhost:9090']
      labels:
        instance: '{{ inventory_hostname }}'
{% if prometheus_server_alertmanager is defined %}

  - job_name: 'alertmanager'
{%   if 'path_prefix' in prometheus_server_alertmanager %}
    metrics_path: '{{ (prometheus_server_alertmanager.path_prefix, 'metrics') | path_join }}'
{%   endif %}
{%   if 'basic_auth' in prometheus_server_alertmanager %}
    basic_auth:
      username: '{{ prometheus_server_alertmanager.basic_auth.username }}'
      password_file: '/etc/prometheus/prometheus-alertmanager.password'
{%   endif %}
    static_configs:
    - targets: ['{{ prometheus_server_alertmanager.url }}']
{% endif %}
{% for job in (prometheus_server_jobs) %}

{%   include lookup('first_found', {'paths': ['templates/jobs'], 'files': [job + '.j2', 'generic.j2']}) | relpath(template_fullpath | dirname) %}{{ '' }}
{% endfor %}
{% if prometheus_server_jobs_extra is defined %}

  {{ prometheus_server_jobs_extra | indent(2) }}
{% endif %}
{% for source, config in (prometheus_server_federation | default({})).items() %}

  ## federation: {{ source }}
{%   for job in config.jobs %}

  - job_name: 'federate/{{ source }}/{{ job }}'
    scrape_interval: 15s
    scrape_timeout: 15s
    scheme: {{ config.scheme | default('https') }}
    metrics_path: {{ config.path_prefix | default('') }}/federate
{%   if 'basic_auth' in config %}
    basic_auth:
      username: '{{ config.basic_auth.username }}'
      password_file: '/etc/prometheus/prometheus-federation-{{ source }}.password'
{%   endif %}
    honor_labels: true
    metric_relabel_configs:
    - source_labels: [id]
      regex: '^static-agent$'
      action: drop
    params:
      match[]:
      - '{job="{{ job }}"}'
    static_configs:
    - targets: ['{{ config.url }}']
{%   endfor %}
{% endfor %}