Upload
cisco-russia
View
327
Download
12
Embed Size (px)
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
• Ответы присылайте на [email protected]
• Задание конкурса будет размещено сегодня после проведения
вебкаста
Скачать презентацию Вы можете по ссылке:
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 "[email protected]" from "[email protected]" 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 [email protected]
Мы также предоставляем Вашему вниманию Сообщества на других языках!
Если Вы говорите на Испанском, Португальском или Японском, мы приглашаем Вас принять участие в Сообществах:
Русское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
Пожалуйста, участвуйте в опросе
Спасибо за Ваше внимание!