summaryrefslogtreecommitdiffstats
path: root/roles/prometheus
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
commit9ce66cb8a69a874d9219e4df48dfa28e92b587b0 (patch)
tree5def586496570d33a45c1491ec26f13fc812ed41 /roles/prometheus
parent7e51b1642f6c848e7fc50dab609bf28c03e54e04 (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)
Diffstat (limited to 'roles/prometheus')
-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