From 9ce66cb8a69a874d9219e4df48dfa28e92b587b0 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Thu, 18 Sep 2025 16:42:41 +0200 Subject: Allow configuring multiple targets for prometheus The default are localhost, but it can be overridden to allow scrapping localhost and or remote hosts (for both prometheus job and node exporter jobs) --- roles/prometheus/defaults/main.yml | 8 +++++++- roles/prometheus/meta/argument_specs.yml | 10 ++++++++++ roles/prometheus/tasks/main.yml | 2 +- roles/prometheus/templates/prometheus.yml.j2 | 5 +++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index aae8d210..52c8da02 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,6 +1,12 @@ --- -prometheus_host: "127.0.0.1" +prometheus_host: "localhost" prometheus_port: 9090 prometheus_retention: "15d" prometheus_scrape_interval: "15s" prometheus_node_exporter_port: 9100 + +prometheus_targets: + - "{{ prometheus_host }}:{{ prometheus_port }}" + +prometheus_node_exporter_targets: + - "{{ prometheus_host }}:{{ prometheus_node_exporter_port }}" diff --git a/roles/prometheus/meta/argument_specs.yml b/roles/prometheus/meta/argument_specs.yml index 4d4d65e6..6a6db4c4 100644 --- a/roles/prometheus/meta/argument_specs.yml +++ b/roles/prometheus/meta/argument_specs.yml @@ -24,3 +24,13 @@ argument_specs: description: "Port for node-exporter metrics endpoint" type: "int" default: 9100 + prometheus_targets: + description: "The list of prometheus targets to scrape" + type: "list" + elements: "str" + default: ["{{ prometheus_host }}:{{ prometheus_port }}"] + prometheus_node_exporter_targets: + description: "The list of node_exporter targets to scrape" + type: "list" + elements: "str" + default: ["{{ prometheus_host }}:{{ prometheus_node_exporter_port }}"] diff --git a/roles/prometheus/tasks/main.yml b/roles/prometheus/tasks/main.yml index e3029487..c4606ace 100644 --- a/roles/prometheus/tasks/main.yml +++ b/roles/prometheus/tasks/main.yml @@ -67,7 +67,7 @@ - name: "Start and enable prometheus services" become: true ansible.builtin.systemd_service: - name: "prometheus" + name: "{{ item }}" state: "started" enabled: true with_items: diff --git a/roles/prometheus/templates/prometheus.yml.j2 b/roles/prometheus/templates/prometheus.yml.j2 index e39a69c0..c43864ea 100644 --- a/roles/prometheus/templates/prometheus.yml.j2 +++ b/roles/prometheus/templates/prometheus.yml.j2 @@ -1,3 +1,4 @@ +--- global: scrape_interval: {{ prometheus_scrape_interval }} evaluation_interval: {{ prometheus_scrape_interval }} @@ -7,10 +8,10 @@ rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - - targets: ['localhost:{{ prometheus_port }}'] + - targets: {{ prometheus_targets | to_yaml }} - job_name: 'node' static_configs: - - targets: ['localhost:{{ prometheus_node_exporter_port }}'] + - targets: {{ prometheus_node_exporter_targets | to_yaml }} scrape_interval: {{ prometheus_scrape_interval }} metrics_path: /metrics -- cgit v1.2.3