From 92ef87f0f48607e3bfffe5c1aeb46d0a1c5b9268 Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 28 Jun 2023 20:45:36 +0200 Subject: [PATCH 1/9] Create apt_upgrade_agent_2_script.sh Addes support for zabbix agent 2 --- agent_scripts/apt_upgrade_agent_2_script.sh | 76 +++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 agent_scripts/apt_upgrade_agent_2_script.sh diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh new file mode 100644 index 0000000..9e3311d --- /dev/null +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -0,0 +1,76 @@ +#!/bin/sh +# Author: JakobHeubl +# Website https://github.com/JakobHeubl +# Description: APT updates Monitor using Zabbix via command `apt-get -s upgrade` +# Forked from: https://github.com/AkuLink1/zabbix-template-apt-upgrade-monitoring + +# Server configuration file route +AGENTD_CONF_FILE=/etc/zabbix/zabbix_agent2.conf + +# Route for tmp file to store yum output +TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp +echo -n "" > $TEMP_ZBX_FILE + +# Check if Server IP/name is set in configuration file +ZBX_SERVER=$(egrep ^Server= $AGENTD_CONF_FILE | cut -d = -f 2) +if [ -z "$ZBX_SERVER" ]; then + echo "Server is not set in zabbix_agentd.conf file" + exit -1 +fi + +# Get hostname +ZBX_HOSTNAMEITEM_PRESENT=$(egrep ^HostnameItem /etc/zabbix/zabbix_agent2.conf -c) +if [ "$ZBX_HOSTNAMEITEM_PRESENT" -ge "1" ]; then + ZBX_HOSTNAME=$(hostname) +else + ZBX_HOSTNAME=$(egrep ^Hostname /etc/zabbix/zabbix_agent2.conf | cut -d = -f 2) +fi + +####### +# APT Update + Upgrade info +####### +UPDATE_PACKAGES=$(apt-get update) +APT_UPGRADE_SIMULATION=$(apt-get -s upgrade) + +# Kept Back Packages: An already installed package now needs to install more new package as dependency. When you manually and individually update these packages, you see what new packages are going to be installed and the error is not shown anymore. +PACKAGES_KEPT_BACK_COUNT=$(echo $APT_UPGRADE_SIMULATION | grep -o "[[:digit:]]\+ not upgraded" | grep -o "[[:digit:]]\+") +PACKAGES_KEPT_BACK_DESCRIPTION=$(echo $APT_UPGRADE_SIMULATION | grep -A1 "packages have been kept back:" || echo "No packages were kept back") + +# Ready to Upgrade Packages: Packages will be installed +PACKAGES_READY_TO_UPDATE_COUNT=$(echo $APT_UPGRADE_SIMULATION | grep -o "[[:digit:]]\+ upgraded" | grep -o "[[:digit:]]\+") +PACKAGES_READY_TO_UPDATE_DESCRIPTION=$(echo $APT_UPGRADE_SIMULATION | grep -A1 "will be upgraded:" || echo "No packages to upgrade") + +# Newly installed +PACKAGES_NEWLY_INSTALLED_COUNT=$(echo $APT_UPGRADE_SIMULATION | grep -o "[[:digit:]]\+ newly installed" | grep -o "[[:digit:]]\+") +PACKAGES_NEWLY_INSTALLED_DESCRIPTION=$(echo $APT_UPGRADE_SIMULATION | grep -A1 "NEW packages will be installed" || echo "No new packages to install") + +# To remove +PACKAGES_TO_REMOVE_COUNT=$(echo $APT_UPGRADE_SIMULATION | grep -o "[[:digit:]]\+ to remove" | grep -o "[[:digit:]]\+") +PACKAGES_TO_REMOVE_DESCRIPTION=$(echo $APT_UPGRADE_SIMULATION | grep -A1 "are no longer required" || echo "No packages to remove") + +# Total count summed up +TOTAL_PACKAGES_COUNT=`expr $PACKAGES_KEPT_BACK_COUNT + $PACKAGES_READY_TO_UPDATE_COUNT + $PACKAGES_NEWLY_INSTALLED_COUNT + $PACKAGES_TO_REMOVE_COUNT` +# APT Upgrade Summary +APT_UPGRADE_SUMMARY=$(echo "$APT_UPGRADE_SIMULATION" | grep "[[:digit:]]\+ upgraded") + +######## +# Add to tmp file and send to Zabbix Server +######## +# Apt Upgrade Full Summary +echo -n "\"$ZBX_HOSTNAME\" apt.packagesupgradesummary.count $TOTAL_PACKAGES_COUNT\n" >> $TEMP_ZBX_FILE +echo -n "\"$ZBX_HOSTNAME\" apt.packagesupgradesummary.description $APT_UPGRADE_SUMMARY\n" >> $TEMP_ZBX_FILE + +# Kept Back Packages +echo -n "\"$ZBX_HOSTNAME\" apt.keptbackupdates.description $PACKAGES_KEPT_BACK_DESCRIPTION\n" >> $TEMP_ZBX_FILE + +# Kept Back Packages +echo -n "\"$ZBX_HOSTNAME\" apt.newlyinstalled.description $PACKAGES_NEWLY_INSTALLED_DESCRIPTION\n" >> $TEMP_ZBX_FILE + +# Ready to Upgrade Packages +echo -n "\"$ZBX_HOSTNAME\" apt.readytoupgrade.description $PACKAGES_READY_TO_UPDATE_DESCRIPTION\n" >> $TEMP_ZBX_FILE + +# Ready to Upgrade Packages +echo -n "\"$ZBX_HOSTNAME\" apt.toremove.description $PACKAGES_TO_REMOVE_DESCRIPTION\n" >> $TEMP_ZBX_FILE + +# OS Release Number +zabbix_sender -z $ZBX_SERVER -i $TEMP_ZBX_FILE From f21c29e6443e81db214aeb8482ae9aa53ba86cef Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 28 Jun 2023 21:00:38 +0200 Subject: [PATCH 2/9] Update README.md Updated Readme for new file locaitons and made installation easier --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 47ad6d3..819c8e7 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,11 @@ This template was tested on: - Copy content or download `apt_upgrade_agent_script.sh` script and move into host folder (Example): /etc/zabbix/custom_scripts - `wget https://github.com/Moluss/zabbix-template-apt-upgrade-monitoring/tree/main/agent_scripts` + `sudo wget https://raw.githubusercontent.com/AkuLink1/zabbix-template-apt-upgrade-monitoring/main/agent_scripts/apt_upgrade_agent_script.sh` - Grant exec permissions - `sudo chmod +x /etc/zabbix/custom_scripts/apt_upgrade_agent_script` + `sudo chmod +x /etc/zabbix/custom_scripts/apt_upgrade_agent_script.sh` - Add entry to crontab (`sudo crontab -e`) to execute the script periodically to check for updates and then check for possible upgrades and send data to Zabbix Server. This cron will run every 12 hours: From 646cc3799579104d7cf9650660db1607e958959c Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 28 Jun 2023 21:26:53 +0200 Subject: [PATCH 3/9] Fixed wrong error message --- agent_scripts/apt_upgrade_agent_2_script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh index 9e3311d..a3c6383 100644 --- a/agent_scripts/apt_upgrade_agent_2_script.sh +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -14,7 +14,7 @@ echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file ZBX_SERVER=$(egrep ^Server= $AGENTD_CONF_FILE | cut -d = -f 2) if [ -z "$ZBX_SERVER" ]; then - echo "Server is not set in zabbix_agentd.conf file" + echo "Server is not set in zabbix_agent2.conf file" exit -1 fi From d5d74f9656afc27f2678590e6f5c550e297e8296 Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 13 Dec 2023 18:01:09 +0100 Subject: [PATCH 4/9] Fixed: Using var for agent conf file --- agent_scripts/apt_upgrade_agent_2_script.sh | 4 ++-- agent_scripts/apt_upgrade_agent_script.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh index a3c6383..63e618b 100644 --- a/agent_scripts/apt_upgrade_agent_2_script.sh +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -19,11 +19,11 @@ if [ -z "$ZBX_SERVER" ]; then fi # Get hostname -ZBX_HOSTNAMEITEM_PRESENT=$(egrep ^HostnameItem /etc/zabbix/zabbix_agent2.conf -c) +ZBX_HOSTNAMEITEM_PRESENT=$(egrep ^HostnameItem $AGENTD_CONF_FILE -c) if [ "$ZBX_HOSTNAMEITEM_PRESENT" -ge "1" ]; then ZBX_HOSTNAME=$(hostname) else - ZBX_HOSTNAME=$(egrep ^Hostname /etc/zabbix/zabbix_agent2.conf | cut -d = -f 2) + ZBX_HOSTNAME=$(egrep ^Hostname $AGENTD_CONF_FILE | cut -d = -f 2) fi ####### diff --git a/agent_scripts/apt_upgrade_agent_script.sh b/agent_scripts/apt_upgrade_agent_script.sh index 72c9de7..8766302 100644 --- a/agent_scripts/apt_upgrade_agent_script.sh +++ b/agent_scripts/apt_upgrade_agent_script.sh @@ -19,11 +19,11 @@ if [ -z "$ZBX_SERVER" ]; then fi # Get hostname -ZBX_HOSTNAMEITEM_PRESENT=$(egrep ^HostnameItem /etc/zabbix/zabbix_agentd.conf -c) +ZBX_HOSTNAMEITEM_PRESENT=$(egrep ^HostnameItem $AGENTD_CONF_FILE -c) if [ "$ZBX_HOSTNAMEITEM_PRESENT" -ge "1" ]; then ZBX_HOSTNAME=$(hostname) else - ZBX_HOSTNAME=$(egrep ^Hostname /etc/zabbix/zabbix_agentd.conf | cut -d = -f 2) + ZBX_HOSTNAME=$(egrep ^Hostname $AGENTD_CONF_FILE | cut -d = -f 2) fi ####### From e5a75076c1d33ffa142d4a0449ab47e72ab0b522 Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 13 Dec 2023 18:01:45 +0100 Subject: [PATCH 5/9] Added: Forked from missing --- agent_scripts/apt_upgrade_agent_script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_scripts/apt_upgrade_agent_script.sh b/agent_scripts/apt_upgrade_agent_script.sh index 8766302..254eb87 100644 --- a/agent_scripts/apt_upgrade_agent_script.sh +++ b/agent_scripts/apt_upgrade_agent_script.sh @@ -2,7 +2,7 @@ # Author: AkuLink1 # Website https://github.com/AkuLink1 # Description: APT updates Monitor using Zabbix via command `apt-get -s upgrade` -# +# Forked from: https://github.com/AkuLink1/zabbix-template-apt-upgrade-monitoring # Server configuration file route AGENTD_CONF_FILE=/etc/zabbix/zabbix_agentd.conf From 493fad17464efbd45ab7efe422a632e18585626f Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Wed, 13 Dec 2023 18:03:12 +0100 Subject: [PATCH 6/9] Fixed: Multiple server addresses if active and passive is set --- agent_scripts/apt_upgrade_agent_2_script.sh | 2 +- agent_scripts/apt_upgrade_agent_script.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh index 63e618b..42d8c08 100644 --- a/agent_scripts/apt_upgrade_agent_2_script.sh +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -12,7 +12,7 @@ TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file -ZBX_SERVER=$(egrep ^Server= $AGENTD_CONF_FILE | cut -d = -f 2) +ZBX_SERVER=$(egrep ^Server= $AGENTD_CONF_FILE | cut -d = -f 2 | head -n 1) if [ -z "$ZBX_SERVER" ]; then echo "Server is not set in zabbix_agent2.conf file" exit -1 diff --git a/agent_scripts/apt_upgrade_agent_script.sh b/agent_scripts/apt_upgrade_agent_script.sh index 254eb87..1daec06 100644 --- a/agent_scripts/apt_upgrade_agent_script.sh +++ b/agent_scripts/apt_upgrade_agent_script.sh @@ -12,7 +12,7 @@ TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file -ZBX_SERVER=$(egrep ^Server $AGENTD_CONF_FILE | cut -d = -f 2) +ZBX_SERVER=$(egrep ^Server $AGENTD_CONF_FILE | cut -d = -f 2 | head -n 1) if [ -z "$ZBX_SERVER" ]; then echo "Server is not set in zabbix_agentd.conf file" exit -1 From c453fa77e5db7bea85503c568dfac8ecea36131b Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Sun, 17 Mar 2024 14:42:34 +0100 Subject: [PATCH 7/9] Update apt_upgrade_agent_2_script.sh If no passiv server is added, use ServerActive as address --- agent_scripts/apt_upgrade_agent_2_script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh index 42d8c08..e3c4f6a 100644 --- a/agent_scripts/apt_upgrade_agent_2_script.sh +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -12,7 +12,7 @@ TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file -ZBX_SERVER=$(egrep ^Server= $AGENTD_CONF_FILE | cut -d = -f 2 | head -n 1) +ZBX_SERVER=$(egrep ^Server $AGENTD_CONF_FILE | cut -d = -f 2 | head -n 1) if [ -z "$ZBX_SERVER" ]; then echo "Server is not set in zabbix_agent2.conf file" exit -1 From 2b36536ec41f74f7da537127e5c73846aafeb41f Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Fri, 19 Apr 2024 15:49:52 +0200 Subject: [PATCH 8/9] Update apt_upgrade_agent_2_script.sh Added creation of folder if not exists --- agent_scripts/apt_upgrade_agent_2_script.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/agent_scripts/apt_upgrade_agent_2_script.sh b/agent_scripts/apt_upgrade_agent_2_script.sh index e3c4f6a..f40e989 100644 --- a/agent_scripts/apt_upgrade_agent_2_script.sh +++ b/agent_scripts/apt_upgrade_agent_2_script.sh @@ -8,7 +8,11 @@ AGENTD_CONF_FILE=/etc/zabbix/zabbix_agent2.conf # Route for tmp file to store yum output -TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp +TEMP_ZBX_FILE=/tmp/zabbix/zabbix_apt_check_output.tmp + +# Create folder if not exists +mkdir -p /tmp/zabbix + echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file From 0d4cbb663dcd768027d93f298beab4e700fff6b1 Mon Sep 17 00:00:00 2001 From: Jakob Heubl Date: Fri, 19 Apr 2024 15:50:27 +0200 Subject: [PATCH 9/9] Update apt_upgrade_agent_script.sh Added creation of folder for tmp file if it does not exists --- agent_scripts/apt_upgrade_agent_script.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/agent_scripts/apt_upgrade_agent_script.sh b/agent_scripts/apt_upgrade_agent_script.sh index 1daec06..b8f517b 100644 --- a/agent_scripts/apt_upgrade_agent_script.sh +++ b/agent_scripts/apt_upgrade_agent_script.sh @@ -9,6 +9,9 @@ AGENTD_CONF_FILE=/etc/zabbix/zabbix_agentd.conf # Route for tmp file to store yum output TEMP_ZBX_FILE=/tmp/zabbix_apt_check_output.tmp +# Create folder if not exists +mkdir -p /tmp/zabbix + echo -n "" > $TEMP_ZBX_FILE # Check if Server IP/name is set in configuration file