From 8777a0c2ac0a48fa9715628ae4f61025881332f8 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