User Tools

Site Tools


aix:scripts_category:nagios_aix_check

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aix:scripts_category:nagios_aix_check [2023/11/23 18:17]
manu
aix:scripts_category:nagios_aix_check [2025/02/24 15:34] (current)
manu [Check path disks]
Line 321: Line 321:
 </​code>​ </​code>​
  
-==== check_ntp_aix.sh ==== +==== check_ntp_aix.sh ​(as nagios user) ==== 
  
 +<​code>​
 +#​!/​bin/​ksh93
 +#
 +# AIX check NTP for Nagios v1.0 06/2023
 +#  EIF
 +#
 +
 +STATE_OK=0
 +STATE_WARNING=1
 +STATE_CRITICAL=2
 +STATE_UNKNOWN=3
 +STATE_DEPENDENT=4
 +
 +MAXSEC=30 # max delay allowed in seconds
 +OUTPUT=$(ntpq -p 2>&1 | sed '​s/​$/;/​g'​)
 +
 +if [ $(echo $OUTPUT | grep refused >/​dev/​null 2>&​1;​ echo $?) -eq 0 ]
 +then
 +  EXIT_CODE=$STATE_CRITICAL
 +  OUTPUT="​Process:​ xntpd not running"​
 +else
 +  if [[ $(echo $OUTPUT | tr ';'​ '​\n'​ | sed '/​^$/​d'​ | sed 's/^\ //g' | tail +3) == ""​ ]]
 +  then
 +    EXIT_CODE=$STATE_CRITICAL
 +    OUTPUT="​Process:​ xntpd not running"​
 +  else
 +    OFFSET=$(echo $OUTPUT | tr ';'​ '​\n'​ | sed '/​^$/​d'​ | sed 's/^\ //g' | tail +3 | rev | awk '​{print $2}' | rev | cut -d'​.'​ -f1 | sed '​s/​+//'​ | sed '​s/​-//'​ | sort -u | tail -1)
 +    if [ $(echo $OUTPUT | tr ';'​ '​\n'​ | sed '/​^$/​d'​ | sed 's/^\ //g' | tail +3 | grep -q '​^\*';​ echo $?) -eq 0 ]
 +    then
 +      EXIT_CODE=$STATE_OK
 +      OUTPUT="​Process:​ xntpd offset ${OFFSET}s synchronized OK"
 +    else
 +      if [ $(echo $OFFSET) -lt "​$MAXSEC"​ ]
 +      then
 +        EXIT_CODE=$STATE_OK
 +        OUTPUT="​Process:​ xntpd offset ${OFFSET}s synchronized OK"
 +      else
 +        EXIT_CODE=$STATE_WARNING
 +        OUTPUT="​Process:​ xntpd offset ${OFFSET}s Not synchronized"​
 +      fi
 +    fi
 +  fi
 +fi
 +
 +echo $OUTPUT | tr ';'​ '​\n'​ | sed '/​^$/​d'​ | sed 's/^\ //g' | tail +3 | rev | awk '​{print $2}' | rev | cut -d'​.'​ -f1 | sed '​s/​-//'​
 +
 +echo $OUTPUT
 +exit $EXIT_CODE
 +</​code>​
 +
 +As root:
 <​code>​ <​code>​
 #​!/​bin/​ksh93 #​!/​bin/​ksh93
Line 519: Line 570:
 #@(#) v1.0 Count number of paths per disk #@(#) v1.0 Count number of paths per disk
 # v1.1 add sudo linux # v1.1 add sudo linux
-# v1.2 add alerting ​for sudo +# v1.2 change ​for VSCSI 
-Add these lines in sudoers files +v1.3 add verbose (-v), improvements linux 
-[root@lnx log]# cat /​etc/​sudoers.d/​99_nagios +On linux, add into /​etc/​sudoers ​the following lines for linux: 
-# nagios ALL=(ALL) NOPASSWD: /​usr/​sbin/​multipath +     nagios ALL=(ALL) NOPASSWD: /​usr/​sbin/​multipath 
-# nrpe ALL=(ALL) NOPASSWD: /​usr/​sbin/​multipath+     nrpe ALL=(ALL) NOPASSWD: /​usr/​sbin/​multipath 
 + 
 + 
 +# number of path per type of disk 
 +pathviosfc=4 
 +pathviosscsi=2 
 +pathviossas=1 
 +pathlparfc=8 
 +pathlparscsi=2 
 +pathlparsas=1 
  
-nbpathlpar=8 
-nbpathvios=4 
-nbpath=$1 
 STATUS=0 STATUS=0
  
Line 536: Line 594:
  
 MSG=""​ MSG=""​
