summaryrefslogtreecommitdiff
path: root/roles/monitoring/prometheus/exporter
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2021-06-03 15:14:23 +0200
committerChristian Pointner <equinox@spreadspace.org>2021-06-20 01:44:16 +0200
commitf0e65f6846bce9b30f8a97bfab68a06795b730ed (patch)
tree644ebe5cfd3532896b3642aee6a47192d0c083a6 /roles/monitoring/prometheus/exporter
parentprometheus: preliminary tls support for exporter connections (diff)
prometheus: add blackbox exporter
Diffstat (limited to 'roles/monitoring/prometheus/exporter')
-rw-r--r--roles/monitoring/prometheus/exporter/blackbox/defaults/main.yml22
-rw-r--r--roles/monitoring/prometheus/exporter/blackbox/handlers/main.yml16
-rw-r--r--roles/monitoring/prometheus/exporter/blackbox/tasks/main.yml39
-rw-r--r--roles/monitoring/prometheus/exporter/blackbox/templates/config.yml.j24
-rw-r--r--roles/monitoring/prometheus/exporter/blackbox/templates/service.j232
-rw-r--r--roles/monitoring/prometheus/exporter/node/templates/service.j22
6 files changed, 114 insertions, 1 deletions
diff --git a/roles/monitoring/prometheus/exporter/blackbox/defaults/main.yml b/roles/monitoring/prometheus/exporter/blackbox/defaults/main.yml
new file mode 100644
index 00000000..fcf66555
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/blackbox/defaults/main.yml
@@ -0,0 +1,22 @@
+---
+prometheus_exporter_blackbox_modules:
+ icmp:
+ prober: icmp
+ tcp_connect:
+ prober: tcp
+ tcp_tls:
+ prober: tcp
+ tcp:
+ tls: true
+ tls_config:
+ insecure_skip_verify: true
+ http_2xx:
+ prober: http
+ ssh_banner:
+ prober: tcp
+ tcp:
+ query_response:
+ - expect: "^SSH-2.0-"
+ - send: "SSH-2.0-blackbox-ssh-check"
+
+prometheus_exporter_blackbox_modules_extra: {}
diff --git a/roles/monitoring/prometheus/exporter/blackbox/handlers/main.yml b/roles/monitoring/prometheus/exporter/blackbox/handlers/main.yml
new file mode 100644
index 00000000..99a416e2
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/blackbox/handlers/main.yml
@@ -0,0 +1,16 @@
+---
+- name: restart prometheus-blackbox-exporter
+ service:
+ name: prometheus-blackbox-exporter
+ state: restarted
+
+- name: reload prometheus-blackbox-exporter
+ service:
+ name: prometheus-blackbox-exporter
+ state: reloaded
+
+- 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/blackbox/tasks/main.yml b/roles/monitoring/prometheus/exporter/blackbox/tasks/main.yml
new file mode 100644
index 00000000..3b8e997d
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/blackbox/tasks/main.yml
@@ -0,0 +1,39 @@
+---
+- name: install apt packages
+ apt:
+ name: prom-exporter-blackbox
+ state: present
+
+- name: create config directory
+ file:
+ path: /etc/prometheus/exporter/blackbox
+ state: directory
+
+- name: generate configuration
+ template:
+ src: config.yml.j2
+ dest: /etc/prometheus/exporter/blackbox/config.yml
+ notify: reload prometheus-blackbox-exporter
+
+- name: generate systemd service unit
+ template:
+ src: service.j2
+ dest: /etc/systemd/system/prometheus-blackbox-exporter.service
+ notify: restart prometheus-blackbox-exporter
+
+- name: make sure prometheus-exporter-exporter is enabled and started
+ systemd:
+ name: prometheus-blackbox-exporter.service
+ daemon_reload: yes
+ state: started
+ enabled: yes
+
+- name: register exporter
+ copy:
+ content: |
+ method: http
+ http:
+ port: 9115
+ path: '/probe'
+ dest: /etc/prometheus/exporter/enabled/blackbox.yml
+ notify: reload prometheus-exporter-exporter
diff --git a/roles/monitoring/prometheus/exporter/blackbox/templates/config.yml.j2 b/roles/monitoring/prometheus/exporter/blackbox/templates/config.yml.j2
new file mode 100644
index 00000000..01e3f7a0
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/blackbox/templates/config.yml.j2
@@ -0,0 +1,4 @@
+# {{ ansible_managed }}
+
+modules:
+ {{ prometheus_exporter_blackbox_modules | combine(prometheus_exporter_blackbox_modules_extra) | to_nice_yaml(indent=2) | indent(2)}}
diff --git a/roles/monitoring/prometheus/exporter/blackbox/templates/service.j2 b/roles/monitoring/prometheus/exporter/blackbox/templates/service.j2
new file mode 100644
index 00000000..c9c5712c
--- /dev/null
+++ b/roles/monitoring/prometheus/exporter/blackbox/templates/service.j2
@@ -0,0 +1,32 @@
+[Unit]
+Description=Prometheus blackbox exporter
+
+[Service]
+Restart=always
+User=prometheus-exporter
+ExecStart=/usr/bin/prometheus-blackbox-exporter --web.listen-address="127.0.0.1:9115" --config.file=/etc/prometheus/exporter/blackbox/config.yml
+ExecReload=/bin/kill -HUP $MAINPID
+
+# systemd hardening-options
+AmbientCapabilities=CAP_NET_RAW
+CapabilityBoundingSet=CAP_NET_RAW
+DeviceAllow=/dev/null rw
+DevicePolicy=strict
+LockPersonality=true
+MemoryDenyWriteExecute=true
+NoNewPrivileges=true
+PrivateDevices=true
+PrivateTmp=true
+PrivateUsers=true
+ProtectControlGroups=true
+ProtectHome=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectSystem=strict
+RemoveIPC=true
+RestrictNamespaces=true
+RestrictRealtime=true
+SystemCallArchitectures=native
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/monitoring/prometheus/exporter/node/templates/service.j2 b/roles/monitoring/prometheus/exporter/node/templates/service.j2
index 801850ed..7aa2834a 100644
--- a/roles/monitoring/prometheus/exporter/node/templates/service.j2
+++ b/roles/monitoring/prometheus/exporter/node/templates/service.j2
@@ -1,5 +1,5 @@
[Unit]
-Description=Prometheus exporter
+Description=Prometheus node exporter
[Service]
Restart=always