summaryrefslogtreecommitdiffstats
path: root/roles/prometheus
diff options
context:
space:
mode:
Diffstat (limited to 'roles/prometheus')
-rw-r--r--roles/prometheus/defaults/main.yml5
-rw-r--r--roles/prometheus/handlers/main.yml6
-rw-r--r--roles/prometheus/meta/argument_specs.yml26
-rw-r--r--roles/prometheus/meta/main.yml18
-rw-r--r--roles/prometheus/tasks/main.yml55
-rw-r--r--roles/prometheus/templates/prometheus.yml.j216
6 files changed, 126 insertions, 0 deletions
diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml
new file mode 100644
index 00000000..a9f9213c
--- /dev/null
+++ b/roles/prometheus/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+prometheus_port: 9090
+prometheus_retention: "15d"
+prometheus_scrape_interval: "30s"
+prometheus_node_exporter_port: 9100
diff --git a/roles/prometheus/handlers/main.yml b/roles/prometheus/handlers/main.yml
new file mode 100644
index 00000000..d35a8531
--- /dev/null
+++ b/roles/prometheus/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+- name: "Restart prometheus"
+ become: true
+ ansible.builtin.systemd_service:
+ name: "prometheus"
+ state: "restarted"
diff --git a/roles/prometheus/meta/argument_specs.yml b/roles/prometheus/meta/argument_specs.yml
new file mode 100644
index 00000000..72ec6819
--- /dev/null
+++ b/roles/prometheus/meta/argument_specs.yml
@@ -0,0 +1,26 @@
+---
+argument_specs:
+ main:
+ short_description: "Install and configure Prometheus monitoring system"
+ description: "Install and configure Prometheus monitoring system"
+ options:
+ prometheus_port:
+ description: "Port for Prometheus web interface"
+ type: "int"
+ default: 9090
+ prometheus_retention:
+ description: "Data retention period for Prometheus"
+ type: "str"
+ default: "15d"
+ prometheus_scrape_interval:
+ description: "Global scrape interval for metrics collection"
+ type: "str"
+ default: "15s"
+ prometheus_evaluation_interval:
+ description: "Interval for evaluating rules"
+ type: "str"
+ default: "15s"
+ node_exporter_port:
+ description: "Port for node-exporter metrics endpoint"
+ type: "int"
+ default: 9100
diff --git a/roles/prometheus/meta/main.yml b/roles/prometheus/meta/main.yml
new file mode 100644
index 00000000..9ac4e138
--- /dev/null
+++ b/roles/prometheus/meta/main.yml
@@ -0,0 +1,18 @@
+---
+dependencies: []
+galaxy_info:
+ author: "a14m"
+ description: "Install lightweight Prometheus and Node Exporter for monitoring"
+ company: "kartoffeln.work GmbH."
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/prometheus/tasks/main.yml b/roles/prometheus/tasks/main.yml
new file mode 100644
index 00000000..9feeacaf
--- /dev/null
+++ b/roles/prometheus/tasks/main.yml
@@ -0,0 +1,55 @@
+---
+- name: "Create prometheus group"
+ become: true
+ ansible.builtin.group:
+ name: "prometheus"
+ system: true
+
+- name: "Create prometheus user"
+ become: true
+ ansible.builtin.user:
+ name: "prometheus"
+ group: "prometheus"
+ system: true
+ shell: "/usr/sbin/nologin"
+ create_home: false
+
+- name: "Create prometheus directories"
+ become: true
+ ansible.builtin.file:
+ path: "{{ item }}"
+ state: "directory"
+ owner: "prometheus"
+ group: "prometheus"
+ mode: "0755"
+ with_items:
+ - "/etc/prometheus"
+ - "/var/lib/prometheus"
+
+- name: "Install prometheus packages"
+ become: true
+ ansible.builtin.package:
+ name:
+ - "prometheus"
+ - "prometheus-node-exporter"
+ state: "present"
+
+- name: "Create prometheus configuration"
+ become: true
+ ansible.builtin.template:
+ src: "prometheus.yml.j2"
+ dest: "/etc/prometheus/prometheus.yml"
+ owner: "prometheus"
+ group: "prometheus"
+ mode: "0644"
+ notify: "Restart prometheus"
+
+- name: "Start and enable prometheus services"
+ become: true
+ ansible.builtin.systemd_service:
+ name: "prometheus"
+ state: "started"
+ enabled: true
+ with_items:
+ - "prometheus"
+ - "prometheus-node-exporter"
diff --git a/roles/prometheus/templates/prometheus.yml.j2 b/roles/prometheus/templates/prometheus.yml.j2
new file mode 100644
index 00000000..e39a69c0
--- /dev/null
+++ b/roles/prometheus/templates/prometheus.yml.j2
@@ -0,0 +1,16 @@
+global:
+ scrape_interval: {{ prometheus_scrape_interval }}
+ evaluation_interval: {{ prometheus_scrape_interval }}
+
+rule_files:
+
+scrape_configs:
+ - job_name: 'prometheus'
+ static_configs:
+ - targets: ['localhost:{{ prometheus_port }}']
+
+ - job_name: 'node'
+ static_configs:
+ - targets: ['localhost:{{ prometheus_node_exporter_port }}']
+ scrape_interval: {{ prometheus_scrape_interval }}
+ metrics_path: /metrics