From c4572898d5005abbc23a4bf411d0d240a028fcfc Mon Sep 17 00:00:00 2001 From: samuel-p Date: Sat, 12 Jun 2021 03:00:17 +0200 Subject: [PATCH] added apt.sh --- README.md | 2 +- node_exporter/apt.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 node_exporter/apt.sh diff --git a/README.md b/README.md index 093cd73..29bb615 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ __node_exporter__ |---|---| |[active-sessions.sh](node_exporter/active-sessions.sh)|Script to export all active sessions to prometheus| |[directory-size.sh](node_exporter/directory-size.sh)|Script to export directory sizes to prometheus| - +|[apt.sh](node_exporter/apt.sh)|Script to export pending apt updates to prometheus| ## Setup diff --git a/node_exporter/apt.sh b/node_exporter/apt.sh new file mode 100644 index 0000000..226cc2a --- /dev/null +++ b/node_exporter/apt.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# adapted from https://github.com/prometheus-community/node-exporter-textfile-collector-scripts/blob/master/apt.sh +# + +/usr/bin/apt-get update > /dev/null 2>&1 + +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{printf "apt_autoremove_pending %d", 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' +echo "${autoremove}" + +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