====== Мониторинг с помощью SNMP-ловушек ====== {{indexmenu_n>8}} [[:ru:documentation:start|Вернуться в оглавление Pandora FMS]] ===== Работа с SNMP-ловушками ===== ==== Введение ==== Сетевые устройства, поддерживающие SNMP, такие как //коммутаторы//, //маршрутизаторы//, серверы, принтеры или //Access Panel//, могут отправлять сигналы тревоги (или **SNMP-ловушки**) при наступлении определенных событий, таких как выход из строя интерфейса, слишком высокая загрузка процессора или сети, изменение состояния источника бесперебойного питания (ИБП или //UPS//) или заполнение раздела диска. Каждое устройство имеет свою собственную "коллекцию" возможных событий, которая отражается в коллекции, называемой MIB, в данном случае отличной от MIB, используемой для запроса устройства. {{ :wiki:trap-example.png?600 }} //Ловушки// отправляются только тогда, когда что-то происходит, таким образом, синхронно (не повторяясь во времени) устройством к приемнику ловушек SNMP. Pandora FMS имеет консоль приема ловушек, которая позволяет визуализировать ловушки, посылаемые контролируемыми объектами, и добавлять предупреждения к этим ловушкам. b>SNMP-ловушки принимаются через демон операционной системы, который запускается SNMP-сервером Pandora FMS при запуске сервера Pandora FMS. Этот демон сохраняет ловушки в журнале, расположенном по умолчанию в /var/log/pandora/pandora_snmptrap.log Ловушки обычно принимаются в "сыром" формате, т.е. с числовыми OID, в том случае, если MIB, установленный в ОС, не способен их разрешить. SNMP-консоль Pandora FMS //Enterprise// позволяет создавать правила для переименования числовых OID в буквенно-цифровые OID или простые описательные текстовые строки (например, "Интерфейс упал"), чтобы сделать работу с ловушками более интуитивно понятной. Pandora FMS также позволяет загружать MIBs ловушек любого производителя для автоматического определения этих правил, более подробную информацию вы можете получить в обучающем видео «[[https://www.youtube.com/watch?v=Oaxf7vi7eME|Загрузка MIBs в Pandora FMS]]». Чтобы работать с ловушками SNMP, сначала измените следующий параметр в ''/etc/pandora/pandora_server.conf'', чтобы включить SNMP-консоль: snmpconsole 1 Если вы хотите, чтобы ловушки отображались с переводом (либо переменные ссылки, либо строка Enterprise), вы должны активировать следующие параметры (только в версии Enterprise): translate_variable_bindings 1 translate_enterprise_strings 1 Вы также должны настроить файл ''/etc/snmp/snmptrapd.conf'' с необходимыми параметрами, например: authCommunity log public disableAuthorization yes При такой конфигурации ловушки будут создаваться для сообщества **public** и не будут требовать авторизации. === SNMPv3 === Ловушки SNMPv3 отклоняются, если пользователь, отправляющий их, не добавлен в ''/etc/snmp/snmptrapd.conf'' с помощью директивы [[http://www.net-snmp.org/docs/man/snmptrapd.conf.html|''createUser'']]. Например: disableAuthorization yes createUser -e 0x0102030405 snmpv3user SHA mypassword AES Идентификатор двигателя должен быть указан с помощью опции ''-e''. В противном случае будут приниматься только INFORMs SNMPv3. ==== Доступ к консоли приема ловушек ==== Для доступа к консоли приема ловушек перейдите в **Monitoring > SNMP > SNMP Console**, где отобразится список полученных ловушек. Значок лупы можно использовать для отображения всей информации о ловушке, так же как и с событиями. В этом разделе вы найдете подробную информацию о любой ловушке SNMP. {{ :wiki:traps.jpg?800 |traps.jpg}} Для каждой ловушки отображаются следующие столбцы: **Status** Зеленый квадрат, если ловушка была проверена, и красный, если она не была проверена. **SNMP Agent** Агент, отправивший ловушку. **Enterprise string** OID или Object Identifier (Идентификатор объекта) отправленной ловушки. Одна ловушка может отправить только один фрагмент данных в этом поле. **Time Stamp** Время, прошедшее с момента получения ловушки. **Предупреждение** Желтый квадрат, если с помощью этой ловушки было вызвано предупреждение, или серый квадрат, если предупреждение не было вызвано. **Действие** Действие с кнопками для подтверждения или удаления ловушки. **Цвета** Кроме того, ловушки имеют разный цвет (видимый как цвет фона линии ловушки) в зависимости от типа ловушки. * **Синий**: ловушки типа обслуживания. * **Фиолетовый**: ловушки информационного типа. * **Зеленый**: ловушки типа ''normal''. * **Желтый**: ловушки типа ''warning''. * **Rojo**: ловушки типа ''critical''. Нажатие на **Toggle Filter** отображает или убирает поля для фильтрации ловушек. {{ :wiki:alert.png?700 }} === Подтверждение ловушек === Для эффективного управления ловушками можно подтверждать ловушки, чтобы администратор мог отличить ловушки, которые он уже просмотрел, от ловушек, которые не были просмотрены. Чтобы подтвердить ловушку, нажмите на кружок слева от ловушки. {{ :wiki:traps2.jpg?760 |traps2.jpg}} Также можно подтвердить несколько ловушек, отметив их и нажав кнопку **Validate**. === Удаление ловушек === Можно удалять ловушки после их обработки, как по отдельности, так и путем множественного выбора и действия **Delete**. {{ :wiki:traps3.jpg?700 |traps3.jpg}} Чтобы предотвратить накопление ловушек, существует параметр конфигурации, который по умолчанию автоматически удаляет ловушки, возраст которых превышает 10 дней. ==== Предупреждения ловушек SNMP ==== === Введение === Pandora FMS также имеет систему предупреждений для получаемых SNMP-ловушек. Они по большей части основаны на правилах фильтрации, ищут совпадения во всех возможных полях в соответствии с правилами, которые вы установили для запуска предупреждения. Вы можете узнать больше об предупреждениях Pandora FMS [[:ru:documentation:04_using:01_alerts|по этой ссылке]]. {{ :wiki:pfms-alerts-snmp_alerts-alert_overview.png }} === Добавить предупреждение === Предупреждения о ловушках SNMP имеют несколько полей, которые используются для сопоставления ловушек SNMP, полученных на консоли. Опционально можно использовать поля для создания более общих или более конкретных правил по мере необходимости: {{ :wiki:alertsnmp1.png?500 }} **Enterprise string** Основной OID ловушки. Ищется наличие строки, она может быть даже частью OID; например, ''1.21.34.2.3'' в более длинном OID. Вы можете использовать его таким же образом в поле и искать, как если бы это было: ''*1.21.34.2.3*'' (нет необходимости использовать звездочки в качестве подстановочных знаков). **Custom Value/OID** Производит поиск в полях **Value** ловушки, а также в полях **Custom OID** и **Custom Value**, т.е. в остальных полях TRAP. Здесь работает поиск по регулярному выражению. Например, если у вас есть ловушка, которая будет посылать строку "Testing TRAP 225", можно найти любую ловушку с подстрокой "Testing TRAP", используя регулярное выражение "Testing.*TRAP.*" **SNMP Agent** IP-адрес Агента, отправляющего ловушку. Он также позволяет использовать регулярное выражение или подстроку. **Trap type** Фильтрует по типу ловушки. Большинство генерируемых ловушек обычно имеют тип **Other**; если вы ничего не указали, ищет ловушки любого типа. {{ :wiki:trap_type.png?360 }} **Single value** Фильтрует по значению ловушки. Это относится только к простому значению первичного OID, а не к какому-либо вторичному OID. **Variable bindings/Data #1-20'** Это регулярные выражения, которые пытаются сопоставить переменные от 1 до 20. Если происходит попадание, включается предупреждение. Значение переменной хранится в макросе ''_snmp_fx_'' соответствующем (''_snmp_f1_'', ''_snmp_f2_'', …). Хотя для двадцати переменных можно задать только одно регулярное выражение, макросы ''_snmp_fx_'' доступны для всех них (''_snmp_f11_'', ''_snmp_f12_'', …). {{ :wiki:alertsnmp2.png?600 }} **Field 1** Поле для установки параметра команды тревоги ''Field 1''. Это поле, которое будет использоваться в случае, если вы решили сгенерировать событие, или при генерировании целевого email в случае, если вы выбрали действие ''eMail'' (если вам нужно перезаписать email по умолчанию в действии). Для получения дополнительной информации о предупреждениях в Pandora FMS перейдите по следующей [[:es:documentation:04_using:01_alerts|ссылке]] **Field 2** Поле для установки параметра команды тревоги ''Field 2''. Например, в случае отправки электронного письма это будет являтся темой сообщения. Если оставлен пустым, используется то, что было определено в действии. **Field 3** Поле для установки параметра команды тревоги ''Field 3''. В случае отправки электронного письма это будет текстом сообщения. Если оставлен пустым, используется то, что было определено в действии. **Min. Number of Alerts** Поле, в котором задается минимальное количество ловушек, которые должны поступить для срабатывания сигнала тревоги. **Max. Number of Alerts** Поле, определяющее максимальное количество раз, сколько действие будет выполнено в заданном интервале (или **time threshold**). **Time Threshold** Поле, в котором определяется время, которое должно пройти до сброса счетчика тревог. Этот счетчик используется для поля **Min. Number of alerts**. **Priority** Комбинация, с помощью которой устанавливается приоритет тревоги. \\ Приоритеты предупреждений различны и не имеют ничего общего ни с приоритетом ловушек, ни с приоритетом событий Pandora FMS.\\ \\ **Alert Action** Комбинация, с помощью которой определяется действие, которое будет выполнять предупреждение. Если выбрано событие, обычное событие генерации предупреждения не произойдет. **Position** Предупреждения с более низким рейтингом оцениваются в первую очередь. Если существует несколько предупреждений с одинаковой позицией, которые совпадают с ловушкой, все совпадающие предупреждения с одинаковой позицией будут запущены. Более низкоранговые (в более низкой позиции), даже если они совпадают, не будут запущены. === Макросы полей в предупреждениях === Следующие макросы можно использовать в любом из полей //field// предупреждений: * ''_data_'': Целая ловушка * ''_agent_'': Имя Агента * ''_address_'': IP-Адрес * ''_timestamp_'': Дата ловушки * ''_snmp_oid_'': OID ловушки * ''_snmp_value_'': Значение OID ловушки === Пример предупреждения ловушек === {{ :wiki:trap_sample_for_alert.jpg?650 |trap_sample_for_alert.jpg}} У вас есть основной OID ''.1.3.6.1.4.1.2789.2005'', который идентифицирует ловушку, которая может содержать сообщения о перегреве процессора (и еще больше других сообщений). От производителя известно, что для этого типа оповещения используются две переменные, первая из которых идентифицирует его как перегрев, а вторая - значение температуры; обе являются текстовыми строками. Для определения первой части ловушки используется только основной OID для выполнения первой фильтрации: {{ :wiki:trap_alert_definition_1.jpg?650 |trap_alert_definition_1.jpg}} Вторая часть определения ловушки содержит основную часть. В первую переменную ловушки мы помещаем строку ''Head alert'' {{ :wiki:trap_alert_definition_2.jpg?650 |trap_alert_definition_2.jpg}} Наконец, в **Field 1** используйте макропеременные, содержащие значение переменных 1 и 2 полученной ловушки ( ''_snmp_f1_'' и ''_snmp_f2_'' ), сопровождаемые описательным текстом: {{ :wiki:trap_alert_definition_3.jpg?650 |trap_alert_definition_3.jpg}} Таким образом, при срабатывании оповещения сгенерированное событие будет выглядеть так: {{ :wiki:event_result_of_alert.jpg?700 |event_result_of_alert.jpg}} ==== Работа в среде с большим количеством ловушек ==== === Защита от лавины ловушек === На сервере есть несколько параметров, которые используются для защиты системы от поступления шторма ловушек из одного и того же источника. Для этого используются следующие параметры конфигурации в файле ''pandora_server.conf''> * ''snmp_storm_protection''> Максимальное количество ловушек, обрабатываемых в интервале защиты. * ''snmp_storm_timeout''> Интервал в секундах защиты от шторма ловушек. В течение этого интервала могут быть обработаны только X ловушек из одного источника (одного IP-адреса). * ''snmp_storm_silence_period''> Если он больше 0 при каждом срабатывании //storm protection// для определенного источника, текущее время плюс время отключения звука будут суммироваться. До истечения этого времени новые ловушки не будут регистрироваться для данного источника. Когда эта защита срабатывает, это отражается в событии на консоли: {{ :wiki:storm_silence_snmp.png?400 }} Защита от шторма ловушек в сочетании с фильтрацией ловушек (см. ниже) означает, что если вы получаете сотни тысяч ловушек в день, вы можете работать с несколькими тысячами ловушек, отсеивая лишние или бесполезные. === Фильтрация ловушек на сервере === Некоторые системы получают большое количество ловушек, из которых только небольшой процент представляет интерес для мониторинга. С помощью Pandora FMS можно фильтровать ловушки, получаемые сервером, чтобы избежать излишней загрузки приложения. В разделе **Monitoring** > **SNMP** > **SNMP Filters** вы можете определить различные фильтры. {{ /manual/lib/exe/fetch.php? w=600&tok=50d721&media=wiki:monitoring-snmp-snmp_filters.png?600 }} Добавьте описание и столько фильтров, сколько вам нужно, используя кнопку **+**: {{ :wiki:snmp_filter_editor_new.png?700 }} Ловушка, соответствующая любому из них, будет автоматически отброшена сервером. Фильтр применяется как регулярное выражение к записи, соответствующей ловушке в журнале SNMP (по умолчанию ''/var/log/pandora/pandora_snmptrap.log''), которая имеет следующий фиксированный формат: %4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n Будучи: * ''%y''> Текущий год. * ''%m''> Текущий месяц (числовое значение). * ''%l''> День текущего месяца. * ''%h''> Текущее время. * ''%j''> Текущая минута. * ''%k''> Текущая секунда. * ''%a''> Адрес происхождения (только ловушки версии 1). * ''%N''> OID. * ''%w''> Тип ловушки (числовой). * ''%W''> Описание ловушки. * ''%q''> Подтип ловушки (числовой). * ''%v''> Список переменных, разделенных табуляцией (custom OID). Например, для фильтрации всех ловушек, отправленных хостом 192.168.50.20, мы можем определить следующий фильтр: {{ :wiki:snmp_filter_example.png?400 }} Поскольку одновременно можно создать более одного фильтра, при поиске будут учитываться те ловушки, которые отвечают всем условиям фильтрации. === Статистика ловушек SNMP === Этот вид позволяет просматривать статистику ловушек, как по источникам (IP-адресам), так и по OID. Это позволяет эффективно управлять фильтрами, определяя IP-адреса, которые генерируют больше всего ловушек, и OID, которые повторяются чаще всего. Система отображает статистику ловушек за последние 30 дней. {{ :wiki:captura_de_pantalla_2014-09-23_a_la_s_17.59.56.png?750 }} {{ :wiki:captura_de_pantalla_2014-09-23_a_la_s_19.11.40.png?750 }} ==== Персонализация Traps SNMP ==== {{:wiki:icono-modulo-enterprise.png |Versión Enterprise.}}Следующие функции предназначены только для версии Enterprise. Чтобы облегчить оператору понимание ловушек, посылаемых мониторизируемыми устройствами, можно загрузить в Pandora FMS MIB-файлы производителя или отредактировать ловушки подстраиваясь под предпочтения пользователя . === Переименование и пользовательская настройка ловушек === "Редактирование ловушки" - это процесс "настройки" того, как ловушка выглядит на консоли. Чтобы отредактировать ловушку, перейдите в раздел **Monitoring** > **SNMP** > **SNMP trap editor**. {{ /manual/lib/exe/fetch.php? w=600&tok=a886ef&media=wiki:monitoring-snmp-snmp_trap_editor.png?600 }} Нажмите на значок редактирования ловушки, которую вы хотите настроить: {{ :wiki:traps5.jpg?800 |traps5.jpg}} Появится страница, аналогичная следующей: {{ :wiki:traps7.jpg?500 |traps7.jpg}} Таким образом, при просмотре ловушек с OID ''.1.3.6.1.4.1.2789.2005'' они будут отображаться как "Blue box sample", и их будет легче различать: Их содержание (включая исходный OID) должно оставаться неизменным. **Custom OID** - это регулярное выражение совместимое с Perl, которое будет соответствовать части строки ловушки, содержащей привязки переменных. Обычно нет необходимости переводить ловушку. "Custom OID" не предназначен для содержания полной строки переменной привязки, которая может быть длиннее максимальной поддерживаемой длины, а предназначен для содержания регулярного выражения, которое согласуется с одной или нескольким переменным. Обратите внимание, что все предыдущие ловушки не изменят свой внешний вид, это будет работать с любыми новыми ловушками, которые войдут в систему с этого момента. Пример переопределенной пользователем ловушки: {{ :wiki:traps8.jpg?800 |traps8.jpg}} === Загрузка MIB-файлов производителя === Эта опция используется для загрузки MIBS и расширения внутренней базы переводов Pandora FMS, чтобы при поступлении ловушки она автоматически переводилась по ее описанию. Перейдите **Monitoring** > **SNMP** > **MIB uploader**. {{ /manual/lib/exe/fetch.php? w=600&tok=8afaff&media=wiki:monitoring-snmp-snmp-mib_uploader.png?600 }} Для загрузки MIBs производителя нажмите на иконку **Upload file(s)**, выберите файл и нажмите на кнопку **Go**. {{ :wiki:cima6.png?500 }} После загрузки система включает его в свою библиотеку ловушек. ==== Предупреждения с помощью сложных SNMP-ловушек ==== Описанные выше предупреждения относятся к случаям, когда ловушка хорошо определена, всегда одинакова и не имеет релевантной информации для спасения. В других случаях может появиться ловушка следующего вида: OID: .1.3.6.1.4.1.2789.2005 Value: 666 Custom data: 1.3.6.1.4.1.2789.2005.1 = STRING: "ID-00342" .1.3.6.1.4.1.2789.2005.2 = STRING: "Automated check" .1.3.6.1.4.1.2789.2005.3 = STRING: "NIC Offline" .1.3.6.1.4.1.2789.2005.4 = STRING: "4897584AH/345" Эта ловушка, помимо OID и значения, содержит сложную информацию, основанную на нескольких OID и нескольких значениях. Ловушка может иметь в своей сложной части совершенно свободную структуру, основанную на парах OID и значений (счетчики, числовые, буквенно-цифровые, даты и т.д.). Эта ловушка будет отображаться в консоли ловушек следующим образом: {{ :wiki:traps9.jpg?800 |Нажмите, чтобы увеличить}} Если вы подробно изучите расширенную информацию (**Variable bindings**), то найдете несколько полезных сведений. В частности, первое поле с OID, заканчивающееся на ''2005.1'', выглядит как идентификатор, а третье поле с OID, заканчивающееся на ''2005.3'', выглядит как сообщение об ошибке. Поля 2 и 4, похоже, не очень полезны, поскольку, например, 4º - это неизвестный нам код. Создается событие из ловушки, помещая определенные части ловушки в текст; например, должно быть создано событие, содержащее следующую информацию: Chassis Alert: <сообщение об ошибке> в устройстве <идентификатор> Задача состоит в том, чтобы создать оповещение, которое ищет совпадения в этих полях, получает фрагмент информации и затем использует его для составления сообщения в предупреждении. Это можно сделать в Pandora FMS с помощью расширенных регулярных выражений и селекторов. Более подробную информацию о регулярных выражениях можно найти, перейдя [[https://ru.wikipedia.org/wiki/Регулярные_выражения|по этой ссылке]]. Селекторы, использующие символы ''('' и '')'', позволяют "копировать" информацию, используя поисковое выражение. Регулярное выражение для получения идентификатора будет выглядеть следующим образом: .*.1.3.6.1.4.1.2789.2005.1 \= STRING\: \"([0-9\-\_A-Za-z]+)\" Регулярное выражение для получения сообщения об ошибке будет выглядеть следующим образом: .*.1.3.6.1.4.1.2789.2005.3 \= STRING\: \"([\sA-Za-z]+)\".* После того как у вас есть информационные поля, их следует использовать в предупреждении. Для этого используются специальные макросы ''_snmp_f1_'', ''_snmp_f2_'', … ''_snmp_f//n//_'', которые имеют смысл для предупреждений SNMP-ловушек. Для построения сообщения используйте следующую строку: Chassis Alert: _snmp_f2_ в устройстве _snmp_f1_ В итоге, полное оповещение создается таким образом: {{ :wiki:compex_trap_def1.png?640 }} Для создания такого рода предупреждений необходимо хорошее знание регулярных выражений, поскольку простой пробел, кавычки или символ в неправильном месте могут привести к тому, что они не будут работать. Всегда помните, что оповещения SNMP подразумевают использование регулярных выражений. Самый простой способ определения предупреждения, используя регулярные выражения, выглядит следующим образом: {{ :wiki:compex_trap_def4.png?500 }} === Дополнительный пример === В другом примере используется оповещение типа **eMail** для отправки информации об имени интерфейса каждый раз, когда получена определенная ловушка, сообщающая о проблемах на этом интерфейсе. Таким образом, электронное письмо получает информацию об устройстве и интерфейсе, получая эту информацию изнутри ловушки. Это ловушка, полученная от //коммутатора//: {{ :wiki:another_trap_alert_sample.png?direct&800 |Нажмите, чтобы увеличить}} Таким образом, требуется сообщение: {{ :wiki:trap_email.png?700 }} Ловушка должна быть определена в Pandora FMS следующим образом: {{ :wiki:another_snmp_trap_sample.png?630 }} {{ :wiki:another_snmp_trap_sample2.png?600 }} ==== Связывание ловушки с остальными предупреждениями Pandora / SNMP Agent trap forwarding ==== Предупреждения, определяемые в ловушках, полностью независимы от механизма оповещения Pandora FMS, поэтому невозможно установить корреляции типа “//тревога срабатывает, если температура поднимается до 29 градусов и срабатывает ловушка падения вторичного источника питания//”. Предупреждения такого типа также не могут быть представлены (поскольку они в принципе не связаны ни с одним модулем Pandora FMS), поэтому невозможно связать мониторинг консоли ловушки с такими элементами, как отчеты или карты. //Специальный модуль SNMPTrap, содержащий ловушку, пересылаемую с консоли SNMP:// {{ :wiki:snmptrap_agent.png?700 }} Для этого в Pandora FMS есть метод под названием **Agent SNMP Trap Forwarding**.. Эта опция (общая для сервера) направляет ловушку в специальный Модуль Агента под названием **SNMPTrap** в виде текстовой строки, если и только если IP-адрес источника ловушки определен как IP-адрес агента. Когда это происходит, ловушка поступает в виде строки текста Агенту в этом Модуле, который является Модулем, который определяется только при поступлении первой ловушки. В этом модуле можно задать текстовые предупреждения, которые являются абсолютно стандартными, как и любые другие, находящиеся другом модуле. Это позволяет настроить мониторинг SNMP таким образом, что определенные ловушки из определенных источников могут рассматриваться как другой модуль и, таким образом, интегрироваться в остальную часть мониторинга, включая корреляцию предупреждений. //Так выглядит модуль "SNMPTrap":// {{ :wiki:snmptrapforward2.png?600 }} Это одна характеристика //Enterprise// и настраивается она в **Setup** > **Setup** > **Enterprise** с помощью следующей опции: //Параметр конфигурации для включения пересылки ловушек агентам://{{ :wiki:snmptrap_agent_forwardsetup.png?700x250 }} Если этот параметр изменен, для начала работы службу сервера Pandora FMS необходимо перезапустить. Другое решение - настроить предупреждение о ловушке, которая активирует более одного модуля агента. Например, ловушка заключается в записи в файл //logs//, и у вас есть агент, который читает этот файл и перепрыгивает, когда в нем появляется запись "1". Таким образом, модуль будет прыгать при получении нужной ловушки, и корреляция может быть установлена на основе полученной ловушки. ==== Внешний менеджер TRAPS ==== Консоль SNMP ограничена в получении ловушек, поскольку она обрабатывает ЛОВУШКУ только как самостоятельную единицу, в то время как она может содержать много информации. **Иногда бывает так, что единственный мониторинг, который можно провести, основан на ловушках.** Для этого вы можете выбрать "пост-обработку" информации, собранной в ловушке, с помощью внешнего //скрипта//, который действует как //плагин//. Для детальной обработки данных ловушки вся информация о ловушке может быть отправлена в //скрипт//, как результат предупреждения. Этот пример будет показан в //журнале// SNMP-консоли Pandora FMS: 2010-08-26 12:01:46 pandora 10.201.246.2 .1.3.6.1.4.1.1722 .1.3.6.1.4.1.1722.2.10.1.1.1 233 .1.3.6.1.4.1.1722.2.10.1.1.3 = STRING: AIX_Software_Failure .1.3.6.1.4.1.1722.2.10.1.1.2 = STRING: 08 25 2010 08:23:43:697685 .1.3.6.1.4.1.1722.2.10.1.1.8 = STRING: 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED. .1.3.6.1.4.1.1722.2.10.1.1.6 = STRING: 8 .1.3.6.1.4.1.1722.2.10.1.1.11 = STRING: An application may not work properly .1.3.6.1.4.1.1722.2.10.1.1.10 = STRING: An application may not work properly .1.3.6.1.4.1.1722.2.10.1.1.12 = INTEGER: 4 .1.3.6.1.6.3.1.1.4.3.0 = OID: .1.3.6.1.4.1.1722 {{ :wiki:snmp2.jpg?700 |snmp2.jpg}} {{ :wiki:snmp3.jpg?800 |snmp3.jpg}} На изображениях видно, как создается специальное предупреждение, которое выполняет скрипт с полным содержимым ловушки ( ''_data_'' ) и как создается SNMP-предупреждение. В данном случае он был отображен для конкретного OID (''.1.3.6.1.4.1.1722.2.10.1.1.1'') но он мог бы быть более общим, например, (''.1.3.6.1.4.1.1722'') для вызова //скрипта// для любого типа ловушек этой типологии. Выполняется //скрипт//, который обрабатывает эти данные и "анализирует" ловушку для записи данных непосредственно в Pandora FMS, генерируя XML и оставляя его в ''/var/spool/pandora/pandora/data_in'' в виде данных как если бы они пришли от агента. //Базовый скрипт// для этого случая может, например, генерировать сложную информацию, поскольку в этой ловушке довольно много информации, а именно: * Источник IP. * Главное событие (Cold start) * Секундарные события (описательные): AIX_Software_Failure, 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly. Разработав скрипт, который "разбирает" каждое из этих данных, например, "miscript.pl", и сохраняет в ''/var/spool/sandora/data_in'' XML с общим именем плюс случайное число, например: ''snmp_gateway.31415.data'' Созданный XML должен выглядеть следующим образом. async_proc async_string Применение этой технологии чрезвычайно широко, поэтому каждый //скрипт// должен быть настроен индивидуально, так как он может иметь очень динамичную структуру. Во многих системах получаемая информация является не только текстовой, но и числовой, так что она может питать числовые информационные модули и подобное, представлять графики и т.д.. Следует отметить, что **данные, генерируемые в XML, всегда должны быть асинхронного типа**. === Практический пример: мониторинг ESX с помощью ловушек === Одним из самых проблематичных вопросов для мониторинга является "распределенная" инфраструктура, особенно если каждая версия меняет свою реализацию для сбора информации, как, например, VmWare ESX. В этой небольшой главе мы попытаемся объяснить, как осуществлять мониторинг систем ESX с помощью внешнего менеджера SNMP-ловушек. Ловушки ESX выглядят следующим образом: .1.3.6.1.4.1.6876.4.3.301 = STRING: "host" .1.3.6.1.4.1.6876.4.3.302 = STRING: "c7000-06-01.tsm.inet" .1.3.6.1.4.1.6876.4.3.303 = "" .1.3.6.1.4.1.6876.4.3.304 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.305 = STRING: "Yellow" .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host cpu usage - Metric Usage = 1%" .1.3.6.1.4.1.6876.4.3.301 = STRING: "host" .1.3.6.1.4.1.6876.4.3.302 = STRING: "dl360-00.tsm.inet" .1.3.6.1.4.1.6876.4.3.303 = "" .1.3.6.1.4.1.6876.4.3.304 = STRING: "Yellow".1.3.6.1.4.1.6876.4.3.305 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host memory usage - Metric Usage = 84%" .1.3.6.1.4.1.6876.4.3.301 = STRING: "host" .1.3.6.1.4.1.6876.4.3.302 = "" .1.3.6.1.4.1.6876.4.3.303 = "" .1.3.6.1.4.1.6876.4.3.304 = STRING: "Red" .1.3.6.1.4.1.6876.4.3.305 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.306 = STRING: "Datastore usage on disk - Metric Storage space actually used = 55%" Как вы можете видеть, ловушки используются для сбора информации с процессора, диска или памяти. Общая идея менеджера ловушек заключается в написании небольшого //скрипта//, который способен "понять" ловушку и создать XML, выдавая себя за Программного Агента. **Таким образом, для каждой технологии должен быть написан свой менеджер ловушек, но весь процесс является общим. Процесс, позволяющий понять это, объясняется в четыре шага:** - Создать //handler script//. В своей работе вы можете использовать //скрипт//, представленный ниже. - Создайте команду предупреждения. - Создайте действие предупреждения с помощью вышеуказанных команд. Иногда с пользовательскими опциями для каждого агента "получателя", которого вы хотите (если у вас несколько групп ESX, вы наверняка выберете, чтобы данные находились на разных агентах). - Создайте предупреждение ловушки SNMP, которое отображает OID Enterprise (информация о ловушке для всех типов данной конкретной технологии и/или IP-адрес источника ловушки. == Шаг 1:Trap handler: esx_trap_manager.pl == #!/usr/bin/perl # (c) Sancho Lerena 2010 # Specific Pandora FMS trap collector for ESX use POSIX qw(setsid strftime); sub show_help { print "\nSpecific Pandora FMS trap collector for ESX\n"; print "(c) Sancho Lerena 2010 \n"; print "Usage:\n\n"; print " esx_trap_manager.pl \n\n"; exit; } sub writexml { my ($hostname, $xmlmessage ) = @_; my $file = "/var/spool/pandora/data_in/$hostname.".rand(1000).".data"; open (FILE, ">> $file") or die "[FATAL] Cannot write to XML '$file'"; print FILE $xmlmessage; close (FILE); } if ($#ARGV == -1){ show_help(); } $chunk = ""; # First parameter is always destination host for virtual server $target_host = $ARGV[0]; foreach $argnum (1 .. $#ARGV) { if ($chunk ne ""){ $chunk .= " "; } $chunk .= $ARGV[$argnum]; } my $hostname = ""; my $now = strftime ("%Y-%m-%d %H:%M:%S", localtime()); my $xmldata = ""; if ($chunk =~ m/.1.3.6.1.4.1.6876.4.3.302 \= STRING\: ([A-Za-z0-9\-\.]*)\s\.1/){ $hostname = "_".$1; } if ($chunk =~ m/Host cpu usage \- Metric Usage \= ([0-9]*)\z/){ $value = $1; $module_name = "CPU_OCUPADA$hostname"; } if ($chunk =~ m/Host memory usage \- Metric Usage = ([0-9\.]*)\z/){ $value = $1; $module_name = "MEMORIA_OCUPADA$hostname"; } if ($chunk =~ m/Datastore usage on disk \- Metric Storage space actually used \= ([0-9\.]*)\z/){ $value = $1; $module_name = "DISCO_OCUPADO$hostname"; } $xmldata .= "$module_nameasync_data $value\n"; $xmldata .= "\n"; writexml ($target_host, $xmldata); == Шаг 2: Создание команды предупреждения == В этом примере //скрипт// команды был помещен в ''/tmp'', измените его на подходящее место и убедитесь, что он может быть выполнен (''chmod 755''): {{ :wiki:snmp3.jpg?750 |snmp3.jpg}} == Шаг 3: Создание действия предупреждения == Создайте конкретное действие для отправки всей информации на определенные ловушки агентов. В этом случае информация будет отправлена агенту по имени ''WINN1247VSR''. Приведенная выше команда принимает в качестве параметров имя агента, который будет переносить всю информацию (''ESX Virtual Center''), и "куски" данных TRAP, которые могут быть неограниченными и включают всю информацию, которая отправляется в ловушку. {{ :wiki:snmp4.jpg?800 |snmp4.jpg}} == Шаг 4: Создание предупреждения SNMP == Настройте предупреждающие ловушки с помощью только что созданного действия для обработки всех встречающихся ловушек технологии ESX, используя конкретный OID ''.1.3.6.1.4.1.6876.4.3.301'' для отображения ловушек ESX. {{ :wiki:snmp5.jpg?600 |snmp5.jpg}} Вы также можете фильтровать по IP-источнику для каждого виртуального центра, фильтруя по IP-адресу источника (отправленному в ловушке). == Визуализация данных == Вот пример того, как будет выглядеть информация. Имея эти данные, вы можете управлять ими как стандартными модулями. {{ :wiki:snmp6.jpg?direct&800 |Haga clic para ampliar}} {{ :wiki:snmp7.jpg?800 |snmp7.jpg}} ==== SNMP trap forwarding ==== С Pandora FMS можно включить пересылку SNMP-ловушек на внешний хост, включив [[:ru:documentation:02_installation:04_configuration#snmp_forward_trap|snmp_forward_trap]] в //токене// в конфигурационном файле Pandora. === Пример конфигурации для пересылки ловушек с помощью SNMP v1 === snmp_forward_trap 1 snmp_forward_ip 192.168.1.145 snmp_forward_version 1 snmp_forward_secName snmp_forward_engineid snmp_forward_authProtocol snmp_forward_authPassword snmp_forward_privProtocol snmp_forward_privPassword snmp_forward_secLevel === Пример конфигурации для пересылки ловушек с помощью SNMP v2c === snmp_forward_trap 1 snmp_forward_ip 192.168.1.145 snmp_forward_version 2c snmp_forward_secName snmp_forward_engineid snmp_forward_authProtocol snmp_forward_authPassword snmp_forward_privProtocol snmp_forward_privPassword snmp_forward_secLevel === Пример конфигурации для пересылки ловушек с помощью SNMP v3 === Этот пример особенно сложен из-за того, что необходимы знания для работы с SNMP v3. Мы будем считать, что удаленный SNMP-агент, определенный в [[:es:documentation:02_installation:04_configuration#snmp_forward_ip|snmp_forward_ip]] имеет следующую запись в своем конфигурационном файле ''/etc/snmp/snmptrapd.conf''> createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword Тогда конфигурация в конфигурационном файле Pandora FMS будет такой: snmp_forward_trap 1 snmp_forward_ip 192.168.1.145 snmp_forward_version 3 snmp_forward_secName myuser snmp_forward_engineid 0x0102030405 snmp_forward_authProtocol MD5 snmp_forward_authPassword mypassword snmp_forward_privProtocol DES snmp_forward_privPassword myotherpassword snmp_forward_secLevel authNoPriv Для получения дополнительной информации посетите [[http://net- snmp.sourceforge.net/wiki/index.php/TUT:snmptrap_SNMPv3#SNMPv3_TRAPs|NET-SNMP v3 Traps]] ==== Независимое управление демоном snmptrapd ==== Возможно, по какой-то причине вы предпочитаете управлять демоном **snmptrapd** независимо от Pandora FMS (останавливать или запускать его независимо от основного //Daemon// Pandora FMS). Для этого необходимо иметь в виду несколько моментов: 1. В любом случае Вы должны включить [[:ru:documentation:02_installation:04_configuration#snmpconsole|параметр]] ''snmpconsole'' в Сервере Pandora FMS. 2. //Журналы//, настроенные на сервере Pandora FMS, должны совпадать с теми, которые генерируются при независимом вызове **snmptrapd** 3. Вызов **snmptrapd** должен быть в определенном формате **поскольку стандартный вызов системного демона недействителен**. Вызов должен выглядеть следующим образом (особенно важен параметр ''-A''): /usr/sbin/snmptrapd -A -t -On -n -a -Lf /var/log/pandora/pandora_snmptrap.log -p /var/run/pandora_snmptrapd.pid -- format1=SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n --format2=SNMPv2[**]%4y- %02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n 4. Вы должны настроить в файле конфигурации сервера //token//: snmp_trapd manual 5. При настройке этой функции необходимо выполнить следующую операцию: * Изменить конфигурацию в ''/etc/pandora/pandora_server.conf''. * Остановить сервер Pandora FMS. * Подтвердить, что процесс **snmptrapd** больше не выполняется (и если да, подождите, пока он "затухнет" или "выключить его"). * Запустить **snmptrapd** вручную(в формате, указанном выше). * Запустить сервер de Pandora FMS. === Управление файлом журнала ловушек === Процесс //snmptrapd// может быть остановлен и запущен без необходимости остановки и запуска процесса сервера Pandora FMS, только в том случае, если файлы ''pandora_snmptrap.log.index'' и ''pandora_snmptrap.log'' не будут изменены. Если эти файлы изменены, необходимо перезапустить сервер Pandora FMS. Если вам необходимо внешне вращать //журнал// ловушек, вам следует перезапустить сервер Pandora FMS после удаления ранее упомянутых файлов. ==== Буферизация ловушек SNMP ==== Если ловушки SNMP отправляются внешнему менеджеру через ненадежное соединение, часть информации будет потеряна. Вместо этого Pandora FMS позволяет пересылать ловушки с локального **snmptrapd** на ваш сервер Pandora FMS надежным способом. === Архитектура === {{ :wiki:remote_snmp_trap_schema.jpg }} * Агент SNMP отправляет ловушки на локальный **snmptrapd**. * Локальный агент Pandora FMS считывает ловушки из файла //журнала//**snmptrapd** и отправляет их на указанный сервер Pandora FMS в файле данных XML, сохраняя его в XML-буфере и при необходимости повторяя попытку позже. * Сервер данных считывает ловушки из файлов данных XML и сбрасывает их в обычный текстовый файл. * Консоль SNMP обрабатывает ловушки из обычного текстового файла. Для консоли SNMP эффективнее обрабатывать ловушки непосредственно из //журнала// **snmptrapd**. Такая конфигурация рекомендуется только в том случае, если надежность или прямое подключение вызывают опасения. === Пререквизиты === * Локальный **snmptrapd**, который получает ловушки. * Локальный агент Pandora FMS. * Установка Pandora FMS. === Конфигурация === == snmptrapd == Отредактируйте файл ''/etc/snmp/snmptrapd.conf'' и убедитесь, что вы сохраняете //журналы// в файл в формате, совместимом с Pandora FMS (при необходимости вы можете переименовать файл //журнала//): [snmp] logOption f /var/log/snmptrapd.log format1 SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n format2 SNMPv2[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n == Агент Pandora FMS == //Плагин// **grep_snmptrapd** **grep_snmptrapd**, поставляемый с Агентом Pandora FMS, будет использоваться для чтения данных из файла //журнала// **snmptrapd** . Отредактируйте файл конфигурации локального агента, ''/etc/pandora/pandora_agent.conf'', и добавьте следующую строку, при необходимости изменив путь к файлу //журнала// **snmptrad**: module_plugin grep_snmptrapd /var/log/snmptrapd.log == Сервер Pandora FMS == Вы должны указать SNMP-консоли обрабатывать ловушки из внешнего файла //журнала//, записанного сервером данных. Отредактируйте файла конфигурации сервера ''/etc/pandora/pandora_server.conf''> * Убедитесь, что консоль SNMP включена: snmpconsole 1 * Убедитесь, что сервер данных (Data Server) включен: dataserver 1 * Настройте вешний файл //журнала// SNMP. Если он не существует, консоль SNMP создаст его: snmp_extlog /var/log/pandora/pandora_snmptrap.ext.log **snmp_extlog** может быть любым файлом, в который может писать сервер Pandora FMS, но он должен отличаться от **snmp_logfile** (также определенного в ''/etc/pandora/pandora_agent.conf''). ==== Генератор ловушек ==== Этот инструмент позволяет генерировать пользовательские ловушки, которые впоследствии можно будет увидеть в консоли SNMP. {{ :wiki:generador_de_traps.png?650 }} Чтобы правильно настроить генератор ловушек, необходимо заполнить следующие поля: **Host Address** IP-адрес назначения для отправки ловушки. **Community** Пароль сообщества SNMP, к которому вы пытаетесь получить доступ с помощью генератора ловушек. **Enterprise string** Настройте OID (Object Identifier) ловушки. Например: ''1.3.6.1.2.1.2.2.1.8'' . **Value** Значение, которое вы хотите присвоить ловушке и которое затем появится как Data. **SNMP Agent** ВВедите агент, на котором мы будем имитировать ловушку, обязательно укажите его IP-адрес. **SNMP Type** Выберите тип SNMP из следующих вариантов: * **Cold Start**: Указывает, что агент был запущен или перезапущен. * **Warm Start**: Указывает, что конфигурация агента была изменена. * **Link down**: Указывает на то, что интерфейс связи вышел из строя (неактивен). * **Link up**: Указывает, что один интерфейс связи был активирован. * **Authentication failure**: Указывает, что агент получил запрос от неавторизованной (контролируемой сообществом) NMS. * **EGP neighbor loss**: Указывает, что в системах, где маршрутизаторы используют протокол EGP, близлежащий //хост// вышел из строя. * **Enterprise**: Эта категория содержит все новые ловушки, включая ловушки поставщиков. [[:ru:documentation:start|Вернуться в оглавление Документации Pandora FMS]]