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

check_snmp_synology

Blame
  • check_netio 3.97 KiB
    #!/bin/bash
    # ======================================================================
    #
    # Check NETIO to show traffic over all network cards
    # data besed on /proc/net/dev 
    #
    # ----------------------------------------------------------------------
    # 2020-07-08  v1.0  <axel.hahn@iml.unibe.ch>
    # 2023-08-21  v1.1  <axel.hahn@unibe.ch>      add help; add param -i
    # 2023-08-22  v1.2  <axel.hahn@unibe.ch>      send perf data on single interface too; interfaces in alphabetic order; no more tmp file
    # 2023-08-22  v1.3  <axel.hahn@unibe.ch>      show status line with 2 digits after "."
    # ======================================================================
    
    
    . $( dirname $0 )/inc_pluginfunctions
    
    export self_APPVERSION=1.2
    
    
    # ----------------------------------------------------------------------
    # FUNCTIONS
    # ----------------------------------------------------------------------
    
    # show help text
    function showHelp(){
        local _self; _self=$(basename $0)
    cat <<EOF
    $( ph.showImlHelpHeader )
    
    Show network io for all or selected interfaces.
    It shows the current counter value from /proc/net/dev and the speed 
    in byte per sec since last execution.
    
    This plugin sends performancedata.
    
    SYNTAX:
      $_self [-h] [-i INTERFACE(S)]
    
    OPTIONS:
      -h               this help
    
    PARAMETERS:
      -i  INTERFACE    show this interface only. Quote multiple interfaces.
                       The check returns unknown if an interface does not
                       exist.
    
    EXAMPLES:
    
      $_self      show netio of all network interfaces
      $_self -i "eth0 eth1" 
                       show netio of given interfaces.
    
    EOF
    }
    
    # ----------------------------------------------------------------------
    # MAIN
    # ----------------------------------------------------------------------
    
    bOptHelp=$( ph.hasParamoption "h" "$@")
    
    if [ $bOptHelp -eq 1 ]; then
        showHelp
        exit 0
    fi
    
    typeset -i iCountInterfaces
    
    typeset -i iRead=0
    typeset -i iTrans=0
    typeset -i iSpeedRead=0
    typeset -i iSpeedTrans=0
    typeset -i iTotalRead=0
    typeset -i iTotalTrans=0
    
    data=$( cat /proc/net/dev | grep ":" | grep -vE "(lo|bond.*|ppp.*):")
    
    allInterfaces=$( cut -f 1 -d ":" <<< "$data" | tr -d " " )
    sInterface=$(   ph.getValueWithParam "$allInterfaces" "i" "$@" | sort )
    
    out="---------- Interfaces:"
    
    
    # ----- loop over all interfaces
    iCountInterfaces=$( wc -w <<< "$sInterface" )
    
        for myinterface in $sInterface
        do
    
            line=$( grep "${myinterface}:" <<< "$data" )
            if [ -n "$line" ] ; then
    
                # echo "SOURCE: $line"
    
                # total value of byte
                iRead=$( echo "$line" | awk '{ print $2 }')
                iTrans=$(echo "$line" | awk '{ print $10 }')
    
                # speed in byte per sec based on last stored value and its age
                iSpeedRead=$( ph.perfdeltaspeed "netio-${myinterface}-rx" $iRead)
                iSpeedTrans=$(ph.perfdeltaspeed "netio-${myinterface}-tx" $iTrans)
    
                out+=$(
                    printf "\n>>> %s\n"                 "${myinterface}"
                    printf "%15s %15s %10s %-10s \n"  "receive:"   $iRead  $iSpeedRead  "byte/s"
                    printf "%15s %15s %10s %-10s \n"  "transmit:"  $iTrans $iSpeedTrans "byte/s"
                    echo " "
                )
                ph.perfadd "rx-${myinterface}"   "$iSpeedRead"
                ph.perfadd "tx-${myinterface}"   "$iSpeedTrans"
    
                iTotalRead=$iTotalRead+$iSpeedRead
                iTotalTrans=$iTotalTrans+$iSpeedTrans
            else
                ph.setStatus "unknown"
                out+=$( printf "\nERROR: The interface [${myinterface}] does not exist." )
            fi
    
        done
    
    # ----- total
    if [ $iCountInterfaces -gt 1 ]; then
    
        out+=$(
            echo
            echo "---------- total:"
            printf "%15s %10s %-10s \n"  "receive:"   $iTotalRead  "byte/s"
            printf "%15s %10s %-10s \n"  "transmit:"  $iTotalTrans "byte/s"
            echo " "
        )
       
    fi
    ph.perfadd "rx"   "$iTotalRead"
    ph.perfadd "tx"   "$iTotalTrans"
    
    # ----- output
    ph.status "Network IO ... IN $(ph.toUnit $iTotalRead M 2 ) MB/s >> [host] >> $(ph.toUnit $iTotalTrans M 2 ) MB/s OUT"
    
    echo "$out"
    
    ph.exit