Автоматизация задач с помощью EEM

Preview:

Citation preview

Сергей Никитин

Инженер центра технической поддержки Cisco TAC (Moscow)

Июль 26, 2016

Автоматизация задач с помощью EEM

Cisco Support Community

Expert Series Webcast

Как стать активным участником? Легко!

• Создавайте документы, пишите блоги, загружайте

видео, отвечайте на вопросы пользователей.

• Вклад оценивается на основе таблицы лидеров

• Также оценивается количество документов, блогов и

видео, созданных пользователем.

• Вклад оценивается только по русскоязычному

сообществу, не включая рейтинг, набранный в

глобальном Cisco Support Community.

Премия "Самый активный участник Сообщества Поддержки Cisco"

Оцени контент

Ваши оценки контента дают возможность атворам получать баллы.

Хотите чтобы поиск был удобным и простым? Помогите нам распознать качественный контент в Сообществе. Оценивайте документы, видео и блоги.

Пожалуйста, не забывайте оценивать ответы пользователей, которые щедро делятся своим временем и опытом

https://supportforums.cisco.com/ru/community/4926/pomoshch-help

26 июля 2016 – 05 августа 2016

Сессия «Спросить Эксперта»с Сергеем Никитиным, Дмитрием Леонтьевым и Александром Чевердой

Получить дополнительную информацию, а также задать вопросы эксперту в рамках данной темы Вы можете на странице, доступной по ссылке: https://supportforums.cisco.com/ru/discussion/13078266

Вы можете получить видеозапись данного семинара и текст сессии Q&A в течении ближайших 5 дней по следующей ссылкеhttps://supportforums.cisco.com/community/russian/expert-corner/webcast

Конкурс “Автоматизация задач с помощью EEM”

26 июля в 14:00 мск

Мы предлагаем Вам принять участие в конкурсе после

проведения вебкаста, который так и будет называться

“Автоматизация задач с помощью EEM”

• Первые три победителя получат фирменную флеш-карту Cisco

Support Community

• Ответы присылайте на csc-russian@external.cisco.com

• Задание конкурса будет размещено сегодня после проведения

вебкаста

Скачать презентацию Вы можете по ссылке:

https://supportforums.cisco.com/ru/document/13078286

Спасибо, что присоединились к нам сегодня!

Присылайте Ваши вопросы!Используйте панель Q&A, чтобы задать вопрос.

Наши эксперты Дмитрий и Александр ответят на

них.

Сегодняшняя

презентация включает

опросы аудитории

Пожалуйста, примите

участие в опросах!

Сергей Никитин

Инженер центра технической поддержки Cisco TAC

26 Июля, 2016

Автоматизация задач с помощью EEM

Cisco Support Community

Expert Series Webcast

Вопрос 1

Какой у Вас опыт работы с EEM?

1. У меня большой опыт работы с ЕЕМ, но я хочу освежить знания или узнать что-то новое

2. Я могу писать EEМ, но нуждаюсь в теории и практике

3. EEM – это нечто новое для меня и мне нужно больше информации

• Вступление

• Архитектура EEM

• Матрица версий

• Апплеты

• TCL скрипты

• IOS.sh скрипты

• Работа с EEM

• Лабораторная работа

• Заключение

Содержание

EEM V1 EEM V2 EEM V3…

Feature 1

Feature 2

Feature 3

Задачи по автоматизации

Теория

Практика

Вступление

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Периодические или запланированные задачи - pro-active

• Отслеживание события - re-active

• Действия from inside the box

• Сложные задачи

• Работа с динамическими данными

• Программирование

Вступление

EEM это встроенный функционал

операционных систем Cicso,

отслеживающий события и

управляющий ими. Механизм позволяет

автоматизировать задачи по

информационно-технологическому

обслуживанию и эксплуатации

оборудования Cisco.

Архитектура EEM

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Policy – сценарий из команд которые необходимо выполнить

• Апплет – список действий

• TCL скрипт - байткод

• IOS.sh скрипт – скрипт оболочки IOS

• EEM Server

• Event Detector

Архитектура EEM

Архитектура EEM – примеры ED

Событие (Event )

Действие (Action)

application Application specific event

cli CLI event

config Configuration policy event

counter Counter event

env Environmental event

gold GOLD event

interface Interface event

ioswdsysmon IOS WDSysMon event

ipsla IPSLA Event

neighbor discovery Neighbor Discovery event

none Manually run policy event

oir OIR event

resource Resource event

rf Redundancy Facility event

routing Routing event

rpc Remote Procedure Call event

snmp SNMP event

snmp notification SNMP Notification Event

