zoukankan      html  css  js  c++  java
  • nagios 自定义插件demo

    #!/bin/bash
    
    loadavg=$( uptime | awk -F: '{print $4}' | xargs )
    
    load1int=$( echo $loadavg | cut -d "." -f 1 )
    load5int=$( echo $loadavg | awk -F, '{print $2}' | xargs | cut -d "." -f 1 )
    load15int=$( echo $loadavg | awk -F, '{print $3}' | xargs | cut -d "." -f 1 )
    
    load1=$( echo $loadavg | awk -F, '{print $1}' )
    load5=$( echo $loadavg | awk -F, '{print $2}' )
    load15=$( echo $loadavg | awk -F, '{print $3}' )
    
    output="Load Average: $loadavg | Load_1min=$load1, Load_5min=$load5, Load_15min=$load15" 
    
    if [ $load1int -le 1 -a $load5int -le 1 -a $load15int -le 1 ]
    then
        echo "OK- $output"
        exit 0
    elif [ $load1int -le 2 -a $load5int -le 2 -a $load15int -le 2 ]
    then
        echo "WARNING- $output"
        exit 1
    elif [ $load1int -gt 2 -a $load5int -gt 2 -a $load15int -gt 2 ]
    then
        echo "CRITICAL- $output"
        exit 2
    else
    echo "UNKNOWN- $output"
    exit 3
    fi
    
    
    #!/bin/ksh
    
    ################################################################################
    # Sample Nagios plugin to monitor free memory on the local machine             #
    # Author: Daniele Mazzocchio (http://www.kernel-panic.it/)                     #
    ################################################################################
    
    VERSION="Version 1.0"
    AUTHOR="(c) 2007-2009 Daniele Mazzocchio (danix@kernel-panic.it)"
    
    PROGNAME=`/usr/bin/basename $0`
    
    # Constants
    BYTES_IN_MB=$(( 1024 * 1024 ))
    KB_IN_MB=1024
    
    # Exit codes
    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITICAL=2
    STATE_UNKNOWN=3
    
    # Helper functions #############################################################
    
    function print_revision {
       # Print the revision number
       echo "$PROGNAME - $VERSION"
    }
    
    function print_usage {
       # Print a short usage statement
       echo "Usage: $PROGNAME [-v] -w <limit> -c <limit>"
    }
    
    function print_help {
       # Print detailed help information
       print_revision
       echo "$AUTHOR
    
    Check free memory on local machine
    "
       print_usage
    
       /bin/cat <<__EOT
    
    Options:
    -h
       Print detailed help screen
    -V
       Print version information
    
    -w INTEGER
       Exit with WARNING status if less than INTEGER MB of memory are free
    -w PERCENT%
       Exit with WARNING status if less than PERCENT of memory is free
    -c INTEGER
       Exit with CRITICAL status if less than INTEGER MB of memory are free
    -c PERCENT%
       Exit with CRITICAL status if less than PERCENT of memory is free
    -v
       Verbose output
    __EOT
    }
    
    # Main #########################################################################
    
    # Total memory size (in MB)
    tot_mem=$(( `/sbin/sysctl -n hw.physmem` / BYTES_IN_MB))
    # Free memory size (in MB)
    free_mem=$(( `/usr/bin/vmstat | /usr/bin/tail -1 | /usr/bin/awk '{ print $5 }'` / KB_IN_MB ))
    # Free memory size (in percentage)
    free_mem_perc=$(( free_mem * 100 / tot_mem ))
    
    # Verbosity level
    verbosity=0
    # Warning threshold
    thresh_warn=
    # Critical threshold
    thresh_crit=
    
    # Parse command line options
    while [ "$1" ]; do
       case "$1" in
           -h | --help)
               print_help
               exit $STATE_OK
               ;;
           -V | --version)
               print_revision
               exit $STATE_OK
               ;;
           -v | --verbose)
               : $(( verbosity++ ))
               shift
               ;;
           -w | --warning | -c | --critical)
               if [[ -z "$2" || "$2" = -* ]]; then
                   # Threshold not provided
                   echo "$PROGNAME: Option '$1' requires an argument"
                   print_usage
                   exit $STATE_UNKNOWN
               elif [[ "$2" = +([0-9]) ]]; then
                   # Threshold is a number (MB)
                   thresh=$2
               elif [[ "$2" = +([0-9])% ]]; then
                   # Threshold is a percentage
                   thresh=$(( tot_mem * ${2%\%} / 100 ))
               else
                   # Threshold is neither a number nor a percentage
                   echo "$PROGNAME: Threshold must be integer or percentage"
                   print_usage
                   exit $STATE_UNKNOWN
               fi
               [[ "$1" = *-w* ]] && thresh_warn=$thresh || thresh_crit=$thresh
               shift 2
               ;;
           -?)
               print_usage
               exit $STATE_OK
               ;;
           *)
               echo "$PROGNAME: Invalid option '$1'"
               print_usage
               exit $STATE_UNKNOWN
               ;;
       esac
    done
    
    if [[ -z "$thresh_warn" || -z "$thresh_crit" ]]; then
       # One or both thresholds were not specified
       echo "$PROGNAME: Threshold not set"
       print_usage
       exit $STATE_UNKNOWN
    elif [[ "$thresh_crit" -gt "$thresh_warn" ]]; then
       # The warning threshold must be greater than the critical threshold
       echo "$PROGNAME: Warning free space should be more than critical free space"
       print_usage
       exit $STATE_UNKNOWN
    fi
    
    if [[ "$verbosity" -ge 2 ]]; then
       # Print debugging information
       /bin/cat <<__EOT
    Debugging information:
      Warning threshold: $thresh_warn MB
      Critical threshold: $thresh_crit MB
      Verbosity level: $verbosity
      Total memory: $tot_mem MB
      Free memory: $free_mem MB ($free_mem_perc%)
    __EOT
    fi
    
    if [[ "$free_mem" -lt "$thresh_crit" ]]; then
       # Free memory is less than the critical threshold
       echo "MEMORY CRITICAL - $free_mem_perc% free ($free_mem MB out of $tot_mem MB)"
       exit $STATE_CRITICAL
    elif [[ "$free_mem" -lt "$thresh_warn" ]]; then
       # Free memory is less than the warning threshold
       echo "MEMORY WARNING - $free_mem_perc% free ($free_mem MB out of $tot_mem MB)"
       exit $STATE_WARNING
    else
       # There's enough free memory!
       echo "MEMORY OK - $free_mem_perc% free ($free_mem MB out of $tot_mem MB)"
       exit $STATE_OK
    fi
  • 相关阅读:
    第1章 1.4计算机网络概述--数据包和数据帧
    第1章 1.3计算机网络概述--规划IP地址介绍MAC地址
    sql生成随机字符串
    bootstrap手风琴效果
    C#-java RSA加密解密
    正则表达式验证手机号 身份证号 银行卡号 姓名输入
    微服务在微信后台的架构实践
    react学习
    datatables .fnDraw is not a function
    给当前页或者跳转后页面的导航栏添加选中样式
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/5018251.html
Copyright © 2011-2022 走看看