Alarmanlage: Programm
Eine weitere Option besteht darin, ein Skript als Alarmgerät festzulegen. Da alle Skripte als SKOOR Engine-Serverbenutzer gestartet werden, muss möglicherweise die sudoers-Datei des Betriebssystems angepasst werden, damit sie ausgeführt werden können. Seien Sie SEHR vorsichtig mit den Berechtigungseinstellungen, um Systemschwachstellen zu vermeiden.
Parameter | Beschreibung |
|---|---|
$1 | Alarm-ID |
$2 | Ereignistyp |
3 | Status des Ursprungsobjekts |
4 | Name des Ursprungsobjekts |
stdin / $MESSAGE | Text der zugehörigen Alarmvorlage |
Selbstbeendender Befehl
Um sicherzustellen, dass ein Alarmprogramm den SKOOR Engine-Prozess nicht versehentlich zum Absturz bringt, verwenden Sie die selbstbeendende Zeichenfolge am Anfang eines externen Befehls:
(sleep 3; kill -9 -$$) &
Alarmgeräteprogramm – Ausgabe an Schnittstelle eines Drittanbieters
Über den Alarmgerätetyp „Programm“ kann der Alarm in eine Textdatei oder Datenbank ausgegeben werden. Der Teil MESSAGE kann mit der Alarmvorlage konfiguriert werden (siehe Abschnitt „Alarmvorlage hinzufügen“).
Alarmprogramm für eine CSV-Ausgabe
Kurze Definition des Alarmgeräteprogramms:
OUT_FILE="/tmp/alarm_out_$1.txt" MESSAGE=`cat -` # ID=$1, Event_type=$2, Origin_state=$3, Origin_Object_Name=$4 echo "$1; $2; $3; $4; $MESSAGE " > $OUT_FILE
Die auf dem Betriebssystem generierte Datei hat nach Auslösen eines Alarms folgenden Inhalt:
91249; AlarmOpened; Major; All Services; 2017.08.25 10:51:25 (MET) AlarmOpened Major on SLO 'All Services' SLO 'All Services' is in state 'Major' as SLO 'Services Zurich' is in state 'Major' as Job 'Tcp' on 'SKOOR Server Winterthur' is in state 'Major'
Komplexe Alarmgerät-Programmdefinition:
OUT_FILE="/tmp/alarm_out_$1.csv" # Header echo "ID(0);EVENT_TYPE(1); TIMESTAMP_CURRENT(2); TIMESTAMP_OPENED(3); DURATION(4); COMMENT(5); CURRENTLY_ASSIGNED(6); SOURCE_OBJECT_TYPE(7); SOURCE_OBJECT_NAME(8); SOURCE_DEVICE_ADDRESS(9); SOURCE_DEVICE_NAME(10); SOURCE_JOB_INFO(11); SOURCE_OBJECT_STATE(12); SOURCE_VALUES(13); SOURCE_ALARM_LIMITS(14); SOURCE_S_ALARM_INFO (15); SOURCE_L_ALARM_INFO(16); SOURCE_F_ALARM_INFO(17); ORIGIN_OBJECT_NAME(18); ORIGIN_DEVICE_ADDRESS(19); ORIGIN_ DEVICE_NAME(20); ORIGIN _JOB_INFO(21); ORIGIN_OBJECT_TYPE(22); ORIGIN_OBJECT_STATE(23); ORIGIN_VALUES(24); ORIGIN_ ALARM_LIMITS(25); ORIGIN _S_ALARM_INFO(26); ORIGIN _L_ALARM_INFO(27); ORIGIN _F_ALARM_INFO(28); REASON(29)" > $OUT_FILE # Data echo "$1"`cat -` >> $OUT_FILE
Eine Alarmvorlage mit der folgenden Definition des Hauptteils wurde mit dem Alarmgerät verknüpft:
;%e; %t; %T; %d; %c; %q; %n; %a; %A; %i; %o; %s; %v; %h; %0; %1; %2; %-n; %-a; %-A; %-I; %-o; %-s; %-v; %-h; %-0; %-1; %-2; %r;
Ergebnisinhalt in der Datei:
ID(0);EVENT_TYPE(1); TIMESTAMP_CURRENT(2); TIMESTAMP_OPENED(3); DURATION(4); COMMENT(5); CURRENTLY_ASSIGNED(6); SOURCE_OBJECT_TYPE(7); SOURCE_OBJECT_NAME(8); SOURCE_DEVICE_ADDRESS(9); SOURCE_DEVICE_NAME(10); SOURCE_JOB_INFO(11); SOURCE_OBJECT_STATE(12); SOURCE_VALUES(13); SOURCE_ALARM_LIMITS(14); SOURCE_S_ALARM_INFO (15); SOURCE_L_ALARM_INFO(16); SOURCE_F_ALARM_INFO(17); ORIGIN_OBJECT_NAME(18); ORIGIN_DEVICE_ADDRESS(19); ORIGIN_ DEVICE_NAME(20); ORIGIN _JOB_INFO(21); ORIGIN_OBJECT_TYPE(22); ORIGIN_OBJECT_STATE(23); ORIGIN_VALUES(24); ORIGIN_ALARM_LIMITS(25); ORIGIN _S_ALARM_INFO(26); ORIGIN _L_ALARM_INFO(27); ORIGIN _F_ALARM_INFO(28); REASON(29) 91261;AlarmSeverityUp; 2017.08.25 11:05:11 (MET); 2017.08.25 10:59:57 (MET); 5m14s; ; ; All Services; ; ; ; SLO; Major; ; ; 0; 1; 2; Icmp; localhost; SKOOR Server Winterthur; 877; Job; Major; ; Warning: if Any Error code <> 0 (No error) Major: if Any Packet loss = 100.00 %; 0; 1; 2; SLO 'All Services' is in state 'Major' as SLO 'Services Zurich' is in state 'Major' as Job 'Icmp' on 'SKOOR Server Winterthur' is in state 'Major';
Ergebnis-CSV in Excel:
Alarmprogramm für eine DB-Ausgabe
DB-Definition für das folgende Beispiel:
/usr/local/bin/mysql -uroot -pxxxx databasename -e"create table alarmlog (ID integer(10),REASON varchar(20),STATE varchar(20),DEVICE varchar(60),MESSAGE varchar(180));"
Alarmgeräteprogrammdefinition (mysql):
MESSAGE=`cat - | tr "\n" " " | tr "'" "*"`
ID=$1
REASON=$2
STATE=$3
DEVICE=$4
(sleep 3; kill -9 -$$) &
echo $MESSAGE > /tmp/test_log.log
/usr/bin/mysql -uroot -pxxxxx databasename -e "insert into alarmlog (ID,REASON,STATE,DEVICE,MESSAGE) values ('$ID','$REASON','$STATE','$DEVICE','$MESSAGE');"
Beispiel für ein Ergebnis in der MySQL-Datenbank:
MariaDB [databasename]> select * from alarmlog; +-------+-----------------+-------+--------------+-------------------------------------------------------------------------------------------------------------------------------------+ | ID | REASON | STATE | DEVICE | MESSAGE | +-------+-----------------+-------+--------------+-------------------------------------------------------------------------------------------------------------------------------------+ | 91307 | AlarmOpened | Minor | All Services | 2017.08.25 12:53:09 (MET) AlarmOpened Minor on SLO *All Services* SLO *All Services* is in state *Minor* as SLO *Services Zurich*...| | 91307 | AlarmSeverityUp | Major | All Services | 2017.08.25 12:53:18 (MET) AlarmSeverityUp Major on SLO *All Services* SLO *All Services* is in state *Major* as SLO *Services Zur...| | 91307 | AlarmClosed | Ok | All Services | 2017.08.25 12:53:24 (MET) AlarmClosed Ok on SLO *All Services* SLO *All Services* is in state *Ok* as SLO *Services Zurich* is in...| +-------+-----------------+-------+--------------+-------------------------------------------------------------------------------------------------------------------------------------+
Alarmprogramm für SNMP-Trap-Ausgabe
Definition des Alarmvorlagentextes (für den Trap wird kein Betreff verwendet):
EVENT_TYPE: %e; TIMESTAMP_CURRENT: %t; TIMESTAMP_OPENED: %T; DURATION: %d; COMMENT: %c; CURRENTLY_ASSIGNED: %q; SOURCE_OBJECT_NAME: %n; SOURCE_DEVICE_ADDRESS: %a; SOURCE_DEVICE_NAME: %A; SOURCE_JOB_INFO: %i; SOURCE_OBJECT_TYPE: %o; SOURCE_OBJECT_STATE: %s; SOURCE_VALUES: %v; SOURCE_ALARM_LIMITS: %h; SOURCE_S_ALARM_INFO: %0; SOURCE_L_ALARM_INFO: %1; SOURCE_F_ALARM_INFO:%2; ORIGIN_OBJECT_NAME: %-n; ORIGIN_DEVICE_ADDRESS: %-a; ORIGIN_ DEVICE_NAME: %-A; ORIGIN _JOB_INFO: %-I; ORIGIN_OBJECT_TYPE:: %-o; ORIGIN_OBJECT_STATE: %-s; ORIGIN_VALUES: %-v; ORIGIN_ ALARM_LIMITS: %-h; ORIGIN _S_ALARM_INFO: %-0; ORIGIN _L_ALARM_INFO: %-1; ORIGIN _F_ALARM_INFO:%-2; REASON: %r
Beispiel für eine Alarmgerätedefinition:
MESSAGE=`cat -` /usr/local/bin/snmptrap -v 1 -c public 10.1.1.131 . 10.1.1.134 6 0 "" . s "ID: $1, EVENT_TYPE: $2, STATE: $3, NAME: $4 " . s "$MESSAGE"
Resultierende Trap:


