O EEM – Embedded Event Manager é um subsistema dentro do IOS, que permite monitorar eventos em real time, bem como executar medida corretivas ou informativas com base nestes eventos.
É possivelmente a funcionalidade mais “cool” que a Cisco já colocou no roteador. Com o EEM podemos criar ações customizadas para uma dezena de situações, tendo como limite apenas a imaginação.
Por exemplo, se uma interface fica down, automaticamente o roteador gera uma mensagem syslog. Mas com o EEM podemos criar uma política, onde além da mensagem, um e-mail seja enviado ou até mesmo que um mensagem seja enviada para o Twitter (sério, e isso já existe, veja o @myciscorouter).
Deu para perceber as possibilidades??
Além de ser executado automaticamente por gatilhos (eventos), também é possível executar o Applet ou Script manualmente, como veremos abaixo.
Alguns termos importantes
-
EEM Policy: é uma entidade que define um evento e as ações a serem tomadas quando este evento ocorrer.
-
Applet: forma mais simples de política, criada usando a própria CLI. Apenas um evento é permitido em no Applet.
-
Script: é a política criada usando o TCL – Tool Command Language. É como uma linguagem de programação, e os scripts devem ser criados em um editor de texto. Depois são enviados para a flash e registrados no EEM.
-
Event Detectors: programas usados pelo EEM para detectar quando um evento ocorre. São sistemas separados, que fazem a interface entre o EEM Agent e o EEM Policy. Exemplos de Event Detectors: CLI ED, Counter ED, GOLD ED, IP SLA ED, SNMP ED, entre outros.
-
EEM Actions: ação configurada em uma política e executada após um evento monitorado. Exemplos de ações: executar um comando (ou conjunto de comandos), gerar um trap SNMP, reiniciar o roteador, enviar um e-mail.
-
EEM Environment Variables: são variáveis que podemos usar nas políticas. Funcionam de forma similar as variáveis utilizadas em linguagens de programação. Existem variáveis pré definidas e também é possível criar variáveis.
EEM Applet – Gerando uma mensagem
Depois da introdução, vamos para prática. Como vocês devem ter percebido, o EEM é bem interessante, mas também pode ser complexo.
Este exemplo é apenas para iniciarmos, e não teria nenhuma aplicação prática.
Mensagem Syslog gerada através de um EEM Applet
BrainRT01#conf t
! No nome de conf global crie um applet e de um nome
BrainRT01(config)#event manager applet falha1
! Defina o evento, neste caso nenhum
BrainRT01(config-applet)# event none
! Defina a ação. Neste caso uma mensagem Syslog será gerada
BrainRT01(config-applet)# action TESTE syslog priority emergencies msg "TESTE APPLET"
BrainRT01(config-applet)#end
! No modo de configuração privilegiado execute o applet criado.
BrainRT01#event manager run falha1
BrainRT01#
May 12 18:12:27.503: %HA_EM-0-LOG: falha1: TESTE APPLET
EEM Applet – No shutdown automático
Este exemplo, mais elaborado, encontrei no blog anetworkerblog. Com ele uma interface que é colocada em administrativamente down, volta ficar UP automaticamente (imagina a cara do administrador…).
No shutdown em uma interface com EEM
BrainRT01#conf t
! Crie um applet
BrainRT01(config)#event manager applet No_shut_Lo0
! Defina o evento
BrainRT01(config-applet)#event syslog occurs 1 pattern "Loopback0, changed state to admin"
! Coloque as ações. Aqui temos um conjunto, onde geremos mensagens syslog e
! também comandos, que vão restaurar a interface
BrainRT01(config-applet)#action 1.0 syslog msg "Desabilitaram a Loopbackp0…"
BrainRT01(config-applet)#action 1.1 syslog msg "Vou fazer a lo0 ficar UP novamente, kkkk"
BrainRT01(config-applet)#action 1.2 cli command "enable"
BrainRT01(config-applet)#action 1.3 cli command "conf t"
BrainRT01(config-applet)#action 1.4 cli command "int lo0"
BrainRT01(config-applet)#action 1.5 cli command "no shut"
BrainRT01(config-applet)#action 1.6 syslog msg "Pronto, a Loopback 0 esta UP"
BrainRT01(config-applet)#end
BrainRT01#
Com este applet configurado, sempre que alguém dar um shutdown na interface Loopback0 o EEM vai perceber, através da mensagem gerada pelo roteador, e vai restaurar a interface com o comando no shutdown.
No próximo post vou falar sobre os scripts EEM (que permitem criar políticas mais elaboradas), com um exemplo bacana, e também sobre os riscos do Embedded Event Manager.
E se alguém quiser compartilhar applets/scripts fique a vontade.
Links
Introdução EEM
http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_eem_overview.html
Criando Applets
http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_eem_policy_cli.html
Até a próxima.
Excelente matéria. Vale lembrar que a versão do EEM 1.0 funciona a partir do IOS 12.0(26)S
Simplesmente fantástico.
Não conhecia este subsistema e vai ajudar muito com alguns clientes.
Parabéns pelo blog. Estou frequentando quase todos os dias e aprendendo muito.
Grande abraço
Valeu pessoal. Estou preparando um post com um exemplo de script. Deve estar pronto na semana que vem.
Muito Bom André !!!
Estou querendo escrever no NetFinders sobre o tema desde minha palestra no Web Security Forum mas não tive tempo. Vc abordou o assunto de forma muito didática e de fácil compreensão.
Estou ansioso pelo próximo post !
Grande abraço !
Adilson, já está quase pronto o post. Vou publicar na semana que vem, e inclusive citei os pontos que você abortou no websecforum (sempre fazendo a devida referencia, claro).
Independente destes posts espero que você também publique alguma coisa. Quanto mais informação melhor.
Show de bola!