snmp object SNMP object event

syslog Syslog event

tag event tag identifier

timer Timer event

track Tracking object event

show event manager detector all

show event manager detector <event detector> detailed

Пример для syslog ED:

Архитектура EEM - синтаксис детектора

%F

AC

ILIT

Y-S

EV

ER

ITY

-MN

EM

ON

IC

• Глобальные переменные (global a, Tcl-supplied)

• Локальные переменные

• Переменные среды: Заданныепеременные(event manager environment) и встроенные

переменные событий – специфические для каждого ED (sh event manager

detector <event detector>

detailed)

• Переменные в полиси задаются префиксом $

• Системные переменные имеют второй префикс _

Архитектура EEM - переменные

Примеры:

$_event_id – уникальный ID события

$_event_pub_sec – время возникновения события

Часто используемый функционал:

Перенаправление вывода

Remote run - EEM Trap

Вложение полиси - Nesting

Архитектура EEM

Матрица версий

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

Матрица версийshow event manager version

Апплеты

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Список процедур - действий

• Пишутся в конфигурации (cli-based)

• В 1 апплете несколько событий. Любое событие является триггером.

• В 1 апплете много действий (нумерация Х.Х, лексикографический порядок)

• Манипуляция значений переменных

• Вложения (nesting)

• А так-же: регулярные выражения, петли, ветвления

Апплеты

• Инициализация - название

• ED

• Описание (desctiption) - опционально

• Действия (actions)

Апплеты - составляющие

Апплеты - действия

Событие (Event )

Действие (Action)

add Add help Read/Set parser help buffer

append Append to a variable if if conditional

break Break out of a conditional loop increment Increment a variable

cli Execute a CLI command info Obtain system specific information

cns-event Send a CNS event mail Send an e-mail

comment add comment multiply Multiply

context Save or retrieve context information policy Run a pre-registered policy

continue Continue to next loop iteration publish-event Publish an application specific event

counter Modify a counter value puts print data to active tty

decrement Decrement a variable regexp regular expression match

divide Divide reload Reload system

else else conditional set Set a variable

elseif elseif conditional snmp-object-value Specify value for the SNMP get request

end end conditional block snmp-trap Send an SNMP trap

exit Exit from applet run string string commands

file file operations subtract Subtract

force-switchover Force a software switchover syslog Log a syslog message

foreach foreach loop track Read/Set a tracking object

gets get line of input from active tty wait Wait for a specified amount of time

handle-error On error action while while loop

event manager applet HIGHCPU_NETDR

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge entry-val "80" exit-op le exit-val "60" exit-type value poll-interval 20 maxrun 600

description "CSC Webcast Example"

action 1.1 syslog priority informational msg "START LOGGING [$_snmp_oid_val] / Log index [$_event_id.$_event_pub_sec.$_event_pub_msec]"

action 1.2 cli command "enable"

action 2.1 cli command "debug netdr capture rx"

action 2.2 wait 30

action 3.1 cli command "show netdr captured-packets | append disk0:netdr.$_event_id.$_event_pub_sec.$_event_pub_msec.log"

action 3.2 cli command "undebug all"

action 3.3 cli command "debug netdr clear-capture"

action 4.1 syslog priority informational msg "END OF SCRIPT] / Log index [$_event_id.$_event_pub_sec.$_event_pub_msec]"

action 4.2 cli command "show loggi | append disk0:sh_log2.$_event_id. [$_snmp_oid_val$_event_pub_sec.$_event_pub_msec.log"

Апплеты – пример 1. SNMP EDНазваниеED

Действия

Апплет запускается после того, как значение запрашиваемого объекта

превысит входное пороговое значение скрипта.

Апплет повторно инициализируется после превышения выходного

порогового значения

Опции:

oid – отслеживаемый объект

get-type – тип операции (запрашиваемый объект или следующий объект)

poll-interval – интервал между запросамиentry-op, exit-op – оператор (eq, lt, gt, ge, le, ne)

entry-val, exit-val – пороговые значения

entry-type, exit-type - типы пороговых значений: increment (счетчики), rate,

value

Syslog action высылает сообщения с конфигурируемым северити (6-INF

по умолчанию, может быть custom)

https://cway.cisco.com/tools/netdr

event manager applet GLBPFLAP

description "CSC Webcast Example"

event syslog pattern ".*GLBP-6-FWDSTATECHANGE.*"

action 1.1 set i "0"

action 1.2 cli command "enable"

action 2.0 while $i le 4

action 3.0 cli command "show proc cpu so | append flash:glbp.$_event_id.$_event_pub_sec.$_event_pub_msec.log"

