aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/monitoring
diff options
context:
space:
mode:
authorKumar Damani <me@kumardamani.net>2023-08-11 16:28:54 +0000
committerKumar Damani <me@kumardamani.net>2023-08-11 16:28:54 +0000
commit1f321db8949b3aeb80afdd7a94e92b7743c3e275 (patch)
treef48b7040615af1bda263faa4d2657636c77ba2a4 /ansible/roles/monitoring
parent9bae899e227e4899a5ee629bf305a00a39044bc2 (diff)
Work
Diffstat (limited to 'ansible/roles/monitoring')
-rw-r--r--ansible/roles/monitoring/tasks/main.yaml5
-rw-r--r--ansible/roles/monitoring/tasks/setup.yaml20
-rw-r--r--ansible/roles/monitoring/templates/prometheus.yml.j247
3 files changed, 72 insertions, 0 deletions
diff --git a/ansible/roles/monitoring/tasks/main.yaml b/ansible/roles/monitoring/tasks/main.yaml
new file mode 100644
index 0000000..256a09f
--- /dev/null
+++ b/ansible/roles/monitoring/tasks/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: 'Run the setup tasks'
+ ansible.builtin.import_tasks: 'setup.yaml'
+ tags: 'monitoring'
diff --git a/ansible/roles/monitoring/tasks/setup.yaml b/ansible/roles/monitoring/tasks/setup.yaml
new file mode 100644
index 0000000..824d2db
--- /dev/null
+++ b/ansible/roles/monitoring/tasks/setup.yaml
@@ -0,0 +1,20 @@
+---
+
+- name: 'setup | Install required pkgs'
+ ansible.builtin.package:
+ name:
+ - 'prometheus'
+ - 'prometheus-node-exporter'
+ - 'prometheus-blackbox-exporter'
+
+- name: 'setup | Set the Prom config'
+ ansible.builtin.template:
+ src: 'prometheus.yml.j2'
+ dest: '/etc/prometheus/prometheus.yml'
+ mode: '644'
+
+- name: 'setup | Start the service'
+ ansible.builtin.service:
+ name: 'prometheus'
+ state: 'restarted'
+ enabled: true
diff --git a/ansible/roles/monitoring/templates/prometheus.yml.j2 b/ansible/roles/monitoring/templates/prometheus.yml.j2
new file mode 100644
index 0000000..a5f3b46
--- /dev/null
+++ b/ansible/roles/monitoring/templates/prometheus.yml.j2
@@ -0,0 +1,47 @@
+{{ ansible_managed | comment }}
+global:
+ scrape_interval: 1m
+ evaluation_interval: 1m
+ # scrape_timeout is set to the global default (10s).
+
+ # Attach these labels to any time series or alerts when communicating with
+ # external systems (federation, remote storage, Alertmanager).
+ external_labels:
+ monitor: 'example'
+
+# Alertmanager configuration
+alerting:
+ alertmanagers:
+ - static_configs:
+ - targets: ['localhost:9093']
+
+# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
+rule_files:
+ # - "first_rules.yml"
+ # - "second_rules.yml"
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+ # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
+ - job_name: 'prometheus'
+
+ # Override the global default and scrape targets from this job every 5 seconds.
+ # scrape_interval: 30s
+ # scrape_timeout: 30s
+
+ # metrics_path defaults to '/metrics'
+ # scheme defaults to 'http'.
+
+ static_configs:
+ - targets: ['localhost:9090']
+
+ - job_name: node
+ # If prometheus-node-exporter is installed, grab stats about the local
+ # machine by default.
+ static_configs:
+ - targets: ['localhost:9100']
+
+ - job_name: caddy
+ static_configs:
+ - targets: ['rproxy:2019', 'sites:2019']