- +verbose=""​
-# check if server is VIOS +
-if [ -e "/​usr/​ios/​cli/​ioscli" ​+
-then +
-  nbpath1=$nbpathvios +
-else +
-  nbpath1=$nbpathlpar +
-fi+
  
 # specified value for nb paths # specified value for nb paths
 if [ "​$npath"​ == ""​ ] if [ "​$npath"​ == ""​ ]
 then then
-  nbpath=$nbpath1+  nbpath=$pathlparfc
 fi fi
  
Line 563: Line 614:
 then then
   MSG="​OK:​ no multipathing"​   MSG="​OK:​ no multipathing"​
 +  verbose="​$MSG"​
   STATUS=$STATE_OK   STATUS=$STATE_OK
 else else
Line 568: Line 620:
   then   then
     MSG="​$MSG Maybe error on sudo config"​     MSG="​$MSG Maybe error on sudo config"​
 +    verbose="​$MSG"​
     STATUS=$STATE_UNKNOWN     STATUS=$STATE_UNKNOWN
   else   else
Line 574: Line 627:
       pathok=$(cat $tempfile | grepp "​^$i;"​ | grep -v "​policy="​ | grep -v "​size="​ | grep -v '​^mpath'​ | grep active | wc -l | awk '​{print $1}')       pathok=$(cat $tempfile | grepp "​^$i;"​ | grep -v "​policy="​ | grep -v "​size="​ | grep -v '​^mpath'​ | grep active | wc -l | awk '​{print $1}')
       pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1)       pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1)
-      ​VMSG="$VMSG $i;​$pathok/​$nbpath"​ # verbose message +      ​verbose="$verbose ​$i;​$pathok/​$nbpath"​ # verbose message 
-      if [ "​$pathok_pct"​ -le "​50"​ ]+      if [ "​$pathok_pct"​ -lt "​50"​ ]
       then       then
         MSG="​$MSG $i;​$pathok/​$nbpath"​         MSG="​$MSG $i;​$pathok/​$nbpath"​
Line 597: Line 650:
  
 rm -f $tempfile 2>/​dev/​null rm -f $tempfile 2>/​dev/​null