action 3.1 increment i

action 4.0 end

Апплеты – пример 2. Syslog ED

Апплет запускается после того, как в логе появится запись

соответствующая конфигурации шаблона.

Cli action – позволяет запускать команды из Command Line Interface

Запуск не отличается от стандартной работы с CLI (authentication,

authorization, enable, VTY)

event manager applet NONE

description "CSC Webcast Example"

event none

action 1.0 cli command "enable"

action 2.0 cli command "show run int $_none_arg1 | append disk0:int.$_event_id.cfg"

Апплеты – пример 3. None ED

Запуск: event manager run POLICYNAME

Апплет запускается в ручном режиме.

Предназначение: проверка и отладка + сложные задачи

Поддерживает до 15 входящих аргументов

Вопрос 2

Лабораторная работа

Какая из нижеперечисленных задач была бы Вам интересна для детального рассмотрения в лаборатории?

1. High CPU прерываниями(interrupts) на 6500. Решение High CPU при помощи NetDR

2. High CPU вызванное процессамина ASR1k. Проверяем утилизацию CPU после появления сообщений в syslog

event manager applet CLIALERT

event cli pattern "^clear logg.*" sync yes

action 1.0 syslog msg "Please do not use $_cli_msg command"

action 3.0 mail server "192.168.229.1" to "user@mydomain.com" from "user@mydomain.com" subject "CLI

execution" body "$_cli_msg executed"

action 2.0 set _exit_status 0

Апплеты – пример 4. CLI ED

Апплет запускается после ввода команды из сконфигурированного

шаблона

В шаблоне могут использоваться регулярные выражения

Есть возможность запуска команды, ее изменения или отмены (exit 0).

Mail action – позволяет высылать email одному или нескольким

пользователям (разделенных запятыми)

event manager applet glbp-change

event syslog pattern ".*GLBP-6-FWDSTATECHANGE.*"

action 3.0 snmp-trap intdata1 123456

!

snmp-server enable traps event-manager

snmp-server host 192.168.0.254 traps public event-manager

Апплеты – пример 5. Действие SNMPTrap

В дополнение к сбору логов на локальном маршрутизаторе, с помощью

действия Трап можем собрать логи на удаленном маршрутизаторе

event manager applet glbp-change

event snmp-notification oid 1.3.6.1.4.1.9.10.91.1.2.3.1.9. oid-val "123456" op eq src-ip-address 192.168.0.253

action 1.0 cli command "enable"

action 2.0 cli command "show proc cpu so | append flash:trap.$_event_id.$_event_pub_sec.$_event_pub_msec.log"

!

snmp-server community public RO

snmp-server manager

TCL скрипты

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Исходный код интерпретируется в промежуточный байткод.

• Пишутся как текстовый файл.

• Копируются в память флэш.

• Среда программирования.

• Расширение *.tcl

TCL скрипты

• ED

• Переменные (опционально)

• Импорт библиотек

• Функции входа (опционально)

• Тело скрипта

• Функция выхода (опционально)

TCL скрипты - составляющие

# CSC Webcast Example

::cisco::eem::event_register_syslog pattern {.*GLBP-6-FWDSTATECHANGE.*}

::cisco::eem::description "CSC Webcast Example "

namespace import ::cisco::eem::*

namespace import ::cisco::lib::*

array set arr_einfo [event_reqinfo]

if [catch {cli_open} result] {

error $result $errorInfo

} else {

array set cli1 $result

}

if [catch {cli_exec $cli1(fd) "enable"} _cli_result] {

error $_cli_result $errorInfo

}

