• Nenhum resultado encontrado

Práticas recomendadas e scripts úteis para EEM

N/A
N/A
Protected

Academic year: 2021

Share "Práticas recomendadas e scripts úteis para EEM"

Copied!
9
0
0

Texto

(1)

Práticas recomendadas e scripts úteis para EEM

Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Convenções

Melhores práticas

Confirme se a autenticação apropriada está no lugar

Adicionar restrições para tempo de execução do EEM e limite de taxa

Evite a execução fora de ordem

Desativar paginação

Scripts de projeto para manutenção futura

Padrões lógicos comuns de EEM

Caminhos do código da filial com if/else

Declarações de Loop Over

Extrair saída por expressões regulares (Regex)

Scripts úteis do EEM

Rastrear endereço MAC específico para o endereço MAC Saiba mais

Monitorar CPU alta via SNMP OID

Corresponder dinamicamente uma saída PID e gravar pilha

Atualizar um Switch

Descarregar dados de diagnóstico para um arquivo quando um objeto rastreado por SLA de IP é

desativado

Enviar um e-mail do EEM

Desligar uma porta em uma programação

Desligar uma interface se uma determinada taxa de pacotes por segundo (PPS) for alcançada

Referências

Introduction

Este documento descreve as práticas recomendadas de configuração de script do Embedded

Event Manager (EEM) em dispositivos Cisco IOS-XE e fornece exemplos de sintaxe comum e

scripts úteis.

Prerequisites

Requirements

Este documento pressupõe que o leitor já está familiarizado com o recurso Cisco IOS/IOS-XE

Embedded Event Manager (EEM). Se você ainda não está familiarizado com este recurso, leia a

(2)

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware:

Switches Cisco Catalyst 9300, 9400 e 9500 que executam o Cisco IOS Software versão 16.X

ou 17.X

Esses scripts não são suportados pelo Cisco TAC e são fornecidos no estado em que se

encontram para fins educacionais.

As informações neste documento foram criadas a partir de dispositivos em um ambiente de

laboratório específico. All of the devices used in this document started with a cleared (default)

configuration. If your network is live, make sure that you understand the potential impact of any

command.

Convenções

Consulte as Convenções de Dicas Técnicas da Cisco para obter informações sobre convenções

de documentos

Melhores práticas

Esta seção aborda alguns dos problemas mais comuns observados com o projeto e a

implementação de scripts de EEM. Para obter informações adicionais sobre as melhores práticas

do EEM, consulte o documento Melhores práticas do EEM mencionado na seção Referências.

Confirme se a autenticação apropriada está no lugar

Se seu dispositivo usa AAA, você deve garantir que os scripts EEM configurados no dispositivo

sejam configurados com um usuário AAA capaz de executar os comandos no script ou que o

desvio de autorização seja configurado com o comando authorization bypass na definição do

script.

Adicionar restrições para tempo de execução do EEM e limite de taxa

Por padrão, os scripts EEM podem ser executados por no máximo 20 segundos. Se você projetar

um script que levará mais tempo para ser executado ou terá que esperar entre a execução do

comando, especifique um valor maxrun no disparo de eventos do applet para alterar o

temporizador de execução padrão.

Também é importante considerar com que frequência o evento que dispara seu script EEM pode

ser executado. Se você disparar um script de uma condição que ocorre rapidamente em um curto

período de tempo (ou seja, o acionador de syslog para flaps MAC), é importante incluir uma

condição de limite de taxa no script EEM para evitar um número excessivo de execuções em

paralelo e impedir a exaustão dos recursos do dispositivo.

Evite a execução fora de ordem

Conforme descrito na documentação do EEM, a ordem de execução das instruções de ação é

