From 3cb0ab71de09c1836d1b72840998cea2a140d141 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 8 Dec 2020 23:09:03 +0100 Subject: add basic prometheus exporter roles --- .../prometheus/exporter/base/defaults/main.yml | 2 ++ .../prometheus/exporter/base/tasks/main.yml | 16 ++++++++++++ .../exporter/base/templates/nginx-vhost.conf.j2 | 15 +++++++++++ .../prometheus/exporter/node/handlers/main.yml | 5 ++++ .../prometheus/exporter/node/tasks/main.yml | 29 ++++++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 roles/monitoring/prometheus/exporter/base/defaults/main.yml create mode 100644 roles/monitoring/prometheus/exporter/base/tasks/main.yml create mode 100644 roles/monitoring/prometheus/exporter/base/templates/nginx-vhost.conf.j2 create mode 100644 roles/monitoring/prometheus/exporter/node/handlers/main.yml create mode 100644 roles/monitoring/prometheus/exporter/node/tasks/main.yml (limited to 'roles') 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 -- cgit v1.2.3