-} 
- 
-#​--------------------- 
-count_aix_path() 
-{ 
-if [ $(lsdev -Cc disk | grep -v Available | wc -l | awk '​{print $1}') -ne "​0"​ ] 
-then 
-  MSG="​$MSG WARNING: disks defined"​ 
-  STATUS=$STATE_WARNING 
-else 
-  STATUS=$STATE_OK 
-fi 
- 
-for i in $(lsdev -Cc disk | grep -i mpio | awk '​{print $1}') 
-do 
-  pathok=$(lspath -l $i | grep Enabled | wc -l | awk '​{print $1}') 
-  pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1) 
-  if [ "​$pathok_pct"​ -le "​50"​ ] 
-  then 
-    MSG="​$MSG $i;​$pathok/​$nbpath"​ 
-    if [ $STATUS -lt $STATE_CRITICAL ] 
-    then 
-      STATUS=$STATE_CRITICAL 
-    fi 
-  else 
-    if [ "​$pathok_pct"​ -ne "​100"​ ] 
-    then 
-      MSG="​$MSG $i;​$pathok/​$nbpath"​ 
-      if [ $STATUS -lt $STATE_CRITICAL ] 
-      then 
-        STATUS=$STATE_WARNING 
-      fi 
-    fi 
-  fi 
-done 
-} 
- 
- 
-if [ "​$os"​ = "​Linux"​ ] 
-then 
-  count_linux_path 
-else 
-  if [ "​$os"​ = "​AIX"​ ] 
-  then 
-    count_aix_path 
-  else 
-    echo "##########​ Unknown OS" 
-    STATUS=$STATE_UNKNOWN 
-  fi 
-fi 
- 
-if [ $STATUS -eq $STATE_OK ] 
-then 
-  echo "​OK"​ 
-else 
-  echo "​$MSG"​ 
-fi 
- 
-# For debug 
-if [ "​$1"​ = "​-v"​ ] 
-then 
-  echo "​$VMSG"​ | tr ' ' '​\n'​ 
-fi 
- 
-exit $STATUS 
-</​code>​ 
- 
- 
-==== Check SEA status ==== 
- 
-Check Shared Ethernet Adapter status on VIOS 
-<cli prompt='#'>​ 
-# cat check_sea.sh 
-</​cli>​ 
- 
-<​code>​ 
-#!/bin/ksh 
- 
-#valeurs retour Nagios 
-STATE_OK=0 
-STATE_WARNING=1 
-STATE_CRITICAL=2 
-STATE_UNKNOWN=3 
-STATE_DEPENDENT=4 
-EXITSTATUS=$STATE_UNKNOWN # Default Exit Code as UNKNOWN. 
- 
-#​Recuperation variable 
-hostname=$(hostname) 
-SEA=$(lsdev -Cc adapter | grep Shared|grep -v Defined | wc -l | awk '​{print $1}') 
-now=$(date +"​%d_%m_%Y_%H%M%S"​) 
-#echo $now 
- 
-#​Initialisation 
-echo ""​ > verif_eth_$now.txt 
- 
-#​Verification Carte 
-#echo $SEA 
-if [ $SEA = "​0"​ ] 
-then 
-        #echo ""​ 
-        echo "No SEA available on $hostname"​ 
-        #echo ""​ 
-        EXITSTATUS=2 #Exit status critical 
-        #echo $EXITSTATUS 
-        exit $EXITSTATUS 
-fi 
- 
-#​Verification ensemble des cartes si disponible 
-for ent in $(lsdev -Cc adapter | grep Shared | awk '​{print $1}') 
-do 
-        entstat -d $ent 2>&1 | grep -i status| grep "​Physical Port Link Status"​ > verif_eth_$now.txt 
-        count_all=$(cat verif_eth_$now.txt |wc -l| awk '​{print $1}') 
-        count_up=$(cat verif_eth_$now.txt |grep Up |wc -l| awk '​{print $1}') 
-        #echo $count_up 
-        #echo $count_all 
-        if [ $count_up -ne $count_all ] 
-        then 
-                echo "One or more Ethernet port down" 
-                #cat verif_eth_$now.txt 
-                EXITSTATUS=1 #Exit status Warning 
-                #echo $EXITSTATUS 
-        else 
-                echo "No ethernet port issue" 
-                #cat verif_eth_$now.txt 
-                EXITSTATUS=0 #Exit status OK 
-                #echo $EXITSTATUS 
-        fi 
-done 
-rm verif_eth_$now.txt 
-exit $EXITSTATUS 
-</​code>​ 
- 
-==== Checkpath v2 ==== 
- 
-<​code>​ 
-cat /​usr/​local/​nagios/​libexec/​check_paths.sh 
-#!/bin/sh 
-#@(#) v1.0 Count number of paths per disk 
-# v1.1 add sudo linux 
-# v1.2 change for VSCSI 
- 
-# number of path per type of disk 
-pathviosfc=4 
-pathviosscsi=2 
-pathviossas=1 
-pathlparfc=8 
-pathlparscsi=2 
-pathlparsas=1 
- 
- 
-STATUS=0 
- 
-STATE_OK=0 
-STATE_WARNING=1 
-STATE_CRITICAL=2 
-STATE_UNKNOWN=3 
- 
-MSG=""​ 
- 
-# specified value for nb paths 
-if [ "​$npath"​ == ""​ ] 
-then 
-  nbpath=$pathlparfc 
-fi 
- 
-os=$(uname -a | awk '​{print $1}') 
- 
-grepp() { [ $# -eq 1 ] && perl -00ne "print if /$1/i" || perl -00ne "print if /$1/i" < "​$2";​} 
- 
-#​--------------------- 
-count_linux_path() 
-{ 
-if [ ! -x /​usr/​sbin/​multipath ] 
-then 
-  MSG="​OK:​ no multipathing"​ 
-  STATUS=$STATE_OK 
-else 
-  for i in $(sudo /​usr/​sbin/​multipath -ll | grep mpath | awk '​{print $1}') 
-  do 
-    pathok=$(sudo /​usr/​sbin/​multipath -ll $i | grep -v "​policy="​ | grep -v "​size="​ | grep -v '​^mpath'​ | grep active | wc -l | awk '​{print $1}') 
-    pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1) 
-    if [ "​$pathok_pct"​ -le "​50"​ ] 
-    then 
-      MSG="​$MSG $i;​$pathok/​$nbpath"​ 
-      if [ $STATUS -lt $STATE_CRITICAL ] 
-      then 
-        STATUS=$STATE_CRITICAL 
-      fi 
-    else 
-      if [ "​$pathok_pct"​ -ne "​100"​ ] 
-      then 
-        MSG="​$MSG $i;​$pathok/​$nbpath"​ 
-        if [ $STATUS -lt $STATE_CRITICAL ] 
-        then 
-          STATUS=$STATE_WARNING 
-        fi 
-      fi 
-    fi 
-  done 
-fi 
 } }
  
Line 807: Line 660:
 then then
   MSG="​$MSG WARNING: $nbdisknok disks defined"​   MSG="​$MSG WARNING: $nbdisknok disks defined"​
 +  verbose="​$MSG"​
   STATUS=$STATE_WARNING   STATUS=$STATE_WARNING
 else else
