summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-12-08 23:09:03 +0100
committerChristian Pointner <equinox@spreadspace.org>2020-12-08 23:09:03 +0100
commit3cb0ab71de09c1836d1b72840998cea2a140d141 (patch)
tree431e47805a5c9472511949669f8cf4c97c0339bb /roles
parentcollectd: add sensors role (diff)
add basic prometheus exporter roles
Diffstat (limited to 'roles')
-rw-r--r--roles/monitoring/prometheus/exporter/base/defaults/main.yml2
-rw-r--r--roles/monitoring/prometheus/exporter/base/tasks/main.yml16
-rw-r--r--roles/monitoring/prometheus/exporter/base/templates/nginx-vhost.conf.j215
-rw-r--r--roles/monitoring/prometheus/exporter/node/handlers/main.yml5
-rw-r--r--roles/monitoring/prometheus/exporter/node/tasks/main.yml29
5 files changed, 67 insertions, 0 deletions
diff --git a/roles/monitoring/prometheus/exporter/base/defaults/main.yml b/roles/monitoring/prometheus/exporter/base/defaults/main.yml
new file mode 100644
index 00000000..5f8ce103
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/base/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+prometheus_exporter_port: 9000
diff --git a/roles/monitoring/prometheus/exporter/base/tasks/main.yml b/roles/monitoring/prometheus/exporter/base/tasks/main.yml
new file mode 100644
index 00000000..c3a04bd9
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/base/tasks/main.yml
@@ -0,0 +1,16 @@
+---
+- name: create main configuration directories
+ loop:
+ - exporters-available
+ - exporters-enabled
+ file:
+ path: "/etc/prometheus-exporter/{{ item }}"
+ state: directory
+
+- name: install nginx vhost
+ vars:
+ nginx_vhost:
+ name: prometheus-exporter
+ content: "{{ lookup('template', 'nginx-vhost.conf.j2') }}"
+ include_role:
+ name: nginx/vhost
diff --git a/roles/monitoring/prometheus/exporter/base/templates/nginx-vhost.conf.j2 b/roles/monitoring/prometheus/exporter/base/templates/nginx-vhost.conf.j2
new file mode 100644
index 00000000..e032ca3d
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/base/templates/nginx-vhost.conf.j2
@@ -0,0 +1,15 @@
+server {
+ listen {{ prometheus_exporter_port }};
+ listen [::]:{{ prometheus_exporter_port }};
+ server_name _;
+
+ ## TODO: configure ssl
+
+ location / {
+ return 404 "unknown exporter: $uri\n";
+ }
+ include /etc/prometheus-exporter/exporters-enabled/*;
+
+ access_log /var/log/nginx/access-prometheus-exporter.log;
+ error_log /var/log/nginx/error-prometheus-exporter.log;
+}
diff --git a/roles/monitoring/prometheus/exporter/node/handlers/main.yml b/roles/monitoring/prometheus/exporter/node/handlers/main.yml
new file mode 100644
index 00000000..9c62baf6
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/node/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart prometheus-node-exporter
+ service:
+ name: prometheus-node-exporter
+ state: restarted
diff --git a/roles/monitoring/prometheus/exporter/node/tasks/main.yml b/roles/monitoring/prometheus/exporter/node/tasks/main.yml
new file mode 100644
index 00000000..286b6d75
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/node/tasks/main.yml
@@ -0,0 +1,29 @@
+---
+- name: install apt packages
+ apt:
+ name: prometheus-node-exporter
+ state: present
+
+ ## TODO: add other configs
+- name: listen on localhost only
+ lineinfile:
+ path: /etc/default/prometheus-node-exporter
+ regexp: '^ARGS='
+ line: 'ARGS="--web.listen-address=127.0.0.1:9100"'
+ notify: restart prometheus-node-exporter
+
+- name: create nginx snippet
+ copy:
+ content: |
+ location = /node {
+ proxy_pass http://127.0.0.1:9100/metrics;
+ }
+ dest: /etc/prometheus-exporter/exporters-available/node
+ # notify: reload nginx
+
+- name: enable nginx snippet
+ file:
+ src: /etc/prometheus-exporter/exporters-available/node
+ dest: /etc/prometheus-exporter/exporters-enabled/node
+ state: link
+ # notify: reload nginx