مدونة NetworkSet

Embedded Event Manager احد كنوز سيسكو

في أول خطواتي في عالم الشبكات عندما كنت اطّلع على المشاكل الفنية التي تحدث في الشبكات، الكثير منها تكون مشاكل بسيطة يمكن حلها ذاتياُ من دون تدخل أحد، وهذا ما جعلني أتساءل هل من المعقول أن لا توجد طريقة ما لحل هذه المشاكل بصورة آلية؟ أو على الأقل تسهيل الأمر على مديري الشبكات , وذلك بإعطائهم معلومات عن الأخطاء والتغييرات التي تحصل على الشبكة بشكل آلي .ومن المؤكد أنه توجد طريقة ما كما كنت أتوقع ,فعند حصول خطأ في احد الراوترات أو حصول حدث معيّن مثل تغير في حالة أحد المنافذ أو في أحد المسارات فهناك جهاز سيرفر في الشبكة يكون مسؤول عن متابعة وإدارة هذه الأحداث وإبلاغ مدير الشبكة عن التغييرات التي حصلت وجمع المعلومات وإعطاء التقارير, ويقوم بأخذ الإجراءات اللازمة لمعالجة هذه المشكلة وحلّها, أي يكون عمله كعمل أجهزة السيطرة والتحكم في المصانع .
إلى هنا والأمور تسير على ما يرام , ولكن ماذا يحصل لو أن هذه المشكلة كانت في اللنك بين الراوتر والسيرفر, فكيف يكون الحل؟ وكذلك فإن عملية إعادة تشغيل الراوتر عند حدوث مشاكل قد تكلف الكثير بالنسبة لعمل الشبكة وغيرها من المشاكل التابعة
لذلك لم تتوانى سيسكو وكما عهدناها دائماُ عندما جعلت الراوترات هي نفسها من تقوم بهذه العمليات وقامت بدمج ذلك السيرفر بداخل الراوتر، لذلك جاءت بالمدعو بـ Embedded Event Manager أحد كنوز سيسكو ومحور مقالنا اليوم .

إذن Embedded Event Manager بشكل عام: هو تقنية في نظام تشغيل سيسكو, تسمح لنا بتنفيذ كود برمجي أو مجموعة أوامر عند حصول حدث معيّن. أو بصورة أخرى يمكن اعتبارها كلغة برمجية في نظام التشغيل, تسمح لنا بإضافة وظائف أخرى للنظام وتطويعه حسب رغبتنا.
أتوقع أن الفكرة لم تصل, لذلك سأعرّفه بشكل مباشر, فهي ميزة أو خاصيّة توجد في بعض أنظمة التشغيل الخاصة بسيسكو تجعل الراوتر يتكيف حسب متطلبات المستخدم اعتماداً على الأحداث التي تطرأ على الراوتر, ومن الممكن أن يكون القرار بإرسال إيميل أو بتغيير إعدادات الراوتر مثلاً . آخر إصدار للـ EEM هو 3.1 ضمن نظام تشغيل سيسكو الاصدار M(1)15.0.

كيف يعمل Embedded Event Manager؟
لنتعرف على طريقة عمله ونلقي نظرة سريعة على مكوناته والتي هي: السيرفر , كاشف الحالات , ومترجم الحالات. المصطلحات قد تكون غير واضحة ولكن لم أجد ترجمة مفهومة اقرب من هذه .
السيرفر: وهو المسؤول عن الربط بين كاشف الحالات ومترجم الحالات.
كاشف الحالات: وهو برنامج يقوم بمراقبة الأحداث والإبلاغ عنها عند مطابقة الحدث مع الشرط وهو يعُتبر  عقل الـ EEM، وممكن أن يكون أكثر من نوع مثل : Timer, SNMP, CLI. والإصدارات الجديدة تحتوي على أنواع كثيرة .
مترجم الحالات: يقوم بترجمة الحالة التي انطبق عليها الشرط والمستلمة من كاشف الحالات ,وتحديد العمل الذي يجب اتخاذه تبعاً لهذه الحالة, أي ماذا يجب أن ينفّذ عند اكتشاف الحالة. ويكون على نوعين وهما applets و scripts.


ما هي الطريقة التي نبرمج بها الايعازات؟
يدعم  EEM ثلاث طرق للبرمجة وهي:

  • Applets: وتكون برمجتها مباشرة عن طريق أوامر الـCLI  الخاص بالراوتر.
  • TCL: هذه الطريقة تستخدم في كتابة البرامج المعقدة وهي تعتبر لغة برمجية بحد ذاتها.
  • IOS.sh: ليست كل إصدارات IOS من سيسكو تدعم هذه الطريقة ,إنما  الإصدارات الحديثة منها فقط، وهي تشبه إلى حد ما كتابة الأوامر في اللينكس عن طريق الـ shell.

مثال لطريقة برمجة applet

كما قلنا إن طرق البرمجة ثلاثة وللاختصار سنقوم بأخذ أول وأشهر طريقة, وهي: applet ونشرحها مع التطبيق، بداية لنفترض أننا نريد أن نجعل الراوتر يرسل لنا إيميل عندما يقوم شخص ما بالدخول عن طريق الـ ssh. ولبرمجة applet للقيام بهذه العملية يجب أن نعمل event يقوم بمراقبة رسائل الـ  logالتي يصدرها الراوتر وعند تطابق الحالة المطلوبة يقوم بتنفيذ هذا الـ applet.

أولا يجب أن نعرف رسالة log التي يصدرها الراوتر عند الدخول عن طريق ssh و هي :