Line 853: Line 707:
   pathok=$(lspath -l $hdisk | grep Enabled | wc -l | awk '​{print $1}')   pathok=$(lspath -l $hdisk | grep Enabled | wc -l | awk '​{print $1}')
   pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1)   pathok_pct=$(echo "​scale=1;​100*$pathok/​$nbpath"​ | bc | cut -d '​.'​ -f1)
-  if [ "​$pathok_pct"​ -le "​50"​ ]+  ​verbose="​$verbose $hdisk;​$pathok/​$nbpath"​ 
 +  ​if [ "​$pathok_pct"​ -lt "​50"​ ]
   then   then
     MSG="​$MSG $hdisk;​$pathok/​$nbpath"​     MSG="​$MSG $hdisk;​$pathok/​$nbpath"​
Line 892: Line 747:
 else else
   echo "​$MSG"​   echo "​$MSG"​
 +fi
 +
 +# For debug
 +if [ "​$1"​ = "​-v"​ ]
 +then
 +  echo "​$verbose"​ | tr ' ' '​\n'​
 fi fi
  
 exit $STATUS exit $STATUS
 </​code>​ </​code>​
 +
 +
 +==== Check SEA status ====
 +
 +Check Shared Ethernet Adapter status on VIOS
 +<cli prompt='#'>​
 +# cat check_sea.sh
 +</​cli>​
 +
 +<​code>​
 +#!/bin/ksh
 +# v1.1 eif check LACP
 +#
 +# Add sudoers:
 +#nagios ALL=(ALL) NOPASSWD: /​usr/​bin/​entstat
 +#nrpe ALL=(ALL) NOPASSWD: /​usr/​bin/​entstat
 +
 +
 +#valeurs retour Nagios
 +STATE_OK=0
 +STATE_WARNING=1
 +STATE_CRITICAL=2
 +STATE_UNKNOWN=3
 +STATE_DEPENDENT=4
 +EXITSTATUS=$STATE_UNKNOWN # Default Exit Code as UNKNOWN.
 +
 +#​Recuperation variable
 +hostname=$(hostname)
 +SEA=$(lsdev -Cc adapter | grep Shared|grep -v Defined | wc -l | awk '​{print $1}')
 +
 +#​Initialisation
 +if [ $SEA = "​0"​ ]
 +then
 +  MSG="​No SEA available on $hostname"​
 +  EXITSTATUS=2 #Exit status critical
 +else
 +  #​Verification ensemble des cartes si disponible
 +  for ent in $(lsdev -Cc adapter | grep Shared | awk '​{print $1}')
 +  do
 +    # check physical ports / links
 +    count_all=$(sudo /​usr/​bin/​entstat -d $ent 2>&1 | grep -i status | grep "​Physical Port Link Status"​ | wc -l | awk '​{print $1}')
 +    count_up=$(sudo /​usr/​bin/​entstat -d $ent 2>&1 | grep -i status | grep "​Physical Port Link Status"​ | grep Up |wc -l | awk '​{print $1}')
 +
 +    if [ $count_up -ne $count_all ]
 +    then
 +      MSG="​One or more Ethernet port down"
 +      EXITSTATUS=1 #Exit status Warning
 +    else
 +      MSG="​No ethernet port issue"
 +      EXITSTATUS=0 #Exit status OK
 +    fi
 +
 +    # check physical ports Speed, must be the same on all ports
 +    nb_speed=$(sudo /​usr/​bin/​entstat -d $ent 2>&1 | grep "​Physical Port Speed" | sort -u | wc -l | awk '​{print $1}')
 +
 +    if [ $nb_speed != "​1"​ ]
 +    then
 +      MSG="​Ethernet Ports bad speed"
 +      EXITSTATUS=1 #Exit status Warning
 +    fi
 +
 +    # check LACP
 +    count_all=$(sudo /​usr/​bin/​entstat -d $ent 2>&1 | grep "​Synchronization"​ | wc -l | awk '​{print $1}')
 +    count_up=$(sudo /​usr/​bin/​entstat -d $ent 2>&1 | grep "​Synchronization"​ | grep '​IN_SYNC'​ | wc -l | awk '​{print $1}')
 +    echo "​count_all=$count_all count_up=$count_up"​ >> /tmp/aaa
 +    if [ $count_up -ne $count_all ]
 +    then
 +      MSG="​LACP not synced"​
 +      EXITSTATUS=1 #Exit status Warning
 +    fi
 +  done
 +fi
 +
 +echo $MSG
 +exit $EXITSTATUS
 +</​code>​
 +
  
aix/scripts_category/nagios_aix_check.1700759872.txt.gz · Last modified: 2023/11/23 18:17 by manu