Beispielscripts für benutzerdefinierte Alerttypen

Die folgenden Beispiele erläutern die Erstellung von Scripts unter Linux 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.
#!/bin/sh
df -kP | grep -vE 'ˆFilesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
echo usep is $usep
if [ $usep -ge 90 ]; then
    returnValue=-2
    echo "Running out of space on ($usep%)\" on $(hostname) as on $(date)" 
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.
freemem=$(cat /proc/meminfo | grep SwapFree  | cut -d ":" -f 2 | awk '{print $1}')
echo freemem is $freemem
if [ $freemem -ge 2000000 ]; then
  returnValue=0
else
  returnValue=-1
fi
exit $returnValue

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 
	(SELECT TIMESTAMP(CURRENT DATE - 7 DAYS, CURRENT TIME) FROM sysibm.sysdummy1)
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
  WHEN 'E' THEN -2
  WHEN 'C' THEN -2
  WHEN '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