Edit file File name : check_meminfo Content :#!/bin/bash # Nagios check_meminfo script # 2023 (C) WorldHost Group # Author: Tsvetan Gerov <tsvetan@wordlhost.group> # Version 0.2 MEMINFO="/proc/meminfo" # Default values MEMWARNING="90" MEMCRITICAL="95" SWAPWARNING="70" SWAPCRITICAL="80" APPSWARNING="60" APPSCRITICAL="70" Help() { # Display Help echo "check_meminfo" echo echo "Syntax: check_meminfo [-w|-c|-W|-C]-a|-s|-h" echo "options:" echo "w Warning percentage for memory" echo "c Critical percentage for memory". echo "W Warning percentage for swap" echo "C Critical percentage for swap" echo "a Warning percentage for apps" echo "s Critical percentage for apps" echo "h Print this help" echo exit } getMemory() { awk '/^MemTotal:/ {total = $2;} /^MemFree:/ {free = $2;} /^MemAvailable:/ {avail = $2;} /^Buffers:/ {buffers = $2;} /^Cached:/ {cached = $2; if (avail == "") avail = free + buffers + cached; printf "%d\n", (total - avail) / total * 100;}' $MEMINFO } getSwap() { TOTALSWAP=$(grep SwapTotal /proc/meminfo | awk '{print$2}') if [ $TOTALSWAP -eq "0" ]; then echo "0" else awk '/^SwapCached:/ {cached = $2;} /^SwapTotal:/ {total = $2;} /^SwapFree:/ {free = $2; printf "%d\n", (total - free - cache) / total * 100}' $MEMINFO fi } getApps() { awk '/^MemTotal:/ {total = $2;} /^MemFree:/ {free = $2;} /^Buffers:/ {buffer = $2;} /^Cached:/ {cached = $2;} /^Slab:/ {slab = $2;} /^PageTables:/ {pagetables = $2;} /^SwapCached:/ {swapcache = $2; printf "%d\n", (total - free - buffer -cached - slab - pagetables - swapcache) / total * 100}' $MEMINFO } while getopts w:c:W:C:a:s:h flag do case "${flag}" in w) MEMWARNING=${OPTARG};; c) MEMCRITICAL=${OPTARG};; W) SWAPWARNING=${OPTARG};; C) SWAPCRITICAL=${OPTARG};; a) APPSWARNING=${OPTARG};; s) APPSCRITICAL=${OPTARG};; h) Help;; esac done # CRITICAL if [ $(getMemory) -gt $MEMCRITICAL ]; then echo "CRITICAL: RAM Usage: $(getMemory)/100%" exit 2 elif [ $(getApps) -gt $APPSCRITICAL ]; then echo "CRITICAL: Memory APPs Usage: $(getApps)/100%" exit 2 elif [ $(getSwap) -gt $SWAPCRITICAL ]; then echo "CRITICAL: SWAP Usage: $(getSwap)/100%" exit 2 # WARNING elif [ $(getMemory) -gt $MEMWARNING ]; then echo "WARNING: RAM Usage: $(getMemory)/100%" exit 1 elif [ $(getApps) -gt $APPSWARNING ]; then echo "WARNING: Memory APPs: $(getApps)/100%" exit 1 elif [ $(getSwap) -gt $SWAPWARNING ]; then echo "WARNING: SWAP Usage: $(getSwap)/100%" exit 1 # OK else echo "OK: RAM: $(getMemory)/100% APPS: $(getApps)/100% SWAP: $(getSwap)/100%" exit 0 fiSave