if [catch {cli_exec $cli1(fd) "show proc cpu so | append

disk0:/glbp.$arr_einfo(event_id).$arr_einfo(event_pub_sec).$arr_einfo(event_pub_msec).log"} _cli_result] {

error $_cli_result $errorInfo

}

# Close open cli before exit.

catch {cli_close $cli1(fd) $cli1(tty_id)} result

TCL скрипты - примерED

http://www.marcuscom.com/convert_applet/

Переменные

Библиотеки

Работа с TCL

Полезные команды для работы с Tcl

1. show event manager policy available system

2. Регистрация3. event manager directory user library disk0:/eemlib

Добавляем в полиси: source "user_library.tcl“

Router#mkdir disk0:/policies

Router#copy tftp://172.18.123.33/syslog_policy.tcl disk0:/policies/syslog_policy.tcl

Router#config t

Router(config)#event manager directory user policy disk0:/policies

Router(config)#event manager policy syslog_policy.tcl type user

Работа с TCL - Регистрация Tcl

Пометка

Если убрать команду event manager directory user полиси не запустится

mkdir disk0:/policies

event manager directory user policy disk0:/policies

event manager directory user repository "tftp://10.76.76.160/snikitin"

event manager update user policy name POLICYNAME

Отладка TCL

debug event manager tcl cli

Показывает выполняемые команды CLI и их вывод

debug event manager tcl commands

Показывает результат выполнения остальных команд

IOS.sh скрипты

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Скрипт

• Пишутся как текстовый файл.

• Системная оболочка

• Процедура регистрации

• Расширение *.sh

IOS.sh скрипты

• ED

• Функции входа (опционально)

• Тело скрипта

• Функция выхода (опционально)

IOS.sh скрипты - составляющие

IOS.sh скрипты

# This script will initiate ping to all hosts from subnetwork 192.168.1.0/29

##::cisco::eem::event_register_none tag pingtest

##::cisco::eem::description "CSC Webcast Example"

for x in 1 2 3 4 5 6

do

ping "192.168.1.$x"

done

Скрипт запустит пинг на все хосты в подсети 192.168.1.0/29

Работа с EEM

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• show event manager policy registered – показывает все зарегистрированные полиси

• show event manager policy pending – показывает процессы ожидающие запуска

• show event manager policy active – процессы запущенные в данный момент

• debug event manager detector – включение дебага определенного ED

Работа с EEM

По умолчанию полиси запускаются в течение 20 сек.

#Выполнение exit/end вконце действий.

KILLRouter#event manager scheduler clear all

Если на оборудовании настроен AAA, то все команды CLI авторизируются.

2 способа: авторизируемся или обходим авторизацию

Настройка авторизации для EEM

event manager session cli username <username>

Пользователь с соответствующими привилегиями (Priviledge)

Обойти авторизацию можно так:

Applet:event manager applet myapplet authorization bypass

Tcl:event manager policy mypol.tcl authorization bypass type user

IOS.sh:event manager policy mypol.sh authorization bypass type user

Работа с EEM - Авторизация

• Eclipse, Komodo – IDE

• Tkcon http://wintcltk.sourceforge.net/

• LMS

• EASy Installer – tcl скрипт для интерактивного управления (например Deploy, Verify) tcl скриптами

Работа с EEM - иструментарий

http://www.eclipse.org/dltk/install.php

http://www.activestate.com/activetcl

Лабораторная работа

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

Заключение

Вступление

Архитектура EEM

Матрица версий

Апплеты

TCL скрипты

IOS.sh скрипты

Работа с EEM

Лабораторная работа

Заключение

• Tcl Scripting for Cisco IOS • Tcl 8.5 Network Programming

Заключение - литература

Заключение - ссылки

• “Writing Embedded Event Manager Policies Using the Cisco IOS CLI”

• “Embedded Event Manager (EEM) Scripting Community (Cisco Beyond)”

• “Cisco EEM Best Practices”

• “Cisco IOS Shell Configuration Guide”

Вопрос 3

Какие презентации по тематике автоматизации Вам могли бы быть интересны?

1. OnePK

2. TCL

3. OpenFlow

Отправьте свой вопрос сейчас!Используйте панель Q&A, чтобы задать вопрос.

Эксперты ответят на Ваши вопросы.

Приглашаем Вас активно участвовать в Сообществе и социальных сетях

Vkontakte http://vk.com/cisco

Facebook http://www.facebook.com/CiscoSupportCommunity

Twitter https://twitter.com/CiscoRussia

You Tube http://www.youtube.com/user/CiscoRussiaMedia

Google+ https://plus.google.com/106603907471961036146

LinkedIn http://www.linkedin.com/groups/Cisco-Russia-CIS-3798428

Instgram https://instagram.com/ciscoru

Newsletter Subscriptioncsc-russian@external.cisco.com

Мы также предоставляем Вашему вниманию Сообщества на других языках!

Если Вы говорите на Испанском, Португальском или Японском, мы приглашаем Вас принять участие в Сообществах:

Русскоеhttp://russiansupportforum.cisco.com

Испанскоеhttps://supportforums.cisco.com/community/spanish

Португальскоеhttps://supportforums.cisco.com/community/portuguese

Японскоеhttps://supportforums.cisco.com/community/csc-japan

Китайскоеhttp://www.csc-china.com.cn

Если Вы говорите на Испанском,

Португальском или Японском, мы

приглашаем Вас принять участие на

Вашем родном языке

Технические семинары в клубе Cisco Expo Learning Club

http://ciscoclub.ru/events

Пожалуйста, участвуйте в опросе

Спасибо за Ваше внимание!

Recommended