diff options
| author | Ahmed Abdelhalim <[email protected]> | 2025-09-15 22:17:49 +0200 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2025-09-15 22:26:15 +0200 |
| commit | d7c3044edf15ca2ee8a8bcc2fcdce8e26e4133d9 (patch) | |
| tree | 111df0a6afbf307b6ed9e7a112d02dffa506e892 /roles/prometheus | |
| parent | 42899d44598c9cd848af1c86427f0b4c03f54493 (diff) | |
Add prometheus role (with node exporter)
Diffstat (limited to 'roles/prometheus')
| -rw-r--r-- | roles/prometheus/defaults/main.yml | 5 | ||||
| -rw-r--r-- | roles/prometheus/handlers/main.yml | 6 | ||||
| -rw-r--r-- | roles/prometheus/meta/argument_specs.yml | 26 | ||||
| -rw-r--r-- | roles/prometheus/meta/main.yml | 18 | ||||
| -rw-r--r-- | roles/prometheus/tasks/main.yml | 55 | ||||
| -rw-r--r-- | roles/prometheus/templates/prometheus.yml.j2 | 16 |
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 |
