From 3ef83057161e6d973f79805340d4c3d210425465 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 30 May 2021 16:08:03 +0200 Subject: cleanup: old preliminary tasks --- .../prometheus/exporter/node/tasks/main.yml | 28 ++++------------------ 1 file changed, 4 insertions(+), 24 deletions(-) (limited to 'roles/monitoring/prometheus/exporter/node/tasks') diff --git a/roles/monitoring/prometheus/exporter/node/tasks/main.yml b/roles/monitoring/prometheus/exporter/node/tasks/main.yml index 286b6d75..0758eb3f 100644 --- a/roles/monitoring/prometheus/exporter/node/tasks/main.yml +++ b/roles/monitoring/prometheus/exporter/node/tasks/main.yml @@ -1,29 +1,9 @@ --- - name: install apt packages apt: - name: prometheus-node-exporter + name: prom-exporter-node 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 +## TODO: +## - systemd service unit +## - add snippet to exporter-exporter config-dir -- cgit v1.2.3 From 35fb88969a6cb85d8ba7541820acf3b0ff891055 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 31 May 2021 22:41:50 +0200 Subject: prometheus: initial node exporter role --- chaos-at-home/ch-mon.yml | 1 + .../prometheus/exporter/base/templates/service.j2 | 1 + .../prometheus/exporter/node/defaults/main.yml | 5 +++ .../prometheus/exporter/node/handlers/main.yml | 6 ++++ .../prometheus/exporter/node/tasks/main.yml | 36 ++++++++++++++++++++-- .../prometheus/exporter/node/templates/service.j2 | 10 ++++++ 6 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 roles/monitoring/prometheus/exporter/node/defaults/main.yml create mode 100644 roles/monitoring/prometheus/exporter/node/templates/service.j2 (limited to 'roles/monitoring/prometheus/exporter/node/tasks') diff --git a/chaos-at-home/ch-mon.yml b/chaos-at-home/ch-mon.yml index b069bbf8..2cb69484 100644 --- a/chaos-at-home/ch-mon.yml +++ b/chaos-at-home/ch-mon.yml @@ -11,3 +11,4 @@ - role: apt-repo/spreadspace - role: monitoring/prometheus/server - role: monitoring/prometheus/exporter/base + - role: monitoring/prometheus/exporter/node diff --git a/roles/monitoring/prometheus/exporter/base/templates/service.j2 b/roles/monitoring/prometheus/exporter/base/templates/service.j2 index 6069fc79..e2c54d6c 100644 --- a/roles/monitoring/prometheus/exporter/base/templates/service.j2 +++ b/roles/monitoring/prometheus/exporter/base/templates/service.j2 @@ -5,6 +5,7 @@ Description=Prometheus exporter proxy Restart=always User=prometheus-exporter ExecStart=/usr/bin/prometheus-exporter-exporter --config.dirs=/etc/prometheus/exporter/enabled --config.file="" --web.listen-address="{{ prometheus_exporter_listen }}" +{# TODO: implement reloading once the exporter_exporter supports this #} # systemd hardening-options AmbientCapabilities= 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 -- cgit v1.2.3 From 94f56133bb0035fe85ee9e58d573eb4485e9fa42 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 2 Jun 2021 00:46:12 +0200 Subject: prometheus: initial serverside config --- roles/monitoring/prometheus/exporter/node/tasks/main.yml | 7 ------- roles/monitoring/prometheus/server/defaults/main.yml | 3 +++ roles/monitoring/prometheus/server/tasks/main.yml | 16 ++++++++++++---- .../prometheus/server/templates/prometheus.yml.j2 | 13 ++++++++++++- 4 files changed, 27 insertions(+), 12 deletions(-) (limited to 'roles/monitoring/prometheus/exporter/node/tasks') diff --git a/roles/monitoring/prometheus/exporter/node/tasks/main.yml b/roles/monitoring/prometheus/exporter/node/tasks/main.yml index 694dafb0..c8756acf 100644 --- a/roles/monitoring/prometheus/exporter/node/tasks/main.yml +++ b/roles/monitoring/prometheus/exporter/node/tasks/main.yml @@ -1,11 +1,4 @@ --- -- 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 diff --git a/roles/monitoring/prometheus/server/defaults/main.yml b/roles/monitoring/prometheus/server/defaults/main.yml index b5d13b5d..ab08a2ff 100644 --- a/roles/monitoring/prometheus/server/defaults/main.yml +++ b/roles/monitoring/prometheus/server/defaults/main.yml @@ -4,3 +4,6 @@ # ... prometheus_server_retention: "15d" + +prometheus_server_jobs: + - node diff --git a/roles/monitoring/prometheus/server/tasks/main.yml b/roles/monitoring/prometheus/server/tasks/main.yml index ffbc5ffe..5c649f34 100644 --- a/roles/monitoring/prometheus/server/tasks/main.yml +++ b/roles/monitoring/prometheus/server/tasks/main.yml @@ -20,16 +20,18 @@ - name: create configuration directories loop: + - jobs - rules - targets file: path: "/etc/prometheus/{{ item }}" state: directory -- name: generate configuration file - template: - src: prometheus.yml.j2 - dest: /etc/prometheus/prometheus.yml +- name: create sub-directroy for all exporter types in jobs directory + loop: "{{ prometheus_server_jobs }}" + file: + path: "/etc/prometheus/jobs/{{ item }}" + state: directory - name: add user for server user: @@ -48,6 +50,12 @@ ## TODO: ## - create CA and certificate/key +- name: generate configuration file + template: + src: prometheus.yml.j2 + dest: /etc/prometheus/prometheus.yml + notify: restart prometheus + - name: generate systemd service unit template: src: prometheus.service.j2 diff --git a/roles/monitoring/prometheus/server/templates/prometheus.yml.j2 b/roles/monitoring/prometheus/server/templates/prometheus.yml.j2 index cadc3ef0..007afa90 100644 --- a/roles/monitoring/prometheus/server/templates/prometheus.yml.j2 +++ b/roles/monitoring/prometheus/server/templates/prometheus.yml.j2 @@ -8,4 +8,15 @@ rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - - targets: ['localhost:9090'] + - targets: ['localhost:9090'] +{% for job in prometheus_server_jobs %} + + - job_name: '{{ job }}' + metrics_path: /proxy + params: + module: + - {{ job }} + file_sd_configs: + - files: + - "/etc/prometheus/jobs/{{ job }}/*.yml" +{% endfor %} -- cgit v1.2.3