В предыдущих статьях ([1], [2], [3]) были показаны реализация мониторинга и управление температурой с помощью устройств NetPing и программных пакетов MRTG и Cacti.
Однако оба варианта не свободны от недостатков, так. например, MRTG не имеет удобного инструмента настройки и не позволяет штатными средствами ограничить доступ пользователей к графикам, а Cacti хотя и свободен от указанных выше недостатков, но не имеет поддержки триггеров и потому исключает возможность своевременной обработки исключительных ситуаций.
От всех этих недостатков свободна система мониторинга Zabbix. Она проста в установке, имеет простой интерфейс управления, поддержку триггеров и позволяет управлять просмотром графиков пользователями. Единственным минусом системы является полная невозможность работы с отрицательными значениями показателей, но если говорить о мониторинге температуры в помещении, где температура обычно положительная, этот недостаток мешать не будет.
В этой статье будет показано, как организовать мониторинг температуры с использованием устройств NetPing TS v2 и Zabbix, а также настроить своевременное оповещение пользователей о критических ситуациях.
Переходим к развёртыванию нашего решения. Для начала опишем начальные условия:
- Сервер мониторинга под управлением Ubuntu 9.04 Server, который имеет IP-адрес 192.168.2.230;
- Устройство NetPing TS v2, имеющее IP-адрес 192.168.2.10, и SNMP-Community SWITCH, доступ к которому разрешён, как минимум, с сервера мониторинга.
Первым делом, установим на сервер Zabbix (нам понадобиться zabbix-server и web-интерфейс к нему):
apt-get install zabbix-server-mysql zabbix-frontend-php
В процессе установки потребуется скачать примерно пятьдесят пять мегабайт (если говорить о "свежеустановленном" сервере) и установить ряд дополнительных необходимых пакетов (в частности apache2 и mysql-server).
Также во время установки будет задан ряд вопросов. Почти на все можно выбрать ответ по умолчанию, кроме пароля для доступа zabbix к его базе данных, в данном случае лучше придумать пароль самому, потому что если не заполнять это поле - пароль будет сгенерирован автоматически, причём разный для сервера и веб-интерфейса (хотя должен быть одинаковый!), и система не будет работать.
После установки нужно открыть в браузере адрес: "http://192.168.2.230/zabbix". Если при открытии страницы будет выдано информационное сообщение о том, что не установлена переменная date.timezone в файле php.ini, то нужно добавить в файл /etc/php5/apache2/php.ini в секцию Date строку:
date.timezone = "Europe/Moscow"
Разумеется, что часовой пояс нужно указывать свой (список возможных часовых поясов можно найти в директории /usr/share/zoneinfo). Далее необходимо перезапустить web-сервер:
invoke-rc.d apache2 restart
Далее обновляем страничку и авторизуемся в системе, используя логин «Admin» и пароль «zabbix».
Положительной особенностью системы Zabbix является возможность использования шаблонов наблюдаемых хостов, которые можно экспортировать/импортировать, поэтому для упрощения задачи был подготовлен готовый шаблон, который можно скачать тут. Остаётся только импортировать его в систему.
Для импорта шаблона нужно перейти в раздел «Configuration» -> «Export/Import» и выбрать в выпадающем меню пункт «Import». В появившемся диалоге нужно выбрать наш файл шаблона и нажать кнопку «Import», после этого должно появится сообщение об успешной загрузке шаблона.
Теперь создадим хост, который будет наблюдаться по этому шаблону. Для этого переходим в раздел «Configuration» -> «Hosts», в выпадающем меню выбираем пункт «Hosts» и нажимаем кнопку «Create Host», открывшуюся таблицу заполняем следующим образом:
1Параметр | Значение |
---|---|
Name | "Человеческое" имя хоста, например, «NetPing TS v2» |
In Groups | Эта группа полей используется для выбора группы, в которой будет находиться хост. Выберите одну или несколько групп и/или создайте новую, используя поле «New group» |
DNS name | Лучше оставить пустым |
IP address | 192.168.2.10 |
Connect to | IP address |
Port | 161 |
Monitored by proxy | (no proxy) |
Status | Monitored |
Link with Template | Здесь надо выбрать шаблон «Template_NetPing_TS_v2» |
Остальные параметры оставляем по умолчанию и жмём «Save», после чего должно появится сообщение об успешном добавлении хоста, если же будет показано сообщение об ошибке - внимательно проверьте правильность заполнения формы.
Убедиться, что началось наблюдение за устройством, можно в разделе «Monitoring» -> «Overview» -> «Data». Если клинкуть по текущему значению температуры, то можно увидеть примерно вот такой график:
Зелёная линия на графике показывает среднее значение температуры, а жёлтое поле - колебания этого значения.
Всё, мониторинг температуры у нас есть. Какими могут быть следующие шаги? Ну, во-первых, это сведение нескольких графиков в один (чтобы можно было наблюдать за температурой сразу в нескольких точках, а также делать сравнительные оценки), а во-вторых, мы можем настроить оповещения об отклонении температуры от нормы.
Для начала попробуем сделать сводный график с двух сенсоров, для этого переходим в раздел «Configuration» -> «Graphs» и нажимаем кнопку «Create Graph». В появившейся форме нужно ввести имя графика, например, «Term1 vs Term2» и добавить на график два элемента: «NetPing TS v2: Term on sensor 1» и «NetPing TS v2: Term on sensor 2». Добавление элементов сделано интуитивно понятным, и потому заострять на нём внимание мы не будем. После добавления элементов нужно нажать кнопку «Save», и график будет создан.
Чтобы просмотреть график нужно перейти в раздел «Monitoring» -> «Graphs» и выбрать его в списке. Выглядеть сводный график будет примерно вот так:
Закончив со сводными графиками, перейдём к настройке оповещений, для начала создадим триггер, который будет срабатывать, когда температура на первом сенсоре превысит отметку в двадцать девять градусов, для этого идём в раздел «Configuration» -> «Triggers» и нажимаем кнопку «Create Trigger». Появившуюся форму нужно заполнить следующим образом:
Параметр | Значение |
---|---|
Name | Название триггера. Например, «High temperature on sensor 1» |
Expression | Тут надо добавить выражение "{NetPing TS v2:SWITCH_1.last(0)}>29", которое означает, что триггер включается, когда температура на первом сенсоре нашего устройства превышает отметку в 29 градусов. В принципе, можно задать любое условие, для этого надо воспользоваться кнопкой «Insert», после нажатия которой появится удобный и интуитивно понятный мастер создания выражений |
The trigger depends on | Здесь нужно указывать зависимости триггера. В данном случае их нет |
Event generation | Normal |
Severity | Уровень важности триггера. Например, «Warning». |
Comments | Комментарии к триггеру. Можно оставить это поле пустым |
URL | Адрес с дополнительной информацией о триггере. В данном случае лучше оставить пустым |
Disabled | Если поставить галочку - триггер будет отключен. Нам этого не нужно, так что оставляем как есть |
Далее нажимаем кнопку «Save» и получаем сообщение об успешном создании триггера. Состояние триггера можно просмотреть на странице «Monitoring» -> «Overview», выбрав в выпадающих меню группу, в которой находится наше устройство и тип отображения «Triggers».
Если мы хотим получать состояние триггера по e-mail/Jabber/SMS, то для начала зададим средства связи для нашего пользователя, можем так же создать отдельного пользователя и назначать средства связи ему.
Средства связи задаются в разделе «Administration» -> «Users». Там нужно выбрать текущего пользователя и в открывшейся форме заполнить раздел «Media», добавив новые средства связи, следует отметить, что выбирая уровни важности оповещений в разделе «Use if severity», как минимум, нужно поставить галочку напротив того уровня, который был задан при создании триггера в разделе «Severity».
Кроме того нужно ещё посетить раздел «Administration» -> «Media types» и сконфигурировать средства отправки сообщений. Рассмотрение этих настроек выходит за рамки статьи, так что если Вы не знакомы с ними, рекомендуем обратиться к официальной документации Zabbix.
Закончив настройку средств оповещения, настроим отправку состояний заданного триггера указанному пользователю, для этого переходим в «Configuration» -> «Actions» и нажимаем кнопку «Create Action». Открывшуюся форму заполняем следующим образом:
Параметр | Значение |
---|---|
Name | Имя триггера. Например, «High term on sensor 1» |
Event source | Triggers |
Default subject | Тема отправляемого письма. Можно оставить по умолчанию |
Default message | Тело отправляемого письма/SMS/сообщения в Jabber. Можно оставить по умолчанию. |
Recovery message | Поставьте галочку, если хотите получать оповещении так же о возврате триггера в исходное состояние. Если включить, то надо будет также заполнить поля «Recovery subject» и «Recovery message» по аналогии с «Default message» и «Default subject». |
Status | Enabled |
Action conditions | Здесь нужно создать хотя бы одно условие, при выполнении которого будет отсылаться сообщение. В нашем случае нужно создать такое условие: "Trigger = 'High temperature on sensor 1'", для этого нужно нажать кнопку «New» и следовать подсказкам мастера. Закончив создание условия, нужно добавить его, нажав кнопку «Add». |
Action operations | Описываем действие. Необходимо воспользоваться мастером создания действий и создать действие вроде "Send message to User 'Admin'". Подробнее опять же читайте в документации |
Закончив заполнение формы, жмём кнопку «Save» и получаем сообщение об успешном создании действия. Теперь попробуем протестировать нашу систему. Если первый датчик находится сейчас при комнатной температуре, то мы можем просто зажать его пальцаи, и нагрев до температуры человеческого тела, которая заведомо выше порога в двадцать девять градусов, в течение нескольких минут, получить информационное сообщение о перегреве.
После того как мы отпустим датчик, он начнёт постепенно охлаждаться, и через некоторое время триггер выключится. Если при создании действия была установлена галочка «Recovery message», то об этом так же придёт сообщение.
На этом всё. Приятной работы!
P.S. Статья написана по просьбе «Алентис Электроникс» и так же опубликована на сайте компании.
P.P.S. Отдельное спасибо Фроловой Марии за корректировку статьи.
Anonymous 2013-07-19 15:24:42 (#)