Dec 17 16:27:53.993: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: cisco] [Source: 172.16.5.2] [localport: 22] at 17:27:53 Rome Fri Dec 17 2010

الآن يجب تعريف متغيرات الإيميل للراوتر :

Cisco's
Cisco(config)#event manager environment _email_to your-to-mail@domain.com
Cisco(config)#event manager environment _email_server your.mail.server
Cisco(config)#event manager environment _email_from your-from-mail@domain.com

بعد ذلك جاء وقت كتابة الـ applet:

Cisco's
Cisco (config)#event manager applet login-ssh-ok
Cisco(config-applet)#event syslog pattern “SEC_LOGIN-5-LOGIN_SUCCESS: Login Success.*[localport: 22]”
Cisco(config-applet)#action 1.0 mail server “$_email_server” to “$_email_to” from “$_email_from” subject “$_event_pub_time: Login via SSH” body “$_syslog_msg”
Cisco(config-applet)#action 1.5 syslog msg priority 5 “LOGIN SUCCESS – Mail Sent”

دعونا نفصل هذا الـ applet:

الأمر الأول:

Cisco's
Cisco(config)#event manager applet login-ssh-ok

event manager applet: لإنشاء الـ applet وتسجيله بداخل EEM.
login-ssh-ok : اسم الـ applet.

الأمر الثاني :

Cisco's
Cisco(config-applet)#event syslog pattern “SEC_LOGIN-5-LOGIN_SUCCESS: Login Success.*[localport: 22]”

event syslog pattern : لتحديد رسالة syslog التي يصدرها الراوتر ليقوم البرنامج بإرسال الإيميل.
وبعدها نكتب الرسالة المطلوبة بين علامتي اقتباس “”.
في هذا المثال استخدمنا event من نوع syslog وفي ما يلي أنواع أخرى مثل:
cli : لمراقبة إدخالات الـ cli
ioswdsysmon : لمراقبة الذاكرة والمعالج
nf : لمراقبة أحداث NetFlow
 : noneيستخدم عندما نريد تشغيل الأحداث يدوياً
snmp  : لمراقبة MIB
syslog  : لمراقبة رسائل syslog

الأمر الثالث:

Cisco's
Cisco (config-applet)#action 1.0 mail server “$_email_server” to “$_email_to” from “$_email_from” subject “$_event_pub_time: Login via SSH” body “$_syslog_msg”

action 1.0: وهو العمل الذي يجب اتخاذه عند تطابق الشرط ,وهو في هذا المثال يقوم  بإرسال إيميل إلى العنوان المحدد بـ $_email_to التابع للسيرفر $_email_server والقادم من $_email_from وعنوان الرسالة يحتوي على وقت الدخول والمتمثل بالمتغير $_event_pub_time إضافة إلى عبارة Login via SSH ,أما محتويات الرسالة هي رسالة الـ log نفسها التي حصل عندها الحدث والمتمثلة بالمتغير $_syslog_msg. أما الرقم 1.0 يسمى tag ويستخدم لتمييز العمل المطلوب اتخاذه إذا أدخلنا أكثر من عمل, أما إذا كان إدخال واحد فوضع الـ tag اختياري ويمكن أن يكون أرقام أو حروف ولكن بشروط معينة .

 

الأمر الرابع:

Cisco's
Cisco(config-applet)#action 1.5 syslog msg priority 5 “LOGIN SUCCESS – Mail Sent”

فهو لإنشاء رسالة syslog لإعلام اليوزر بنجاح الدخول وإنه قد تم إرسال إيميل تنبيه بهذه الجلسة .
بعد وصول الإيميل للعنوان المحدد تكون محتوياته كالتالي :

object: Dec 17 19:22:36.203: Login success via SSH
body: Dec 17 19:22:36.195: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user:cisco ] [Source: 192.168.10.12] [localport: 22] at 20:22:36 Rome Fri Dec 17 2010
وكذلك في هذا المثال استخدمنا action من نوع  mailومن نوع syslog وفي ما يلي أنواع أخرى مثل:
 : cliلتنفيذ ايعازات الـ cli
 mail/syslog/snmp-trap/cns-event : لإرسال رسائل mail، syslog، snmp
increment/decrement/append  : للتعديل على المتغيرات
if/else/elseif/while/end/break/continue/foreach  : العمليات الشرطية
wait  : لعمل انتظار
reload/force-switchover  : لاعدادت النظام
add/subtract/multiply/divide : معروفة ماتحتاج شرح

ولاستعراض الـ applets المسجلة سابقاً , نستعمل الأمر التالي :
show event manager policy registered
إذا لم يتم كتابة الحدث, فلن يتم تسجيل الـ applet وسوف تظهر رسالة خطأ عند الخروج من applet configuration mode.

في النهاية فإن الـ EEM حقيقةً, يعتبر إضافة رائعة لأنظمة تشغيل سيسكو وسبب اختياري لهذا الموضوع  غير السبب السابق, فهو لقلة وجود المصادر الانكليزية التي تشرح الموضوع بشكل وافي لولا موقع سيسكو وايضاً انعدامها في المصادر العربية.
كذلك للعلم فإن لدى سيسكو أكثر من برنامج يقوم بوظيفة مشابهة لعمل EEM مثل:
(Embedded Menu Manager (EMM و Embedded Resource Manager (ERM) و Embedded Syslog Manager (ESM) ولعلي أحاول في الأعداد القادمة من المجلة إكمال السلسلة. وأعتذر عن الاختصار وعدم التوسع بالأمثلة كون الموضوع متنوع ويحتاج إلى عدة مقالات لتغطيته.

Exit mobile version