Embedded Event Manager 2.kısım

Merhaba, yazının ilk kısmında Embedded Event Manager’ın çalışma mantığı, özellikleri, EEM ile ne tipte kurallar/uygulamalar yapılabileceği hakkında bilgiler vermiştik, yazının ikinci kısmındaysa olabildiğince örnekler vererek EEM hakkında daha detaylı bilgi sahibi olacağız. EEM’le ile yazdığımız applet, script vs. geniş ve çok çeşitli türlerde gerçeklenebilmekte; burada yazacağım örneklerin bir kısmı aktif olarak kullandığımız örnekler, bir kısmıysa nette araştırırken beğendiklerim, bu örneklerden işinize yarayacağını düşündüklerinizi kullanabilir, kendinize göre modifiye edebilir, yada kendi appletlerinizi yazabilirsiniz.

– “reload” komutunu etkisiz hale getirme:

AgciyizRouter(config)#event manager applet NoReload
AgciyizRouter(config-applet)# event cli pattern “reload” sync no skip yes
AgciyizRouter(config-applet)# action 1.0 syslog priority errors msg “Bu cihazla Reload komutunu çalistiramasiniz”

Appletimizi hazırladık, şimdi elle cihazda ‘reload’ komutunu işlettiğimizde applet otomatik olarak devreye girecektir;
AgciyizRouter(config)#reload
AgciyizRouter#
*%SYS-5-CONFIG_I: Configured from console by console
*Aug 12 19:09:44: %HA_EM-3-LOG: NoReload: Bu cihazla Reload komutunu çalistiramasiniz
*%SYS-5-CONFIG_I: Configured from console by console

router relaod ettikten sonra oluşabilecek konfigurasyon hatalarının giderilmesi:

Her ne kadar konfigursayon dosyası NVRAM’da tutuluyorsada ,bazı zamanlarda router reload ettikten sonra bu dosya işleme geçmeyebilir ve running-config’de görünmeyebilir. Kaybolan komutları tekrar elle girmek güzel bir çözüm değil :), EEM’yle SYS-5-RESTART syslog mesajını aktif hale getireceğimiz bir appletle bunu halledebiliriz. (Bu örnekte CSCsf32390 bug’ı için Cisco’nun önerdiği appleti göstereceğim)

event manager applet add-buffer
event syslog occurs 1 pattern “%SYS-5-RESTART: System restarted”
action 1.0 cli command “enable”
action 2.0 cli command “configure terminal”
action 3.0 cli command “buffers particle-clone 16384”
action 4.0 cli command “buffers header 4096”
action 5.0 cli command “buffers fastswitching 8192”
action 6.0 syslog msg “Reinstated buffers command”

kritik interface’ler asla “down” olmasın 🙂

Örneğin Loopback0 interface’i kritik ve kazayla dahi olsa asla down olmamasını istiyorsunuz, böyle bir appletle bunu sağlamamız mümkün;

event manager applet Lo0izle
event syslog pattern “Interface Loopback0.* down” period 1
action 2.0 cli command “enable”
action 2.1 cli command “config t”
action 2.2 cli command “interface lo0”
action 2.3 cli command “no shutdown”
action 3.0 syslog msg “Bu Interface’in down olması EEM tarafından engellenmistir”
!

denemek amacıyla elle Loopback0 interface’ini kapatmaya çalıştığımızda applet devreye girecek be tanımladığımız syslog mesajı gözükecektir.

AgciyizRouter (config)#int lo0
AgciyizRouter (config-if)#shut
AgciyizRouter (config-if)#end
AgciyizRouter #
*Jun 6 11:04:52.006: %SYS-5-CONFIG_I: Configured from console by console
*Jun 6 11:04:53.052: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Jun 6 11:04:55.536: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Jun 6 11:04:56.586: %HA_EM-6-LOG: Lo0izle: Bu Interface’in down olması EEM tarafından engellenmistir
*Jun 6 11:04:56.594: %SYS-5-CONFIG_I: Configured from console by vty0

zamanı ayarlamak

Cron timer komutunda sırasıyla 5 rakamsal değer girerek belirli bir saatte yada belirli bir aralıkta appletimizi uygulayabiliriz;

  1. dakika………….. 0 – 59
  2. saat……………… 0 – 23
  3. ayın kaçıncı günü olacağı….. 1 – 31
  4. yılın kaçıncı ayı olacağı…. 1 – 12
  5. haftanın kaçıncı günü olacağı……. 0 – 6 (Pazar == 0)

event timer cron cron_entry “45 18 15 * *” — her ayın 15inde saat 18:45 için uygulanır
event timer cron cron_entry “15 1 15 1 *” — 15 Ocak saat 1:15 te uygulanır
event timer cron cron_entry “0 9 * * 1-5″ —Pazartesi-Cuma arası saat 9:00 arası uygulanır
event timer cron cron_entry “5 8,16 * * 0,6″ — Perşembe veya Pazar saat 8:05 veya 4:05’te uygulanır

