Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env sh
- #
- # vim: ft=sh
- #
- # Copyright (c) 2017 Ian Gregory
- #
- # Permission to use, copy, modify, and distribute this software for any
- # purpose with or without fee is hereby granted, provided that the above
- # copyright notice and this permission notice appear in all copies.
- #
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- #
- # Based on "OpenBSD Memory Plugin for Nagios" - Copyright 2008 - patrick@pahem.deA
- #
- # This plugin checks the used/free/total # memory of OpenBSD. You can set
- # warning and critical integer/precentage(%) values with -w and -c.
- #
- # Example usage:
- # check_openbsd_mem.sh -w 15% -c 10%
- # Will produce following output:
- # OK - Free: 503M Used: 504M Total: 1007M | free_mem=503MB;151;100;0;1007
- #
- PROGNAME=$(basename "$0")
- STATE_OK=0
- STATE_WARNING=1
- STATE_CRITICAL=2
- STATE_UNKNOWN=3
- print_usage()
- {
- echo "Usage: $PROGNAME [-w <integer value>] [-c <integer value>]"
- echo ""
- echo "Arguments:"
- echo " -w <integer value>"
- echo " Generate warning state if free memory under percentage(%) value"
- echo " -c <integer value>"
- echo " Generate critical state if free memory under percentage(%) value"
- echo ""
- }
- while test -n "$1"; do
- case "$1" in
- -w)
- PERCENT_WARN=$2
- shift
- ;;
- -c)
- PERCENT_CRIT=$2
- shift
- ;;
- *)
- echo "Unknown argument: $1"
- print_usage
- exit $STATE_UNKNOWN
- ;;
- esac
- shift
- done
- FREE_MEM=$(( $(/usr/bin/vmstat | /usr/bin/tail -1 | /usr/bin/awk '{ print $5 }') / 1024 ))
- TOTAL_MEM=$(( $(/sbin/sysctl -n hw.physmem) / 1024 / 1024 ))
- USED_MEM=$((TOTAL_MEM - FREE_MEM));
- # checks -w and -c parameter and transform input
- if [ -n "$PERCENT_WARN" ]; then
- if [ "$PERCENT_WARN" -gt 100 ]; then
- echo "Error: Percentage of warning (-w) over 100%."
- exit $STATE_UNKNOWN
- else
- WARN=$((TOTAL_MEM * PERCENT_WARN / 100))
- fi
- fi
- if [ -n "$PERCENT_CRIT" ]; then
- if [ "$PERCENT_CRIT" -gt 100 ]; then
- echo "Error: Percentage of critical (-c) over 100%."
- exit $STATE_UNKNOWN
- else
- CRIT=$((TOTAL_MEM * PERCENT_CRIT / 100))
- fi
- fi
- OUTPUT="Free: ${FREE_MEM}M Used: ${USED_MEM}M Total: ${TOTAL_MEM}M | free_mem=${FREE_MEM}MB;$WARN;$CRIT;0;$TOTAL_MEM"
- # checks critical parameter if any specified
- if [ -n "$CRIT" ]; then
- if [ $FREE_MEM -lt $CRIT ]; then
- echo "CRITICAL - $OUTPUT"
- exit $STATE_CRITICAL
- fi
- fi
- # checks warning parameter if any specified
- if [ -n "$WARN" ];then
- if [ $FREE_MEM -lt $WARN ]; then
- echo "WARNING - $OUTPUT"
- exit $STATE_WARNING
- fi
- fi
- # output for STATE_OK
- echo "OK - $OUTPUT"
- exit $STATE_OK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement