src.nth.io/

summaryrefslogtreecommitdiff
path: root/prometheus
diff options
context:
space:
mode:
Diffstat (limited to 'prometheus')
-rw-r--r--prometheus/client/defaults/main.yaml6
-rw-r--r--prometheus/client/tasks/main.yaml29
-rw-r--r--prometheus/rpi-client/defaults/main.yaml9
-rw-r--r--prometheus/rpi-client/handlers/main.yaml5
-rw-r--r--prometheus/rpi-client/meta/main.yaml4
-rw-r--r--prometheus/rpi-client/tasks/main.yaml43
-rw-r--r--prometheus/server/defaults/main.yaml9
-rw-r--r--prometheus/server/handlers/main.yaml9
-rw-r--r--prometheus/server/tasks/main.yaml56
-rw-r--r--prometheus/server/templates/prometheus.yml.j242
10 files changed, 212 insertions, 0 deletions
diff --git a/prometheus/client/defaults/main.yaml b/prometheus/client/defaults/main.yaml
new file mode 100644
index 0000000..5cc3331
--- /dev/null
+++ b/prometheus/client/defaults/main.yaml
@@ -0,0 +1,6 @@
+---
+
+prometheus_client_apt_packages:
+ - "prometheus-node-exporter"
+ # - "prometheus-postgres-exporter"
+ # - "prometheus-nginx-exporter"
diff --git a/prometheus/client/tasks/main.yaml b/prometheus/client/tasks/main.yaml
new file mode 100644
index 0000000..707b06a
--- /dev/null
+++ b/prometheus/client/tasks/main.yaml
@@ -0,0 +1,29 @@
+---
+
+- name: install prometheus node exporter
+ become: yes
+ apt: name="prometheus-node-exporter"
+
+- name: ensure prometheus node exporter is started
+ become: yes
+ systemd: name="prometheus-node-exporter.service" enabled="yes" state="started"
+
+# # Nginx
+# - name: check if running nginx
+# stat: path="/etc/nginx/"
+# register: stat_nginx_conf
+
+# - name: install prometheus-nginx-exporter
+# become: yes
+# apt: name="prometheus-nginx-exporter"
+# when: stat_nginx_conf.stat.exists
+
+# # PostgreSQL
+# - name: check if running postgresql
+# stat: path="/etc/postgresql/"
+# register: stat_postgresql_conf
+
+# - name: install prometheus-postgresql-exporter
+# become: yes
+# apt: name="prometheus-postgres-exporter"
+# when: stat_postgresql_conf.stat.exists
diff --git a/prometheus/rpi-client/defaults/main.yaml b/prometheus/rpi-client/defaults/main.yaml
new file mode 100644
index 0000000..6ef5b84
--- /dev/null
+++ b/prometheus/rpi-client/defaults/main.yaml
@@ -0,0 +1,9 @@
+---
+
+prometheus_client_rpi_exporter_version: "0.6.0"
+prometheus_client_arch: "{{ansible_architecture}}"
+
+prometheus_client_rpi_src: "https://github.com/lukasmalkmus/rpi_exporter/releases/download/v{{prometheus_client_rpi_exporter_version}}/rpi_exporter-{{prometheus_client_rpi_exporter_version}}.linux-{{prometheus_client_arch}}.tar.gz"
+prometheus_client_rpi_dest: "rpi_exporter-{{prometheus_client_rpi_exporter_version}}.linux-{{prometheus_client_arch}}"
+
+prometheus_client_rpi_collect_gpu_temp: true
diff --git a/prometheus/rpi-client/handlers/main.yaml b/prometheus/rpi-client/handlers/main.yaml
new file mode 100644
index 0000000..7740ce7
--- /dev/null
+++ b/prometheus/rpi-client/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart rpi_exporter
+ systemd: name="rpi_exporter.service" state="restarted" daemon_reload="yes"
+ become: yes
diff --git a/prometheus/rpi-client/meta/main.yaml b/prometheus/rpi-client/meta/main.yaml
new file mode 100644
index 0000000..9da06c2
--- /dev/null
+++ b/prometheus/rpi-client/meta/main.yaml
@@ -0,0 +1,4 @@
+---
+
+dependencies:
+ - role: "prometheus/client"
diff --git a/prometheus/rpi-client/tasks/main.yaml b/prometheus/rpi-client/tasks/main.yaml
new file mode 100644
index 0000000..271e70c
--- /dev/null
+++ b/prometheus/rpi-client/tasks/main.yaml
@@ -0,0 +1,43 @@
+---
+
+- name: add prometheus user to video group for rpi GPU stats
+ become: yes
+ user: name="prometheus" groups="video" append="yes"
+
+- name: install prometheus rpi-exporter
+ unarchive:
+ src: "{{prometheus_client_rpi_src}}"
+ remote_src: yes
+ dest: "/tmp"
+ creates: "/tmp/{{prometheus_client_rpi_dest}}"
+ notify: restart rpi_exporter
+
+- name: disable GPU temp scraping
+ become: yes
+ lineinfile:
+ path: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter.service"
+ regexp: "^ExecStart=/usr/local/bin/rpi_exporter"
+ line: "ExecStart=/usr/local/bin/rpi_exporter --no-collector.gpu"
+ when: not prometheus_client_rpi_collect_gpu_temp
+ changed_when: false
+
+- name: install systemd service for rpi-exporter
+ become: yes
+ copy:
+ src: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter.service"
+ remote_src: yes
+ dest: "/lib/systemd/system/rpi_exporter.service"
+ notify: restart rpi_exporter
+
+- name: install rpi-exporter binary
+ become: yes
+ copy:
+ src: "/tmp/{{prometheus_client_rpi_dest}}/rpi_exporter"
+ remote_src: yes
+ dest: "/usr/local/bin/rpi_exporter"
+ mode: "0755"
+ notify: restart rpi_exporter
+
+- name: ensure systemd service is started
+ become: yes
+ systemd: name="rpi_exporter.service" enabled="yes" state="started"
diff --git a/prometheus/server/defaults/main.yaml b/prometheus/server/defaults/main.yaml
new file mode 100644
index 0000000..53b53c9
--- /dev/null
+++ b/prometheus/server/defaults/main.yaml
@@ -0,0 +1,9 @@
+---
+
+prometheus_server_conf: "prometheus.yml.j2"
+prometheus_server_apt_packages:
+ - "prometheus"
+ - "grafana"
+
+prometheus_server_grafana_plugins:
+ - "flant-statusmap-panel"
diff --git a/prometheus/server/handlers/main.yaml b/prometheus/server/handlers/main.yaml
new file mode 100644
index 0000000..248df86
--- /dev/null
+++ b/prometheus/server/handlers/main.yaml
@@ -0,0 +1,9 @@
+---
+
+- name: restart prometheus service
+ systemd: name="prometheus.service" state="restarted" daemon_reload="yes"
+ become: yes
+
+- name: restart grafana service
+ systemd: name="grafana-server.service" state="restarted" daemon_reload="yes"
+ become: yes
diff --git a/prometheus/server/tasks/main.yaml b/prometheus/server/tasks/main.yaml
new file mode 100644
index 0000000..10d67a5
--- /dev/null
+++ b/prometheus/server/tasks/main.yaml
@@ -0,0 +1,56 @@
+---
+
+- name: add grafana apt key
+ become: yes
+ apt_key: url="https://packages.grafana.com/gpg.key"
+
+- name: add grafana apt repo
+ become: yes
+ apt_repository: repo="deb https://packages.grafana.com/oss/deb stable main"
+
+- name: install prometheus and grafana
+ become: yes
+ apt: name="{{prometheus_server_apt_packages}}" state="latest"
+
+- name: configure prometheus
+ become: yes
+ template:
+ src: "{{prometheus_server_conf}}"
+ dest: "/etc/prometheus/prometheus.yml"
+ notify:
+ - restart prometheus service
+ - restart grafana service
+
+- name: ensure grafana is started
+ become: yes
+ systemd: name="grafana-server.service" enabled="yes" state="started"
+
+- name: install grafana prometheus data source
+ become: yes
+ grafana_datasource:
+ name: "Prometheus"
+ ds_type: "prometheus"
+ ds_url: "http://localhost:9090"
+ grafana_url: "http://localhost:3000"
+ is_default: yes
+ changed_when: false
+
+- name: install grafana plugins
+ become: yes
+ grafana_plugin: name="{{item}}"
+ loop: "{{prometheus_server_grafana_plugins}}"
+
+- name: copy dashboards to target
+ become: yes
+ copy:
+ src: "{{prometheus_server_grafana_dashboard_src}}/{{item}}"
+ dest: "/tmp/"
+ mode: "0640"
+ loop: "{{prometheus_server_grafana_dashboards}}"
+
+# - name: install grafana dashboards
+# become: yes
+# grafana_dashboard:
+# grafana_url: "http://localhost:3000"
+# path: "/tmp/{{item}}"
+# loop: "{{prometheus_server_grafana_dashboards}}"
diff --git a/prometheus/server/templates/prometheus.yml.j2 b/prometheus/server/templates/prometheus.yml.j2
new file mode 100644
index 0000000..cf88480
--- /dev/null
+++ b/prometheus/server/templates/prometheus.yml.j2
@@ -0,0 +1,42 @@
+global:
+ scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
+ evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
+ # 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'
+ # server stats
+ 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: rpi
+ # rpi_exporter
+ static_configs:
+ - targets:
+ - 'localhost:9243'