ufak bir örnek:

event manager applet VLAN_SHUT
event timer cron cron-entry “0 9 11 11 0”
action 1.0 cli command “enable”
action 1.1 cli command “conf t”
action 1.2 cli command “int ran vlan 1-15”
action 1.3 cli command “shut”
action 1.4 cli command “do wr”

# appletimiz 11 kasım Pazar günü saat 09:00’da 1-15 arası vlan leri kapatıyor, kapalı kalmasını istediğimiz süre sonunda tekrar vlan’leri açmak istersek o vakti belirten bir applet daha yazmamız gerektiğini hatırlatayım 🙂

kendi kendini yok eden applet 🙂

event manager applet BenAslindaYokum
event cli pattern “show run” sync yes
action 111 cli command “enable”
action 112 cli command “show run | excl applet|event|action”
action 113 puts “$_cli_result”
action 114 set _exit_status “0”

#appletimizin yaptığı asıl iş sh run çıktısını filtrelenmiş çıktısıyla değiştirmek, sinsice değil mi 🙂

Gelişmiş Örnekler
————————-

– “down” durumunu mail ile bilgilendirmek

Bu örnekte öncelikle yaratacağımız case için gerekli olan, belirli bir IP adresini izleyip bu down olması durumunda sorunu mail atan bir IP SLA konfigürasyonu hazırlayacağız. IP SLA konfu 198.19.8.4 IPsinde paket kaybı olup olmadığını takip edecek, burada bu down durumunun kısa bir gidip gelme değil kalıcı olduğunu saptayabilmemiz için bu IP’yi isteğimize göre track edeceğiz. 8 saniye boyunca unreachable olması durumunda down, 10 saniye reachable olması durumunda tekrar up olacak.

AgciyizRouter(config)#ip sla 11
AgciyizRouter(config)#icmp-echo 198.19.8.4
AgciyizRouter(config)#timeout 500
AgciyizRouter(config)#frequency 3
AgciyizRouter(config)#ip sla schedule 11 life forever start-time now
AgciyizRouter(config)#track 1 ip sla 11 reachability
AgciyizRouter(config)#delay down 8 up 10

Router’ın erişebildiği bir dahili email sunucusu olduğunu varsayıyoruz,

AgciyizRouter(config)#event manager environment _email_server 10.1.1.4
AgciyizRouter(config)#event manager environment _email_to isim@sirketim.com
AgciyizRouter(config)#event manager environment _email_from isim@sirketim.com

Şimdiyse belirlediğimiz zaman aralıklarında down olması durumunda bize mail ile haber veren appletimizi yazarsak;

event manager applet email_server_erisilemez
event track 1 state down
action 1.0 syslog msg “Houston we have a problem.

Ping failed, server unreachable!”
action 1.1 cli command “enable”
action 1.2 cli command “del /force flash:server_unreachable”
action 1.3 cli command “show clock | append server_unreachable”
action 1.4 cli command “show ip arp 198.19.8.4 | append server_unreachable”
action 1.5 cli command “show ip route 198.19.8.4 | append server_unreachable”
action 1.6 cli command “show interface FastEthernet0/1/1 | append server_unreachable”
action 1.7 cli command “more flash:server_unreachable”
action 1.8 mail server “$_email_server” to “$_email_to” from “$_email_from” subject “Server Unreachable: ICMP-Echos Failed” body “$_cli_result”
action 1.9 syslog msg “Server erisilemez alarmı email adresinize gonderildi!!”

30 dakika ping failure sonrası otomatik reload

AgciyizRouter(config)#ip sla 10
AgciyizRouter(config)#icmp-echo 10.255.251.64 source-interface Loopback0
AgciyizRouter(config)#request-data-size 16384
AgciyizRouter(config)#frequency 10
AgciyizRouter(config)#ip sla schedule 10 life forever start-time after 00:30:00

Applet:

event manager applet down_RELOAD
event snmp oid 1.3.6.1.4.1.9.9.42.1.2.9.1.6.10
get-type exact entry-op lt entry-val “2” poll-interval 10
trigger occurs 179 period 1790
action 01.0 syslog msg “30 dakikadır ping response yok”
action 02.0 syslog msg “reloading…”
action 03.0 reload

NOT: OID string’indeki son sayı IP SLA numarasıyla, polling frequency IP SLA frequency değeriyle aynı olmak zorunda.

Bu yazıda EEM’ye aşina olmak adına birkaç örnek paylaşmaya çalıştım, umarım faydalı olmuştur 🙂 elime benzer örnekler geçtikçe sitede paylaşacağım, sağlıcakla kalın..

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir