summaryrefslogtreecommitdiff
path: root/roles/monitoring/prometheus/exporter/node
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2021-05-31 22:41:50 +0200
committerChristian Pointner <equinox@spreadspace.org>2021-06-20 01:44:16 +0200
commit35fb88969a6cb85d8ba7541820acf3b0ff891055 (patch)
tree8e986321cf06886a8b3ebb4251c5b056ffa2d8b4 /roles/monitoring/prometheus/exporter/node
parentprometheus basic exporter base role (diff)
prometheus: initial node exporter role
Diffstat (limited to 'roles/monitoring/prometheus/exporter/node')
-rw-r--r--roles/monitoring/prometheus/exporter/node/defaults/main.yml5
-rw-r--r--roles/monitoring/prometheus/exporter/node/handlers/main.yml6
-rw-r--r--roles/monitoring/prometheus/exporter/node/tasks/main.yml36
-rw-r--r--roles/monitoring/prometheus/exporter/node/templates/service.j210
4 files changed, 54 insertions, 3 deletions
diff --git a/roles/monitoring/prometheus/exporter/node/defaults/main.yml b/roles/monitoring/prometheus/exporter/node/defaults/main.yml
new file mode 100644
index 00000000..5eff7844
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/node/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+prometheus_exporter_node_disable_collectors: []
+
+prometheus_exporter_node_extra_collectors:
+- ntp
diff --git a/roles/monitoring/prometheus/exporter/node/handlers/main.yml b/roles/monitoring/prometheus/exporter/node/handlers/main.yml
index 9c62baf6..3e1b2000 100644
--- a/roles/monitoring/prometheus/exporter/node/handlers/main.yml
+++ b/roles/monitoring/prometheus/exporter/node/handlers/main.yml
@@ -3,3 +3,9 @@
service:
name: prometheus-node-exporter
state: restarted
+
+- name: reload prometheus-exporter-exporter
+ service:
+ name: prometheus-exporter-exporter
+ ## TODO: implement reload once exporter_exporter supports this...
+ state: restarted
diff --git a/roles/monitoring/prometheus/exporter/node/tasks/main.yml b/roles/monitoring/prometheus/exporter/node/tasks/main.yml
index 0758eb3f..694dafb0 100644
--- a/roles/monitoring/prometheus/exporter/node/tasks/main.yml
+++ b/roles/monitoring/prometheus/exporter/node/tasks/main.yml
@@ -1,9 +1,39 @@
---
+- name: check if prometheus apt component of spreadspace repo is enabled
+ assert:
+ msg: "please enable the 'prometheus' component of spreadspace repo using 'spreadspace_apt_repo_components'"
+ that:
+ - spreadspace_apt_repo_components is defined
+ - "'prometheus' in spreadspace_apt_repo_components"
+
- name: install apt packages
apt:
name: prom-exporter-node
state: present
-## TODO:
-## - systemd service unit
-## - add snippet to exporter-exporter config-dir
+- name: create directory for textfile collector
+ file:
+ path: /var/lib/prometheus-node-exporter/textfile-collector
+ state: directory
+
+- name: generate systemd service unit
+ template:
+ src: service.j2
+ dest: /etc/systemd/system/prometheus-node-exporter.service
+ notify: restart prometheus-node-exporter
+
+- name: make sure prometheus-exporter-exporter is enabled and started
+ systemd:
+ name: prometheus-node-exporter.service
+ daemon_reload: yes
+ state: started
+ enabled: yes
+
+- name: register exporter
+ copy:
+ content: |
+ method: http
+ http:
+ port: 9100
+ dest: /etc/prometheus/exporter/enabled/node.yml
+ notify: reload prometheus-exporter-exporter
diff --git a/roles/monitoring/prometheus/exporter/node/templates/service.j2 b/roles/monitoring/prometheus/exporter/node/templates/service.j2
new file mode 100644
index 00000000..c3b46472
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/node/templates/service.j2
@@ -0,0 +1,10 @@
+[Unit]
+Description=Prometheus exporter
+
+[Service]
+Restart=always
+User=prometheus-exporter
+ExecStart=/usr/bin/prometheus-node-exporter --web.listen-address="127.0.0.1:9100" --web.disable-exporter-metrics --collector.textfile.directory="/var/lib/prometheus-node-exporter/textfile-collector" {% for collector in prometheus_exporter_node_disable_collectors %} --no-collector.{{ collector }}{% endfor %}{% for collector in prometheus_exporter_node_extra_collectors %} --collector.{{ collector }}{% endfor %}{{ '' }}
+
+[Install]
+WantedBy=multi-user.target