Beispielscripts für benutzerdefinierte Alerttypen

Die folgenden Beispiele erläutern die Erstellung von Scripts für benutzerdefinierte Alerttypen für den Umgang mit verschiedenen Alertszenarios.

Alert bei hoher Systemauslastung generieren

Das folgende Shell-Script generiert einen kritischen Alert, wenn die Auslastung eines Dateisystems auf dem Datenbankserver 90 Prozent übersteigt.
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge 90 ]; then
  returnValue = 2
    echo "Ab $(date) auf $(hostname) nicht genügend Speicher \"$partition ($usep%)\" verfügbar" 
else returnValue = 0
fi
done
exit $returnValue

Alert bei geringem freiem Speicherbereich im Speicher generieren

Das folgende Shell-Script generiert einen Warnungsalert, wenn der freie Speicherbereich weniger als 10 MB beträgt, und einen kritischen Alert, wenn der freie Speicherbereich weniger als 5 MB beträgt.
if [cat /proc/meminfo | grep SwapFree  | cut –d ‘:' –f2 -ge 200000]
exit 0
else if [cat /proc/meminfo | grep SwapFree  | cut –d ‘:' –f2 -lt 100000]
exit 1
else if [cat /proc/meminfo | grep SwapFree  | cut –d ‘:' –f2 -lt 50000]
exit 2

Alert für Datenbankbackup generieren

In diesem Beispiel generiert das reine SQL-Script einen kritischen Alert, wenn die letzte Backup-Operation für eine Produktionsdatenbank an einem bestimmten Datum und zu einer bestimmten Uhrzeit stattgefunden hat.
SELECT CASE last_backup 
WHEN ‘2012-01-06-22.47.42.000000' THEN 2 
ELSE 0 
END AS returnvalue 
FROM sysibmadm.snapdb 

Alert für Diagnosesätze generieren

In diesem Beispiel generiert das reine SQL-Script einen Warnungsalert, wenn die Stufe 'W' (Warnung) in den allgemeinen DB2-Diagnoseprotokollen protokolliert wird, und einen kritischen Alert, wenn die protokollierte Stufe 'E' (Fehler), 'C' (Kritisch) oder 'S' (Schwerwiegend) ist.
SELECT CASE level 
WHEN ‘W' THEN 1 
ELSE WHEN ‘E' OR ‘C' OR ‘S' THEN 2 
ELSE 0 
END AS returnvalue 
FROM TABLE (PD_GET_DIAG_HIST( 'MAIN','E', '', 
   CAST (NULL AS TIMESTAMP), CAST (NULL AS TIMESTAMP) ) ) AS T

Feedback