summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed AbdelHalim <[email protected]>2025-09-18 16:42:41 +0200
committerAhmed AbdelHalim <[email protected]>2025-09-18 16:42:41 +0200
commit8777a0c2ac0a48fa9715628ae4f61025881332f8 (patch)
tree5def586496570d33a45c1491ec26f13fc812ed41
parentca6dbd3a05553e20145e2fd667d328e948b02b2a (diff)
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)
-rw-r--r--roles/prometheus/defaults/main.yml8
-rw-r--r--roles/prometheus/meta/argument_specs.yml10
-rw-r--r--roles/prometheus/tasks/main.yml2
-rw-r--r--roles/prometheus/templates/prometheus.yml.j25
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