From bd13643e30d4e9d172b5c8ac47f36d200d598986 Mon Sep 17 00:00:00 2001 From: Sven Ketelsen Date: Fri, 5 Nov 2021 15:59:22 +0100 Subject: [PATCH] feat: prometheus now uses stage_server_infos (auto discover task) --- info.yml | 10 +- roles/prometheus/tasks/main.yml | 71 -------------- .../config/prometheus/prometheus.yml.j2 | 92 ++++++++++++------- 3 files changed, 67 insertions(+), 106 deletions(-) diff --git a/info.yml b/info.yml index aa0307d..20bb814 100644 --- a/info.yml +++ b/info.yml @@ -12,6 +12,10 @@ - ansible_version.major >= 2 - ansible_version.minor >= 10 msg: "The ansible version has to be at least ({{ ansible_version.full }})" + - name: "Import autodiscover pre-tasks" + include_tasks: tasks/autodiscover_pre_tasks.yml + tags: + - always - name: "Variable " debug: @@ -24,4 +28,8 @@ - name: "Printing ip addresses for {{ inventory_hostname }}" debug: msg: "{{ stage_server_ip }} / {{ stage_private_server_ip }}" - delegate_to: 127.0.0.1 \ No newline at end of file + delegate_to: 127.0.0.1 + - name: "Printing stage_server_infos" + debug: + msg: "{{ stage_server_infos }}" + delegate_to: 127.0.0.1 diff --git a/roles/prometheus/tasks/main.yml b/roles/prometheus/tasks/main.yml index 8f525a2..9761231 100644 --- a/roles/prometheus/tasks/main.yml +++ b/roles/prometheus/tasks/main.yml @@ -59,77 +59,6 @@ tags: - update_config -- name: "Reading current server groups from hetzner" - include_role: - name: hcloud - tasks_from: _read_server_names - with_items: [ - { - name: "all", - label_selector: "stage={{ stage }}", - }, - { - name: "awx", - label_selector: "stage={{ stage }},service=awx", - }, - { - name: "connect", - label_selector: "stage={{ stage }},service=connect", - }, - { - name: "elastic", - label_selector: "stage={{ stage }},service=elastic", - }, - { - name: "harbor", - label_selector: "stage={{ stage }},service=harbor", - }, - { - name: "iam", - label_selector: "stage={{ stage }},service=iam", - }, - { - name: "keycloak", - label_selector: "stage={{ stage }},service=keycloak", - }, - { - name: "kibana", - label_selector: "stage={{ stage }},service=kibana", - }, - { - name: "logstash", - label_selector: "stage={{ stage }},service=logstash", - }, - { - name: "maria", - label_selector: "stage={{ stage }},service=maria", - }, - { - name: "mail", - label_selector: "stage={{ stage }},service=mail", - }, - { - name: "postfix", - label_selector: "stage={{ stage }},service=postfix", - }, - { - name: "postgres", - label_selector: "stage={{ stage }},service=postgres", - }, - { - name: "webdav", - label_selector: "stage={{ stage }},service=webdav", - }, - { - name: "gitea", - label_selector: "stage={{ stage }},service=gitea", - } - ] - loop_control: - loop_var: current_server_group - tags: - - update_config - - name: "Deploy service templates for {{ inventory_hostname }}" include_role: name: _deploy diff --git a/templates/prometheus/config/prometheus/prometheus.yml.j2 b/templates/prometheus/config/prometheus/prometheus.yml.j2 index 69e1c68..0da48b7 100644 --- a/templates/prometheus/config/prometheus/prometheus.yml.j2 +++ b/templates/prometheus/config/prometheus/prometheus.yml.j2 @@ -49,13 +49,13 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_all | default([]) %} +{% for server_info in stage_server_infos | default([]) %} {% if - (hostvars[host].traefik_enabled is defined - and hostvars[host].traefik_enabled) - or (hostvars[host].traefik_enabled is not defined) + (hostvars[server_info.name].traefik_enabled is defined + and hostvars[server_info.name].traefik_enabled) + or (hostvars[server_info.name].traefik_enabled is not defined) %} - '{{ host }}.{{ domain }}:{{ admin_port_service }}', + '{{ server_info.name }}.{{ domain }}:{{ admin_port_service }}', {% endif %} {% endfor %} ] @@ -77,8 +77,10 @@ scrape_configs: static_configs: # Scrape metrics from the Harbor exporter component - targets: [ -{% for host in server_group_names_harbor | default([]) %} - '{{ host }}.{{ domain }}:{{ monitor_port_harbor }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'harbor' %} + '{{ server_info.name }}.{{ domain }}:{{ monitor_port_harbor }}', +{% endif %} {% endfor %} ] labels: @@ -99,8 +101,10 @@ scrape_configs: comp: ['core'] static_configs: - targets: [ -{% for host in server_group_names_harbor | default([]) %} - '{{ host }}.{{ domain }}:{{ monitor_port_harbor }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'harbor' %} + '{{ server_info.name }}.{{ domain }}:{{ monitor_port_harbor }}', +{% endif %} {% endfor %} ] labels: @@ -121,8 +125,10 @@ scrape_configs: comp: ['registry'] static_configs: - targets: [ -{% for host in server_group_names_harbor | default([]) %} - '{{ host }}.{{ domain }}:{{ monitor_port_harbor }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'harbor' %} + '{{ server_info.name }}.{{ domain }}:{{ monitor_port_harbor }}', +{% endif %} {% endfor %} ] labels: @@ -145,8 +151,10 @@ scrape_configs: password: {{ awx_admin_password }} static_configs: - targets: [ -{% for host in server_group_names_awx | default([]) %} - '{{ host }}.{{ domain }}:{{ monitor_port_awx }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'awx' %} + '{{ server_info.name }}.{{ domain }}:{{ monitor_port_awx }}', +{% endif %} {% endfor %} ] labels: @@ -166,8 +174,10 @@ scrape_configs: metrics_path: '/management/prometheus' static_configs: - targets: [ -{% for host in server_group_names_connect | default([]) %} - '{{ host }}-connect.{{ domain }}:{{ admin_port_service }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'connect' %} + '{{ server_info.name }}-connect.{{ domain }}:{{ admin_port_service }}', +{% endif %} {% endfor %} ] labels: @@ -185,8 +195,10 @@ scrape_configs: metrics_path: '/management/prometheus' static_configs: - targets: [ -{% for host in server_group_names_iam | default([]) %} - '{{ host }}.{{ domain }}:{{ admin_port_service }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'iam' %} + '{{ server_info.name }}.{{ domain }}:{{ admin_port_service }}', +{% endif %} {% endfor %} ] labels: @@ -204,8 +216,10 @@ scrape_configs: metrics_path: '/management/prometheus' static_configs: - targets: [ -{% for host in server_group_names_webdav | default([]) %} - '{{ host }}.{{ domain }}:{{ admin_port_service }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'webdav' %} + '{{ server_info.name }}.{{ domain }}:{{ admin_port_service }}', +{% endif %} {% endfor %} ] labels: @@ -225,8 +239,10 @@ scrape_configs: metrics_path: '/auth/realms/master/metrics' static_configs: - targets: [ -{% for host in server_group_names_keycloak| default([]) %} - '{{ host }}.{{ domain }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'keycloak' %} + '{{ server_info.name }}.{{ domain }}', +{% endif %} {% endfor %} ] labels: @@ -246,8 +262,10 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_gitea| default([]) %} - '{{ host }}.{{ domain }}:{{ admin_port_service }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'gitea' %} + '{{ server_info.name }}.{{ domain }}:{{ admin_port_service }}', +{% endif %} {% endfor %} ] labels: @@ -269,13 +287,13 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_all | default([]) %} +{% for server_info in stage_server_infos | default([]) %} {% if - (hostvars[host].node_exporter_enabled is defined - and hostvars[host].node_exporter_enabled) - or (hostvars[host].node_exporter_enabled is not defined) + (hostvars[server_info.name].node_exporter_enabled is defined + and hostvars[server_info.name].node_exporter_enabled) + or (hostvars[server_info.name].node_exporter_enabled is not defined) %} - '{{ (stage_server_infos | selectattr("name", "equalto", host) | first).private_ip }}:{{ monitor_port_system }}!{{ host }}.{{ domain }}', + '{{ server_info.private_ip }}:{{ monitor_port_system }}!{{ server_info.name }}.{{ domain }}', {% endif %} {% endfor %} ] @@ -304,8 +322,10 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_elastic | default([]) %} - '{{ host }}.{{ domain }}:{{ monitor_port_elastic }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'elastic' %} + '{{ server_info.name }}.{{ domain }}:{{ monitor_port_elastic }}', +{% endif %} {% endfor %} ] labels: @@ -325,8 +345,10 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_postgres | default([]) %} - '{{ (stage_server_infos | selectattr("name", "equalto", host) | first).private_ip }}:{{ monitor_port_postgres }}!{{ host }}.{{ domain }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'postgres' %} + '{{ server_info.private_ip }}:{{ monitor_port_system }}!{{ server_info.name }}.{{ domain }}', +{% endif %} {% endfor %} ] labels: @@ -350,8 +372,10 @@ scrape_configs: metrics_path: '/metrics' static_configs: - targets: [ -{% for host in server_group_names_maria | default([]) %} - '{{ (stage_server_infos | selectattr("name", "equalto", host) | first).private_ip }}:{{ monitor_port_maria }}!{{ host }}.{{ domain }}', +{% for server_info in stage_server_infos | default([]) %} +{% if server_info.service == 'maria' %} + '{{ server_info.private_ip }}:{{ monitor_port_system }}!{{ server_info.name }}.{{ domain }}', +{% endif %} {% endfor %} ] labels: