HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //lib64/nagios/plugins/check_zpool_usage.sh
#!/usr/bin/env bash
# Icinga/Nagios plugin to check zpool free space
# Change the VALUE number to determine <#TB will the check be.
VALUE=5

# Parse arguments
while [[ $# -gt 0 ]]; do
  case $1 in
    --usage)
      if [[ -n $2 && $2 =~ ^[0-9]+$ ]]; then
        VALUE=$2
        shift 2
      else
        echo "Error: --usage requires an integer argument" >&2
        exit 3
      fi
      ;;
    *)
      shift
      ;;
  esac
done

THRESHOLD=$((VALUE * 1024 * 1024 * 1024 * 1024))

critical_pools=()

while IFS=$'\t' read -r pool free; do
  [[ -z "$pool" ]] && continue

  if (( free < THRESHOLD )); then
    critical_pools+=("$pool")
  fi
done < <(zpool list -Hp -o name,free 2>/dev/null)

if [ ${#critical_pools[@]} -gt 0 ]; then
  echo "CRITICAL: ${critical_pools[*]} pool requires attention ${VALUE}TB"
  exit 2
else
  echo "OK: All zpools have >=${VALUE}TB free"
  exit 0
fi