From feadda6fac73e0765c4230f16c389fe3c6691cd3 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss <erdnaxe@crans.org> Date: Sun, 19 Jan 2020 18:23:40 +0100 Subject: [PATCH] Patch prometheus APT collector --- roles/prometheus-node-exporter/files/apt.sh | 44 +++++++++++++++++++ roles/prometheus-node-exporter/tasks/main.yml | 10 +++++ 2 files changed, 54 insertions(+) create mode 100644 roles/prometheus-node-exporter/files/apt.sh diff --git a/roles/prometheus-node-exporter/files/apt.sh b/roles/prometheus-node-exporter/files/apt.sh new file mode 100644 index 00000000..25cf7d9e --- /dev/null +++ b/roles/prometheus-node-exporter/files/apt.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Description: Expose metrics from apt updates. +# +# Author: Ben Kochie <superq@gmail.com> + +upgrades="$(/usr/bin/apt-get --just-print dist-upgrade \ + | /usr/bin/awk -F'[()]' \ + '/^Inst/ { sub("^[^ ]+ ", "", $2); gsub(" ","",$2); + sub("\\[", " ", $2); sub("\\]", "", $2); print $2 }' \ + | /usr/bin/sort \ + | /usr/bin/uniq -c \ + | awk '{ gsub(/\\\\/, "\\\\", $2); gsub(/\"/, "\\\"", $2); + gsub(/\[/, "", $3); gsub(/\]/, "", $3); + print "apt_upgrades_pending{origin=\"" $2 "\",arch=\"" $NF "\"} " $1}' +)" + +autoremove="$(/usr/bin/apt-get --just-print autoremove \ + | /usr/bin/awk '/^Remv/{a++}END{print "apt_autoremove_pending " a}' +)" + +echo '# HELP apt_upgrades_pending Apt package pending updates by origin.' +echo '# TYPE apt_upgrades_pending gauge' +if [[ -n "${upgrades}" ]] ; then + echo "${upgrades}" +else + echo 'apt_upgrades_pending{origin="",arch=""} 0' +fi + +echo '# HELP apt_autoremove_pending Apt package pending autoremove.' +echo '# TYPE apt_autoremove_pending gauge' +if [[ -n "${autoremove}" ]] ; then + echo "${autoremove}" +else + echo 'apt_autoremove_pending 0' +fi + +echo '# HELP node_reboot_required Node reboot is required for software updates.' +echo '# TYPE node_reboot_required gauge' +if [[ -f '/run/reboot-required' ]] ; then + echo 'node_reboot_required 1' +else + echo 'node_reboot_required 0' +fi diff --git a/roles/prometheus-node-exporter/tasks/main.yml b/roles/prometheus-node-exporter/tasks/main.yml index b49252ae..74502bfd 100644 --- a/roles/prometheus-node-exporter/tasks/main.yml +++ b/roles/prometheus-node-exporter/tasks/main.yml @@ -38,3 +38,13 @@ ARGS="--web.listen-address={{ ansible_hostname }}.adm.crans.org:9100" notify: Restart prometheus-node-exporter tags: restart-node-exporter + +# Install new APT textfile collector, it might be upstreamed one day +# https://github.com/prometheus-community/node-exporter-textfile-collector-scripts/pull/35 +- name: Patch APT textfile collector + copy: + src: apt.sh + dest: /usr/share/prometheus-node-exporter/apt.sh + owner: root + group: root + mode: 0755 -- GitLab