Icinga2 - Check erstellen: Unterschied zwischen den Versionen

Aus QBWiki
Zur Navigation springenZur Suche springen
Zeile 17: Zeile 17:
  
  
==== Beispiel: Tage seit dem letzten Update mit Paketmanager YUM ====
+
====Beispiel: Tage seit dem letzten Update mit Paketmanager YUM====
  
 
Um z.B. zu überprüfen, wann auf einem Server mit Yum als Paketmanager das letzte mal geupdatet wurde,
 
Um z.B. zu überprüfen, wann auf einem Server mit Yum als Paketmanager das letzte mal geupdatet wurde,
 
haben wir zwei Möglichkeiten:
 
haben wir zwei Möglichkeiten:
; Als root-user direkt über einen Befehl
+
 
: Nachteil: Authentifizierung als Root Benutzer
+
;Als root-user direkt über einen Befehl
: Vorteil: Kein Skript auf dem Zielrechner notwendig
+
:Nachteil: Authentifizierung als Root Benutzer
 +
:Vorteil: Kein Skript auf dem Zielrechner notwendig
  
 
;Als icinga-user über ein selbstgeschriebenes Plugin
 
;Als icinga-user über ein selbstgeschriebenes Plugin
: Vorteil: kein Zugriff über den Root account notwendig
+
:Vorteil: kein Zugriff über den Root account notwendig
: Nachteil: allerdings einen Eintrag in der sudoers Datei
+
:Nachteil: allerdings einen Eintrag in der sudoers Datei
  
  
Zeile 76: Zeile 77:
  
 
echo "Unknown: ${diff_msg}"
 
echo "Unknown: ${diff_msg}"
 +
exit 4
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Im Idealfall liegt das Skript auf dem Remoteserver unter <code>/usr/lib64/nagios/plugins</code>.
 
Im Idealfall liegt das Skript auf dem Remoteserver unter <code>/usr/lib64/nagios/plugins</code>.

Version vom 19. März 2019, 08:45 Uhr


Beispiel: Tage seit dem letzten Update mit Paketmanager YUM

Um z.B. zu überprüfen, wann auf einem Server mit Yum als Paketmanager das letzte mal geupdatet wurde, haben wir zwei Möglichkeiten:

Als root-user direkt über einen Befehl
Nachteil: Authentifizierung als Root Benutzer
Vorteil: Kein Skript auf dem Zielrechner notwendig
Als icinga-user über ein selbstgeschriebenes Plugin
Vorteil: kein Zugriff über den Root account notwendig
Nachteil: allerdings einen Eintrag in der sudoers Datei


Beispielskript: check_yum -c [crit days] -w [warn days]

 1 #!/bin/bash
 2 while getopts ":c:w:" opt ; do
 3   case $opt in
 4     c)
 5       crit_days="$OPTARG"  ;;
 6     w)
 7       warn_days="$OPTARG"  ;;
 8     \?)
 9       echo "Invalid Option -$OPTARG" >&2
10   esac
11 done
12 
13 # Centos , YYYY-MM-DD
14 last_update="$(yum history list all | egrep ' U |Update' | head -n1 |awk '{print $6}')"
15 last_update_unix_time="$(date -d "${last_update}" +%s)"
16 
17 cur_date="$(date +%s)"
18 
19 timediff_s="$((${cur_date} - ${last_update_unix_time}))"
20 timediff_m="$((${timediff_s} / 60))"
21 timediff_h="$((${timediff_m} / 60))"
22 timediff_d="$((${timediff_h} / 24))"
23 timediff_w="$((${timediff_d} / 7))"
24 
25 diff_msg="Last update was ${timediff_d} days ago"
26 
27 
28 if [[ ${timediff_d} -ge ${crit_days} ]] ; then
29   echo "Critical: ${diff_msg}"
30   exit 2
31 fi
32 
33 if [[ ${timediff_d} -ge ${warn_days} ]] ; then
34   echo "Warning: ${diff_msg}"
35   exit 1
36 fi
37 
38 if [[ ${timediff_d} -lt ${warn_days} ]] ; then
39   echo "OK: ${diff_msg}"
40   exit 0
41 fi
42 
43 echo "Unknown: ${diff_msg}"
44 exit 4

Im Idealfall liegt das Skript auf dem Remoteserver unter /usr/lib64/nagios/plugins. Unser check-plugin, dass wir auf unserem Icinga2 Server erstellen müssen, muss quasi folgenden Befehl ausführen

/usr/lib64/nagios/plugins/check_by_ssh -H 213.147.9.200 -l icinga -i ~/.ssh/id_ed25519 -C 'sudo /usr/lib64/nagios/plugins/check_yum -c15 -w10'

Dies können wir wie folgt simulieren:

1 su - icinga -s /bin/bash -c "/usr/lib64/nagios/plugins/check_by_ssh -H 213.147.9.200 -l icinga -i ~/.ssh/id_ed25519 -C 'sudo /usr/lib64/nagios/plugins/check_yum -c15 -w10'"