controlada pela sua etiqueta (ou seja, 'action 0001 cli command enable tem um rótulo 0001). Este

(3)

valor de rótulo NÃO é um número, mas sim alfanumérico. As ações são ordenadas em sequência

de teclas alfanuméricas ascendentes, usam o argumento label como a chave de ordenação e são

executadas nesta sequência. Isso pode levar a uma ordem de execução inesperada, com base

na forma como você estrutura suas etiquetas de ação.

Considere este exemplo:

event manager applet test authorization bypass event timer watchdog time 60 maxrun 60

action 13 syslog msg "You would expect to see this message first" action 120 syslog msg "This message will print first"

Como 120 é anterior a 13 em uma comparação alfanumérica, este script não será executado na

ordem esperada. Para evitar isso, é útil usar um sistema de preenchimento como este:

event manager applet test authorization bypass event timer watchdog time 60 maxrun 60

action 0010 syslog msg "This message will appear first" action 0020 syslog msg "This message will appear second" action 0120 syslog msg "This message will appear third"

Devido ao preenchimento aqui, as instruções numeradas serão avaliadas na ordem esperada. O

incremento de 10 entre cada rótulo permite que instruções adicionais sejam inseridas no script

EEM posteriormente, quando necessário, sem a necessidade de renumerar todas as instruções

subsequentes.

Desativar paginação

O EEM procura o prompt do dispositivo para determinar quando a saída do comando está

completa. Os comandos que produzem mais dados e, em seguida, podem ser exibidos em uma

tela (conforme configurado pelo comprimento do terminal), podem impedir que os scripts de EEM

sejam concluídos (e eventualmente mortos pelo temporizador de execução máxima), pois o

prompt do dispositivo não será exibido até que todas as páginas da saída sejam visualizadas.

Configure o termo len 0 no início dos scripts EEM que examinam grandes saídas.

Scripts de projeto para manutenção futura

Ao projetar um script EEM, deixe lacunas entre os rótulos de ação para facilitar a atualização da

lógica do script EEM no futuro. Quando estiverem disponíveis lacunas adequadas (ou seja, duas

declarações, como a ação 0010 e a ação 0020, deixam uma lacuna de 9 rótulos que podem ser

inseridos), podem ser acrescentadas novas afirmações, se necessário, sem renumeração ou

reverificação dos rótulos de ação e asseguram que as ações continuem a ser executadas na

ordem prevista.

Há comandos comuns que você pode precisar executar no início dos scripts do EEM. Isso pode

incluir:

set terminal length to 0

entrar no modo de ativação

habilitar timestamp automático para saída de comando

Você verá isso como um padrão comum nos exemplos mostrados neste documento, onde muitos

dos scripts começam com as mesmas 3 instruções de ação para configurá-lo.

(4)

Padrões lógicos comuns de EEM

Esta seção aborda alguns padrões lógicos comuns e blocos de sintaxe usados em scripts EEM.

Os exemplos aqui não são scripts completos, mas demonstrações de como uma funcionalidade

específica pode ser usada para criar scripts complexos de EEM.

Caminhos do código da filial com if/else

As variáveis EEM podem ser usadas para controlar o fluxo de execução de scripts EEM.

Considere este script EEM:

event manager applet snmp_cpu authorization bypass event timer watchdog time 60

action 0010 info type snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact action 0020 if $_info_snmp_value ge "50"

action 0030 syslog msg "This syslog message will be sent if CPU utilization is above 50%" action 0040 elseif $_info_snmp_value ge "30"

action 0050 syslog msg "This syslog message will be sent if CPU utilization is above 30% and below 50%"

action 0060 else

action 0070 syslog msg "This syslog message will only be sent if CPU utilization is below 30%" action 0080 end

Esse script será executado a cada minuto, examinará o valor do OID SNMP para utilização da

CPU e, em seguida, inserirá um dos três caminhos de execução diferentes com base no valor do

OID. Instruções semelhantes podem ser usadas em qualquer outra variável de EEM legal para

criar fluxos de execução complexos em scripts de EEM.

Declarações de Loop Over

Os loops de execução podem ser usados para encurtar significativamente os scripts do EEM e

torná-los mais fáceis de explicar. Considere este script, projetado para obter as estatísticas da

interface para Te2/1/15 6 vezes em um período de 1 minuto para verificar se há pequenos

períodos de alta utilização:

event manager applet int_util_check auth bypass event timer watchdog time 300 maxrun 120

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp" action 0003 cli command "term length 0"

action 0010 syslog msg "Running iteration 1 of command"

action 0020 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0030 wait 10

action 0040 syslog msg "Running iteration 2 of command"

action 0050 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0060 wait 10

action 0070 syslog msg "Running iteration 3 of command"

action 0080 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0090 wait 10

action 0100 syslog msg "Running iteration 4 of command"

action 0110 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0120 wait 10

action 0130 syslog msg "Running iteration 5 of command"

action 0140 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0150 wait 10

(5)

action 0160 syslog msg "Running iteration 6 of command"

action 0170 cli command "show interface te2/1/15 | append flash:interface_util.txt"

Com construções de loop EEM, este script pode ser significativamente reduzido:

event manager applet int_util_check auth bypass event timer watchdog time 300 maxrun 120

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp" action 0003 cli command "term length 0"

action 0010 set loop_iteration 1 action 0020 while $loop_iteration le 6

action 0030 syslog msg "Running iteration $loop_iteration of command"

action 0040 cli command "show interface te2/1/15 | append flash:interface_util.txt" action 0050 wait 10

action 0060 increment loop_iteration 1 action 0070 end

Extrair saída por expressões regulares (Regex)

A instrução EEM regexp pode ser usada para extrair valores da saída do comando a ser usado

em comandos subsequentes e ativar a criação de comandos dinâmicos dentro do próprio script

EEM. Consulte este bloco de código para obter um exemplo para extrair o PID do SNMP ENGINE

da saída de show proc cpu | i mecanismo SNMP e imprima-o em uma mensagem syslog. Esse

valor extraído também pode ser usado em outros comandos que exigem um PID para ser

executado.

event manager applet check_pid auth bypass event none

action 0010 cli command "show proc cpu | i SNMP ENGINE"

action 0020 regexp "^[ ]*([0-9]+) .*" $_cli_result match match1 action 0030 syslog msg "Found SNMP Engine PID $match1"

Scripts úteis do EEM

Rastrear endereço MAC específico para o endereço MAC Saiba mais

Neste exemplo, o endereço MAC b4e9.b0d3.6a41 é rastreado. O script verifica a cada 30

segundos se o endereço MAC especificado foi aprendido nas tabelas ARP ou MAC. Se o MAC for

visto, o script executa estas ações:

gera uma mensagem de syslog (isso é útil quando você deseja confirmar onde um endereço

MAC é aprendido ou quando/com que frequência ele é aprendido). 

Implementação

event manager applet mac_trace authorization bypass event timer watchdog time 30

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp"

action 0003 cli command "term length 0" action 0010 cli command "show ip arp | in

b4e9.b0d3.6a41" action 0020 regexp ".*(ARPA).*" $_cli_result action 0030 if $_regexp_result eq 1 action 0040 syslog msg $_cli_result action 0050 end action 0060 cli command "show mac add vlan 1 | in b4e9.b0d3.6a41" action 0070 regexp ".*(DYNAMIC).*" $_cli_result action 0080 if

$_regexp_result eq 1 action 0090 syslog msg $_cli_result action 0100 end

(6)

Este script monitora um OID SNMP usado para ler a porcentagem de ocupação da CPU nos

últimos 5 segundos. Quando a CPU está mais de 80% ocupada, o script executa estas ações:

cria um carimbo de data e hora a partir da saída de show clock e usa isso para criar um nome

de arquivo exclusivo

as saídas sobre o processo e o estado do software são gravadas nesse arquivo

uma Captura de Pacotes Integrados (EPC - Embedded Packet Capture) é configurada para

capturar 10 segundos de tráfego destinado ao plano de controle e grava-o em um arquivo.

uma vez concluída a captura do EPC, a configuração do EPC é removida e o script sai.

Implementação

event manager applet high-cpu authorization bypass

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type next entry-op gt entry-val 80 poll-interval 1 ratelimit 300 maxrun 180

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp" action 0003 cli command "term length 0"

action 0010 syslog msg "High CPU detected, gathering system information." action 0020 cli command "show clock"

action 0030 regex "([0-9]|[0-9][0-9]):([0-9]|[0-9][0-9]):([0-9]|[0-9][0-9])" $_cli_result match match1

action 0040 string replace "$match" 2 2 "."

action 0050 string replace "$_string_result" 5 5 "." action 0060 set time $_string_result

action 0070 cli command "show proc cpu sort | append flash:tac-cpu-$time.txt" action 0080 cli command "show proc cpu hist | append flash:tac-cpu-$time.txt"

action 0090 cli command "show proc cpu platform sorted | append flash:tac-cpu-$time.txt" action 0100 cli command "show interface | append flash:tac-cpu-$time.txt"

action 0110 cli command "show interface stats | append flash:tac-cpu-$time.txt" action 0120 cli command "show log | append flash:tac-cpu-$time.txt"

action 0130 cli command "show ip traffic | append flash:tac-cpu-$time.txt" action 0140 cli command "show users | append flash:tac-cpu-$time.txt"

action 0150 cli command "show platform software fed switch active punt cause summary | append flash:tac-cpu-$time.txt"

action 0160 cli command "show platform software fed switch active cpu-interface | append flash:tac-cpu-$time.txt"

action 0170 cli command "show platform software fed switch active punt cpuq all | append flash:tac-cpu-$time.txt"

action 0180 cli command "no monitor capture tac_cpu"

action 0190 cli command "monitor capture tac_cpu control-plane in match any file location flash:tac-cpu-$time.pcap"

action 0200 cli command "monitor capture tac_cpu start" pattern "yes" action 0210 cli command "yes"

action 0220 wait 10

action 0230 cli command "monitor capture tac_cpu stop" action 0240 cli command "no monitor capture tac_cpu"

Corresponder dinamicamente uma saída PID e gravar pilha

Este script procura uma mensagem de syslog de que a fila de entrada SNMP está cheia e

executa estas ações:

registra a saída de show proc cpu sort para um arquivo

extrai o PID do processo SNMP ENGINE via regex

usa o SNMP PID em comandos subsequentes para obter os dados da pilha para o PID

remove o script da configuração para que não ocorram mais execuções dele

(7)

event manager applet TAC-SNMP-INPUT-QUEUE-FULL authorization bypass event syslog pattern "INPUT_QFULL_ERR" ratelimit 40 maxrun 120 action 0010 cli command "en"

action 0020 cli command "show proc cpu sort | append flash:TAC-SNMP.txt" action 0030 cli command "show proc cpu | i SNMP ENGINE"

action 0040 regexp "^[ ]*([0-9]+) .*" $_cli_result match match1 action 0050 syslog msg "Found SNMP Engine PID $match1"

action 0060 cli command "show stacks $match1 | append flash:TAC-SNMP.txt" action 0070 syslog msg "$_cli_result"

action 0080 cli command "configure terminal"

action 0090 cli command "no event manager applet TAC-SNMP-INPUT-QUEUE-FULL" action 0100 cli command "end"

Atualizar um Switch

Este script é configurado para correspondência padrão no prompt não padrão retornado pelo

comando install add file <file> ativate commit e responda aos prompts. Nenhum evento de disparo

está configurado, portanto, o script EEM deve ser acionado manualmente por um usuário quando

a atualização precisa ocorrer por meio de UPGRADE de execução do gerenciador de eventos. O

temporizador de execução máxima é definido para 300 segundos em vez do valor padrão de 20

segundos, pois o comando install add leva um tempo significativo para ser executado.

Implementação

event manager applet UPGRADE authorization bypass event none maxrun 300

action 0001 cli command "enable"

action 0002 cli command "term length 0" action 0020 cli command "install add file

flash:cat9k_iosxe.16.06.02.SPA.bin activate commit" pattern "y\/n" action 0030 cli command "y" pattern "y\/n" action 0040 syslog msg "Reloading device to upgrade code" action 0050 cli command "y"

Descarregar dados de diagnóstico para um arquivo quando um objeto rastreado por

SLA de IP é desativado

Este script é acionado quando o objeto SLA IP 11 é desativado e executa estas ações:

Coletar tabela MAC, tabela ARP, syslogs e tabela de roteamento

Escrever informações em um arquivo na flash: chamado sla_track.txt

Implementação

ip sla 10 icmp-echo 10.10.10.10 source-ip 20.20.20.20 frequency 10 exit

ip sla schedule 10 life forever start-time now track 11 ip sla 10 reachability

exit

event manager applet track-10 authorization bypass event track 11 state down

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp"

action 0003 cli command "term length 0" action 0010 syslog msg "IP SLA object 10 has gone down" action 0020 cli command "show mac address-table detail | append flash:sla_track.txt" action 0030 cli command "show ip arp | append flash:sla_track.txt" action 0040 cli command "show log | append flash:sla_track.txt" action 0050 cli command "show ip route | append flash:sla_track.txt"

(8)

Enviar um e-mail do EEM

Este script é acionado quando o padrão descrito na instrução de padrão syslog de evento é visto

e executa estas ações:

envia um e-mail de um servidor de e-mail interno (isso pressupõe que o servidor de e-mail

interno permita autenticação aberta do dispositivo).

Implementação

event manager environment email_from [email protected] event manager environment email_server 192.168.1.1

event manager environment email_to [email protected] event manager applet email_syslog

event syslog pattern "SYSLOG PATTERN HERE” maxrun 60 action 0010 info type routername

action 0020 mail server "$email_server" to "$email_to" from "$email_from" subject "SUBJECT OF EMAIL - Syslog seen on $_info_routername" body “BODY OF YOUR EMAIL GOES HERE”

Desligar uma porta em uma programação

Este script desliga a porta Te2/1/15 todos os dias às 18h.

Implementação

event manager applet shut_port authorization bypass event timer cron cron-entry "0 18 * * *"

action 0001 cli command "enable"

action 0002 cli command "term exec prompt timestamp"

action 0003 cli command "term length 0" action 0010 syslog msg "shutting port Te2/1/15 down" action 0030 cli command "config t" action 0040 cli command "int Te2/1/15" action 0050 cli command "shutdown" action 0060 cli command "end"

Desligar uma interface se uma determinada taxa de pacotes por segundo (PPS) for

alcançada

Este script verifica a taxa de PPS na interface Te2/1/9 na direção TX a cada segundo. Se a taxa

de PPS exceder 100, ele executará estas ações:

registra a saída show int da interface para syslog

desliga a interface

Implementação

event manager applet disable_link authorization bypass

event interface name te2/1/9 parameter transmit_rate_pps entry-op ge entry-val 100 poll-interval 1 entry-type value

action 0001 cli command "enable"

action 0002 cli command "term length 0" action 0010 syslog msg "Detecting high input rate on interface te2/1/9. Shutting interface down." action 0020 cli command "show int te2/1/9" action 0030 syslog msg $_cli_result action 0040 cli command "config t" action 0050 cli command "int te2/1/9" action 0060 cli command "shutdown" action 0070 cli command "end"

(9)

Práticas recomendadas do Cisco EEM

Referências

Documentos relacionados

• Os municípios provavelmente não utilizam a análise dos dados para orientar o planejamento de suas ações;. • Há grande potencialidade na análise dos micro dados do Sisvan

Você pode usar ACLs para controlar o tráfego que entra ou sai de uma parte específica de nossa rede interna.. Quando você precisar filtrar o tráfego de entrada ou de saída ou ambos

• Para a pista 25, após a posição NOGUEIRA, as aeronaves deverão voar na proa da posição TREVO, sobrevoar a pista 15 e então curvar a esquerda, interceptando a perna do vento

E para ser mais precisa e confrontando aquilo que foi a apresentação das Propostas em 2015 e agora este Relatório, há um conjunto de matérias e de linhas de

É nesse cenário que se insere o conceito de Silvicultura de Precisão, que pode ser considerado um método de gerenciamento das atividades silviculturais, que se baseia na coleta

O sistema de freio antiblocante não foi projetado para reduzir a distância de frenagem: dirija sempre a uma velocida- de moderada, mantendo uma distância segura do veículo que está

2 – Para esta categoria de associado é fixado uma taxa de manutenção, prevista na última alteração Estatutária no Artigo 4° do parágrafo 1°, letra a, no valor de 20% (vinte

Os artigos foram selecionados de acordo com os critérios de in- clusão: (1) descrição ou análise de aspectos neuropsicológicos, neuroi- magem em adultos com histórico de