جهاز الإنذار: البرنامج
خيار آخر هو تعيين برنامج نصي كجهاز إنذار. نظرًا لأن جميع البرامج النصية يتم تشغيلها كمستخدم خادم SKOOR Engine، فقد يكون من الضروري تعديل ملف sudoers على نظام التشغيل لتتمكن من تنفيذها. كن حذرًا للغاية بشأن إعدادات الأذونات، لمنع تعرض النظام للخطر.
المعلمة | الوصف |
|---|---|
$1 | معرف التنبيه |
$2 | نوع الحدث |
3 | حالة الكائن الأصلي |
4 | اسم الكائن الأصلي |
stdin / $MESSAGE | نص قالب الإنذار المرتبط |
أمر الإنهاء الذاتي
للتأكد من أن برنامج الإنذار لن يتسبب في تعليق عملية محرك SKOOR عن طريق الخطأ، استخدم سلسلة الإنهاء الذاتي في بداية الأمر الخارجي:
(sleep 3; kill -9 -$$) &
برنامج جهاز الإنذار - الإخراج إلى واجهة طرف ثالث
من خلال نوع جهاز الإنذار "برنامج"، يمكن إخراج الإنذار إلى ملف نصي أو قاعدة بيانات. يمكن تكوين جزء MESSAGE باستخدام قالب الإنذار (انظر قسم "إضافة قالب إنذار").
برنامج إنذار لإخراج CSV
تعريف موجز لبرنامج جهاز الإنذار:
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
سيحتوي الملف الذي تم إنشاؤه على نظام التشغيل على محتوى مثل التالي بعد إصدار الإنذار:
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'
تعريف برنامج جهاز الإنذار المعقد:
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
تم ربط قالب إنذار بهذه التعريفات بجهاز الإنذار:
;%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;
المحتوى الناتج في الملف:
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';
ملف CSV الناتج في Excel:
برنامج إنذار لإخراج قاعدة البيانات
تعريف قاعدة البيانات للمثال التالي:
/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));"
تعريف برنامج جهاز الإنذار (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');"
مثال على نتيجة في قاعدة بيانات mysql:
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...| +-------+-----------------+-------+--------------+-------------------------------------------------------------------------------------------------------------------------------------+
برنامج إنذار لإخراج snmp-trap
تعريف نص نموذج الإنذار (لن يتم استخدام أي موضوع للفخ):
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
مثال على تعريف جهاز الإنذار:
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"
المصيدة الناتجة:


