Skip to content
Snippets Groups Projects
Select Git revision
  • 74f14b2d4a6c7d548310f2625a209741d89c19ec
  • master default protected
  • simple-task/7248-eol-check-add-node-22
  • 6877_check_iml_deployment
4 results

check_smartstatus

Blame
  • check_ceph_osd 2.39 KiB
    #!/bin/bash
    # ======================================================================
    #
    # Icinga/ Nagios Check
    # CEPH STATUS / HEALTH
    #
    # ----------------------------------------------------------------------
    #
    # REQUIREMENTS:
    #   - ceph
    #
    # SYNTAX:
    #   - check_ceph_status
    #     No parameter required
    #
    # RESULT:
    #     OK        = all OSDs up
    #     CRITITCAL = min. 1 OSD is down
    #     UNKNOWN   = ceph osd tree is not executable
    #
    # ----------------------------------------------------------------------
    # 2020-03-04  v1.0  <axel.hahn@iml.unibe.ch>
    # 2020-03-05  v1.1  <axel.hahn@iml.unibe.ch>  added params -w -c 
    # 2020-03-05  v1.2  <axel.hahn@iml.unibe.ch> switch to ph.* helper functions
    # ======================================================================
    
    . `dirname $0`/inc_pluginfunctions
    
    tmpfile=/tmp/ceph_status_output_$$
    
    # ----------------------------------------------------------------------
    # FUNCTIONS
    # ----------------------------------------------------------------------
    
    # fetch lines of OSD entries only from output of ceph osd tree
    function getOsd(){
        grep "^\ *[0-9]" $tmpfile
    }
    
    # ----------------------------------------------------------------------
    # MAIN
    # ----------------------------------------------------------------------
    sudo /bin/ceph osd tree > $tmpfile 2>&1
    if [ $? -ne 0 ]; then
        rm -f $tmpfile
        ph.abort "UNKNOWN: ceph is not available or no sudo permissions to execute ceph commands."
    fi
    
    # set default / override from command line params
    typeset -i iWarnLimit=`     ph.getValueWithParam 1 w "$@"`
    typeset -i iCriticalLimit=` ph.getValueWithParam 2 c "$@"`
    
    typeset -i iOsdTotal=` getOsd | wc -l`
    typeset -i iOsdDown=`  getOsd | awk '{ print $4 }' | grep "down" | wc -l`
    typeset -i iOsdUp=`    getOsd | awk '{ print $4 }' | grep "up"   | wc -l`
    
    
    if [ $iOsdDown -lt $iWarnLimit ]; then
        ph.setStatus "ok"
    else
        if [ $iOsdDown -ge $iCriticalLimit ]; then
            ph.setStatus "critical"
        else
            ph.setStatus "warning"
        fi
    fi
    
    ph.status "Check of available OSDs - $iOsdTotal OSDs total .. $iOsdUp up .. $iOsdDown down (Limits: warn at $iWarnLimit; critical $iCriticalLimit)"
    cat $tmpfile
    
    rm -f $tmpfile
    
    ph.perfadd "osd-total"    "${iOsdTotal}"  "" "" 0 ${iOsdTotal}
    ph.perfadd "osd-up"       "${iOsdUp}"     "" "" 0 ${iOsdTotal}
    ph.perfadd "osd-down"     "${iOsdDown}"   "" "" 0 ${iOsdTotal}
    
    ph.exit
    
    # ----------------------------------------------------------------------