Настройка мониторинга Zabbix для IT-инфраструктуры компании. Использование Zabbix для мониторинга критических систем

  • 22.07.2019

В любой сети, где есть больше, чем один сервер, очень полезно бывает иметь перед глазами полную картину происходящего. В крупных сетях, где количество хостов переваливает за несколько десятков, следить за каждым в отдельности - непосильная задача для администраторов. Для облегчения задачи наблюдения применяются системы мониторинга, и я расскажу об одной из них, которой на Хабре не посвящено ни одной полноценной статьи.

И так, встречайте: Zabbix . Система состоит из нескольких частей, и при большой нагрузке и наблюдении за очень большим количеством хостов позволяет разнести эти части на несколько раздельных машин.

Zabbix состоит из

  • собственно сервера мониторинга, который выполняет периодическое получение данных, обработку, анализ и запуск скриптов оповещения
  • базы данных (MySQL, PostgreSQL, SQLite или Oracle)
  • веб-интерфейса на PHP
  • агента - демона, который запускается на отслеживаемых объектах и предоставляет данные серверу. Агент опционален, мониторинг можно производить не только с помощью него, но и по SNMP (версий 1, 2, 3), запуском внешних скриптов, выдающих данные, и несколько видов предопределенных встроенных проверок, таких как ping, запрос по http, ssh, ftp и другим протоколам, а так же замер времени ответа этих сервисов.

В рамках вводной статьи стоит рассказать о том, какая модель сети используется в Zabbix, чтобы лучше понимать, что к чему и получить представление о возможностях системы.

Основная логическая единица - Узлы сети (host), сервера, находящиеся под наблюдением. Каждому серверу присваивается описание и адрес (dns или ip, можно оба, причем с возможностью выбирать, что использовать для соединения).

Узлы объеднияются в группы , например веб-сервера или сервера баз данных. Группы служат для вывода только определенных серверов при наблюдении.

Каждый узел имеет несколько Элементов данных (items) - параметров, за которыми ведется мониторинг. К примеру, на всех серверах у меня есть параметр ping, (он получается с помощью встроенной проверки), который равняется 1, если ответ на последний ping-запрос был получен, иначе 0. А на одном из серверов у меня есть параметр «количество пользователей онлайн», который собирается самописным скриптом из базы данных сайта. Для каждого элемента данных можно указать свой период обновления, способ хранения(сам параметр или скорость его изменения), множитель, временной интервал сбора (например только в рабочее время).

Создавать элементы данных для каждого из множества серверов - сложно, поэтому можно создать узлы-шаблоны . Эти узлы тоже содержат элементы данных, но они не мониторятся напрямую. Вместо этого реальный хост связывается с одним или несколькими шаблонами, и все параметры шаблона автоматически наследуются хостом. Так, элемент ping у меня хранится именно в шаблоне, и я просто связываю все хосты с шаблоном template_ping.

Человек - не робот, и следить за тысячами параметров и думать, не выходит ли это значение за допустимые границы, просто нереально. Но и тут Zabbix предоставляет гибкие возможности по настройке условий-триггеров , которые включаются при авариях и неполадках, и система начинает моргать лампочками (на самом деле красными квадратиками) и изо всех сил пытается показать администратору, что что-то случилось. Между прочим, при включении триггера веб-интерфейс даже начинает попискивать на манер будильника, наверное, чтобы разбудить заснувших на клавиатуре наблюдателей. :) Так что колонки здесь, наверное не помешают. А в упомянутом выше моем шаблоне template_ping есть и триггер, который реагирует на отсутствие пинга больше, чем на две минуты.

А если администратора нет на месте? Ничего, Zabbix достаточно самостоятелен и сможет отправить уведомление на почту, в jabber или sms с помощью gsm-модема, или даже попытаться самостоятельно поднять упавший сервис, выполнив заранее определенные действия , которые запускаются при срабатывании определенных триггеров.

Скучно сидеть и вглядываться в квадратики и бесконечно бегающие цифры? По данным любого параметра система сможет построить график изменения, причем не за предопределенные и жестко заданные временные интервалы (вспомните mrtg/rrdtool: daily, weekly, monthly, yearly), а за любой промежуток времени с максимальным разрешением. Хотите посмотреть в деталях, как изменялась нагрузка на сервер во время хабраэффекта месяц назад? Пожалуйста, график с разрешением в 30 секунд(именно таков интервал опроса по умолчанию) к вашим услугам. Хотите общую картину? Выберите интервал в месяц и посмотрите на среднюю величину, и разброс колебаний до максимума и минимума. Сравнить? Можно создавать сложные графики, отображающие на одном поле несколько параметров, и вы сразу увидите, что пиковые значения Load Average соответствуют пикам трафика.

Для отображения логической структуры сети можно создавать карты сети , отображающие именно расположение узлов сети и связей между ними. Естественно, состояние узлов (доступен или нет) отображается и на карте.

Кроме того, для более удобного обзора есть комплексные отчеты , которые позволяют на одном экране просматривать сразу несколько сущностей - графики, данные, триггеры…

Zabbix - довольно мощная и обширная система, и запасе у него есть еще полдесятка функций, которые позволяют еще больше упростить наблюдение за сетью, такие как мониторинг состояния веб-сайта с помощью автоматического выполнения сценария вроде «залогиниться, посмотреть новые сообщения и выйти», но их я еще даже не касался.

Скриншоты - с официального сайта Zabbix, и остальные можете посмотреть именно там (а их там много) -

Доброго времени суток. В данную серию статей я хочу посвятить одной из замечательных систем мониторинга - zabbix. По долгу службы пришлось мне искать систему мониторинга. Я останавливался на nagios, cacti, mrtg. Но они мне не подошли. И вот я нашел zabbix. Ознакомившись с документацией, я понял, что zabbix - это то, что надо...

И так, что же такое zabbix? Zabbix - это система распределенного мониторинга, которая позволяет мониторить многочисленные параметры сети и узлов сети. Zabbix распространяется под лицензией GPL, а это означает - она бесплатна.

Возможности zabbix

Как я уже говорил выше, zabbix обладает огромными возможностями, а конкретно:
  • мониторинг доступности
  • мониторинг по SNMP
  • мониторинг по IPMI
  • мониторинг по JMX
  • собственная настройка порогов срабатывание проблемы
  • настройка оповещений
  • группировка по хостам, по собираемым данным
  • использование шаблонов
  • система прав доступа
  • и многое другое

Подготовка к установке zabbix

Сразу хочу отметить, что установку я буду производить на Linux, а точнее на Ubuntu Server.
Установку я буду производить из исходников. Поэтому давайте в начале скачаем исходный код Zabbix с . Разархивируем скачанный архив. Для этого переходим в директорию с архивом и вводим комманду:

$ tar -zxvf zabbix-2.0.0.tar.gz

Отлично. Следующим этапом необходимо подготовить нашу систему к установке zabbix. Нам понадобятся следующие пакеты:
  • snmp
  • libsnmp-dev
  • snmpd
  • libcurl4-openssl-dev
  • fping
Этих пакетов достаточно для того, чтобы zabbix смог опрашивать узлы на доступность и собирать информацию по SNMP.
Если данные пакеты не установлены в системе, установим их:

sudo apt-get install snmp libsnmp-dev snmpd libcurl4-openssl-dev fping

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

groupadd zabbix
useradd -g zabbix zabbix

Теперь нужно подготовить базу данных. Zabbix может работать как с MySQL, так и с PostgreSQL. (поддерживает и другие, Вы можете ознакомиться в официальной документации). Производитель рекомендует использовать в качестве сервера базы данных PostgreSQL, если Вы собираетесь мониторить более 50 узлов.
Но я использую MySQL и на данный момент у меня на мониторинге стоит 123 узла - пока проблем не наблюдал. В дальнейшем планируется увеличение узлов, тогда и посмотрим. И так, создаем базу данных в MySQL:

shell> mysql -u <имя пользователя> -p
<пароль>
mysql> create database zabbix character set utf8
mysql> quit

Теперь заходим в директорию с разархивированными исходниками zabbix. В ней в директории./database/mysql/ находятся три файла:

  1. schema.sql
  2. images.sql
  3. data.sql
И запускаем их на исполнение:

mysql -u <пользователь> -p < schema.sql

или из самого mysql:

mysql>use zabbix
mysql>source schema.sql

По аналогии запускаем и остальные файлы images.sql и data.sql
Порядок обязателен.
Все на этом этап подготовки к установке завершен. Теперь можно приступить к самой установке zabbix.

Установка мониторинга zabbix

Переходим в директорию с кодом zabbix и запускаем:

sudo ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl

Мы подключаем сам zabbix сервер, zabbix агент, поддержку snmp.
Если все прошло хорошо (а об ошибках с которыми я столкнулся и как их решить я опишу ниже) запускаем установку:

sudo make install

На этом установка завершена. Осталось произвести небольшую конфигурацию сервера и агента zabbix.

Первоначальная настройка zabbix

Для работы zabbix сервера необходимо произвести первоначальные настройки. Открываем файл конфигурации /usr/local/etc/zabbix_server.conf (так в Ubuntu) и редактируем его:

DBName=[имя базы данных, у меня zabbix]
DBUser = [имя пользователя доступа к MySQL]
DBPassword = [пароль доступа к базе данных]

Вот в принципе и все. Если у Вас MySQL настроен по умолчанию, то все должно заработать.
Теперь настроим агент zabbix. Если zabbix агент находится на той же машине, где и zabbix сервер, то ничего менять не надо. Если же zabbix агент находиться на другой машине, то открываем /usr/local/etx/zabbix_agentd.conf ищем строку Server=127.0.0.1 и заменяем на Server=[адрес zabbix сервера]
Вот и все. Запускаем zabbix сервер и агент командами:

zabbix_server
zabbix_agentd

Пришло время к установке web интерфейса для zabbix.

Установка web интерфейса zabbix

Создаем виртуальный хост zabbix, как это сделать я писал в своей статье про . Копируем в директорию созданного виртуального хоста файлы из директории с zabbix/frontends/php
Заходим на наш хост. Тут нужно немного подправить наш php.ini согласно требованиям zabbix.
  • memory_limit - задает максимальную величину использования памяти скриптом
  • post_max_size - устанавливает максимальный размер данных передаваемых методом POST
  • upload_max_filesize - максимальный размер загружаемого файла
  • max_execution_time - время выполнения скрипта
  • max_input_time - максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные
  • timezone - в php.ini date.timezone, устанавливает часовой пояс
Дальше идут расширения PHP
  • datebase support - тип базы данных
  • bcmath - вычисления с произвольной точностью
  • mbstring - работа с многобайтными строками
  • sockets - работа с сокетами
  • gd - графическая библиотека
  • и др.
Перезапускаем сервер apache.
После того как все требования zabbix будут удовлетворены, можно перейти к следующему шагу.

На этом шаге нам надо выбрать тип базы данных (в моем случае это MySQL), укаазать адрес сервера (у меня localhost), название базы данных (для моего случае это zabbix), логин и пароль для доступа к базе данных:

После ввода всех данных жмем “Test connection”, если тест прошел успешно переходим к следующему шагу, если же нет, то проверяем введенные данные. Если вся информация введена правильно - переходим к установке, нет - возвращаемся и исправляем.

Как видите у меня все прошло успешно. Учтите, что файл zabbix.conf.php должен быть открыт на запись. Как это сделать я описывал в своей статье об Жмем “Finish”. И переходим к окну авторизации.

По умолчанию логин - Admin, пароль - zabbix.
На этом установка завершена.
Давайте рассмотрим проблемы с которыми я столкнулся при установке zabbix и как их решить.

Проблемы возникающие при установке zabbix и их решение

Во время установки мониторинга я столкнулся с двумя ошибками:

  1. При выполнении configure у меня выскочила ошибка “MySQL library not found”. Решается данная проблема легко, путем установки libmysqlclient16-dev
  2. Вторая ошибка выскочила при выполнении make install “The programm ‘make’ is currently not installed”. Тут все просто, у меня не установлена программа make.
Больше при установке zabbix проблем не возникло. Если же у Вас что-то пошло не так и Вы не знаете как это решить или решили - делитесь в комментариях. Думаю это будет полезно всем.
А на этом я завершаю статью, посвященную установке мониторинга zabbix. В следующей статье мы познакомимся с основными понятиями, затем разберем интерфейс и перейдем к настройке мониторинга хостов (устройств нашей сети). Так, что следите за выходом новых статей.

20 Фев 2018

Zabbix - это свободная (open-source) система для мониторинга состояния компьютерных сетей, серверов и различного оборудования. Фактически программа состоит из трех компонентов:

  1. Zabbix-сервер - это ядро системы (центральный процесс) программного обеспечения Zabbix. Используется для хранения и обработки всей информации, а также оповещает администраторов о возникающих проблемах.
  2. Zabbix-прокси - это процесс, который собирает данные с нескольких узлов в локальное хранилище. После этого, он передает всю информацию на сервер (единым пакетом).
  3. Zabbix-агент - это программа, устанавливаемая непосредственно на наблюдаемое устройство. Собирает всю информацию (о локальных ресурсах и приложениях), которая после передается на сервер.

Стоит отметить особенности Zabbix - программа поддерживает множество платформ (Linux, Mac OS, Windows) и доступна через веб-интерфейс. С его помощью вы можете получить доступ к данным мониторинга с любого ПК, но для этого стоит выполнить предварительную настройку на Zabbix-сервере.

Возможности Zabbix

Для сбора информации Zabbix использует системные вызовы, благодаря чему, влияние на производительность минимальное. Ознакомится с параметрами, которые мониторятся с помощью Zabbix можно в таблице.

Детальные параметры

Базовые параметры

Объем занятой оперативной памяти

Свободное место на диске

Скорость работы накопителей (IOPS)

Изменения определенных файлов

Информация о сервере (время работы, имя)

Мониторинг комплектующих сервера. Для данного мониторинга используется интерфейс IPMI (либо его аналоги)

Температурные показатели (информация со всех установленных датчиков) и вольтаж комплектующих

Скорость вращения вентиляторов

Информация о сетевом оборудовании

Уровень трафика (с разделением на download и upload)

Состояние интерфейсов, а также информация о возникающих ошибках

Мониторинг служб

Получение информации о службах на сервере (например, о конкретных портах)

Различные параметры служб MySQL Asterisk, Microsoft Exchange

Сертификаты

Срок службы сертификатов

Это позволяет предотвратить возникающие проблемы до их наступления, а также точно определить “узкое” место в системе. Мониторинг осуществляется круглосуточно, что позволяет фиксировать все ошибки, независимо от времени их возникновения. Давайте разберемся, какие практические сценарии использования мониторинга Zabbix.

Пример 1. Непредвиденное отключение сервера

Возможная проблема

В ходе работы сервера накапливаются системные файлы. Это может привести к отключению сервера из-за переполнения системного диска C.

Решение

Мониторинг системы, был настроен на вывод предупреждения, если на диске доступно менее 5 Гб. Таким образом, администратор может предотвратить возникновение данного инцидента вновь, очистив диск С от ненужных файлов.



Пример 2. Некорректно работающее резервное копирование

Проблема

Бэкапы успешно выполнялись каждый день, однако, при очередном резервном копировании возникла ошибка. Настройки не изменялись.

Решение

Так как видимых причин проблемы нет (изменение настроек и т.д.), был установлен мониторинг. С его помощью выяснилось, что установленный сертификат неактуален - закончился срок действия. Сертификат был обновлен, после чего резервное копирование работает корректно.

Кроме того, Zabbix был настроен на отслеживание состояния сертифика. Как только срок его действия подходит к концу, администратор системы получал об этом уведомление.


Пример 3. Безопасность системы

Проблема

Несанкционированное добавление нового пользователя Linux, либо изменение прав уже существующих. Таким образом, злоумышленники могут получить доступ к всей системе и хранящейся информации.

Решение

Мониторинг файла passwd (в нем хранится информация о пользователях), сообщающий о его изменениях. В случае добавления нового пользователя или изменения прав у существующих, администратор получает уведомление об этом. Благодаря круглосуточному мониторингу, специалисты It-lite отреагируют на это в кратчайшие сроки и предпримут необходимые действия. Это позволит предотвратить несанкционированный доступ к системе в любое время суток.

Внедрение Zabbix

Как видим, Zabbix полезный инструмент, позволяющий не только найти причины ошибки, но и избежать ее повторения в будущем. Однако, для получения полной и корректной информации, следует выполнить его настройку. Это технически сложный процесс, для которого не подходит универсальная инструкция. У специалистов It-lite большой опыт таких работ, благодаря чему они быстро и качественно выполнят внедрение мониторинга Zabbix. При этом, они обязательно учитывают нюансы настраиваемой инфраструктуры.

Примеры применения

31.10.2018

При выборе системы мониторинга ИТ-инфраструктуры предприятия нужно учесть ряд факторов: в первую очередь оценить соответствие функционала системы мониторинга вашим техническим и бизнес-требованиям и рассмотреть особенности развёртывания и сопровождения, чтобы подобрать инструмент, соответствующий вашей инфраструктуре и уровню компетенции ИТ-специалистов.

В этой статье мы рассмотрим особенности, различия и схожие черты двух популярных систем мониторинга Zabbix vs Nagios .

Краткий обзор продуктов


Использование систем мониторинга с оборудованием NetPing


Ранее в нашем блоге мы неоднократно рассматривали возможность использования систем мониторинга Zabbix и Nagios с и компании .

Процесс подключения устройств к системам мониторинга рассматривается в следующих статьях:

Процесс организации мониторинга при помощи интеграции устройств и систем мониторинга Zabbix и Nagios рассматривается в статьях:

Процесс организации отправки пользовательских сообщений о событиях из систем мониторинга Zabbix или Nagios посредством SMS-сообщений с использованием GSM-модема встроенного в устройства рассматривается в статьях:

Также в нашем блоге доступны для более удобного добавления устройств к мониторингу в системе Zabbix и другие статьи о практическом применении интеграции системы мониторинга Zabbix с устройствами :

  • Карта пользователя и уведомления от устройств NetPing в Zabbix

Достоинства и недостатки

Zabbix

Достоинства

Недостатки

Полностью бесплатный.

Мониторинг серверов и рабочих станций осуществляется через постоянно запущенный агент.

Конфигурирование через web-интерфейс и с помощью API.

Все данные мониторинга хранятся в базе, что в крупных сетях требует выделения дополнительных вычислительных мощностей для обслуживания базы данных.

Вся конфигурация хранится в базе, управляется через web-интерфейс.

Не обеспечивается отказоустойчивость.

Единая точка доступа для пользователей.

Разграничение доступа к данным и конфигурации.

Минимальный интервал между замерами – 1 секунда.

С серверов собираются не результаты проверок (сломалось или нет), а количественные характеристики работы, которые анализируются на стороне сервера.

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


Развитые возможности анализа собранных данных.


Nagios

Достоинства

Недостатки

Простой формат конфигурационного файла. При наличии минимального опыта в программировании можно писать собственные плагины для Nagios.

Нет возможности конфигурирования через web-интерфейс (для бесплатной версии). Все изменения конфигурации выполняются правкой файлов конфигурации с последующим полным перезапуском сервера Nagios (~10-15 минут).

Позволяет оставлять комментарии с меткой времени.

Слишком большой интервал между проверками и замерами параметров.

Существуют плагины на все случаи жизни от сторонних производителей.

Мониторинг был и остается важнейшей частью системного и сетевого администрирования. Но если для маленькой локальной сети зачастую достаточно время от времени смотреть логи, то в случае крупных систем приходится использовать специализированные средства. Об одном из них - Zabbix и поговорим сегодня.

Введение

Начнем с архитектуры. Система мониторинга Zabbix состоит из нескольких подсистем, причем все они могут размещаться на разных машинах:

  • сервер мониторинга, который периодически получает и обрабатывает данные, анализирует их и производит в зависимости от ситуации определенные действия, в основном оповещение администратора;
  • база данных - в качестве таковой могут использоваться SQLite, MySQL, PostgreSQL и Oracle;
  • веб-интерфейс на PHP, который отвечает за управление мониторингом и действиями, а также за визуализацию;
  • агент Zabbix, запускается на той машине/устройстве, с которой необходимо снимать данные. Его наличие хоть и желательно, но, если установить его на устройство невозможно, можно обойтись SNMP;
  • Zabbix proxy - используется в основном в тех случаях, когда необходимо мониторить сотни и тысячи устройств для снижения нагрузки на собственно сервер мониторинга.

Логическая единица мониторинга - узел. Каждому узлу присваивается описание и адрес - в качестве адреса можно использовать как доменное имя, так и IP. Узлы могут объединяться в группы, к примеру группа роутеров, для удобства наблюдения. Каждому серверу соответствует несколько элементов данных, то есть отслеживаемых параметров. Поскольку для каждого сервера настраивать параметры, за которыми нужно следить, неудобно (особенно это верно для больших сетей), можно создавать узлы-шаблоны и каждому серверу или группе серверов будет соответствовать несколько шаблонов.

В статье будут рассмотрены интересные сценарии использования Zabbix, но сначала опишем установку этого решения на RHEL-подобные системы с MySQL в качестве БД.

Установка и первичная настройка

Перво-наперво надо подключить репозиторий EPEL:

# yum install http://ftp.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm

Затем поставить нужные пакеты:

# yum install zabbix20-server zabbix20-agent zabbix20-web-mysql nmap httpd policycoreutils-python net-snmp net-snmp-utils # yum groupinstall "MySQL Database Client" "MySQL Database Server"

Для чего нужен httpd и утилиты SNMP, полагаю, понятно. А вот Nmap нужен для некоторых проверок, чтобы заполнить элементы данных. Теперь необходимо настроить автозапуск служб и их запустить.

# chkconfig httpd on # chkconfig mysqld on # chkconfig zabbix-server on # chkconfig zabbix-agent on # service mysqld start

И конечно же, надо произвести начальную настройку MySQL.

# mysql_secure_installation

Затем заходим в консоль MySQL и создаем БД и пользователя:

Mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT ALL PRIVILEGES ON zabbix.* TO "zabbix"@"localhost" IDENTIFIED BY "zabbixpassword";

Теперь импортируем базы данных:

# mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/schema.sql # mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/images.sql # mysql -u zabbix -p zabbix < /usr/share/zabbix-mysql/data.sql

Редактируем файл конфигурации сервера Zabbix (/etc/zabbix_server.conf):

# <...> DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix

Слегка подкрутим конфигурацию PHP (/etc/php.ini):

# <...> max_execution_time = 300 max_input_time = 300 post_max_size = 16M date.timezone = Asia/Omsk

Настраиваем SELinux:

# semanage port -a -t http_port_t -p tcp 10051 # setsebool -P httpd_can_network_connect on

Наконец, запускаем оставшиеся службы:

# service httpd start # service zabbix-server start # service zabbix-agent start

В браузере подключаемся к http://server_name/zabbix и производим начальную конфигурацию фронтенда Zabbix (то есть имя БД, имя пользователя и пароль). После этого начальную настройку можно считать завершенной.



Мониторинг nginx и memcache

Для мониторинга nginx можно, разумеется, использовать самописные скрипты. Но в некоторых случаях, когда времени катастрофически не хватает, хочется найти что-нибудь готовое. В случае с nginx таким готовым решением будет набор питоновских скриптов ZTC. Для их установки сперва нужно установить некоторые пакеты:

# yum install lm_sensors smartmontools

Затем используй следующие команды:

# wget https://bitbucket.org/rvs/ztc/downloads/ztc-12.02.1-1.el6.noarch.rpm # rpm -ivh --nodeps ztc-12.02.1-1.el6.noarch.rpm

Опция —nodeps нужна по причине того, что пакет требует версию Zabbix 1.8, но ничто не мешает попробовать ZTC и на последних его версиях.

Теперь добавим еще один конфиг nginx (/etc/nginx/conf.d/nginx_status.conf):

Server { listen localhost; server_name nginx_status.localhost; location /server-status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }

И поправим конфиг nginx в ZTC (/etc/ztc/nginx.conf):

# <...> proto=http host=localhost port=80 resource=/server-status

Проверим работу скрипта ZTC:

# /opt/ztc/bin/nginx.py ping # /opt/ztc/bin/nginx.py ping

Если все нормально, настраиваем Zabbix-agent на нужной машине (/etc/zabbix-agentd.conf):

# <...> UserParameter=nginx[*],/opt/ztc/bin/nginx.py $1

Теперь нужно настроить веб-интерфейс. Для этого необходимо импортировать шаблон Template_app_nginx.xml , что лежит в /opt/ztc/templates/ . Замечу, что лежит он именно на том компьютере, где установлен ZTC, так что если у тебя на сервере нет GUI, то файл придется копировать на машину, на которой установлен браузер и с которой собственно и ведется мониторинг.

Не стоит забывать, что в этом наборе скриптов кроме мониторинга nginx есть еще мониторинг и других приложений, таких, например, как MongoDB. Настраивается он аналогично, поэтому рассматривать его смысла нет.

А вот для memcache среди этих скриптов нет ничего, так что придется нам его написать самим. Проверим его работо- и дееспособность:

# echo -e "stats\nquit" | nc -q2 127.0.0.1 11211

В ответ должны посыпаться статистические данные. Теперь пишем скрипт-однострочник /etc/zabbix/scripts/memcache.sh (при этом не забываем сделать его исполняемым):

#!/bin/bash echo -e "stats\nquit" | nc 127.0.0.1 11211 | grep "STAT $1 " | awk "{print $3}"

Как и в случае с nginx, правим конфиг Zabbix-agent (/etc/zabbix-agentd.conf) и не забываем его рестартовать:

# <...> UserParameter=memcache[*],/etc/zabbix/scripts/memcache.sh $1

Берем шаблон отсюда и импортируем его в веб-интерфейс.



INFO

Для сети средних размеров (когда нужно мониторить около десятка устройств) достаточно разместить сервер мониторинга, веб-интерфейс и БД на одной системе, а Zabbix-агенты - на узлах, требующих присмотра.

Мониторинг различных устройств с помощью Zabbix

В основном Zabbix используется для мониторинга серверов, но помимо собственно серверов есть еще множество других устройств, которые также нуждаются в мониторинге. Далее будет описана настройка Zabbix для мониторинга некоторых из них.

В большинстве сетей среднего и крупного размера имеется гремучая смесь всевозможного железа, которая досталась нынешнему админу со времен развертывания (и, скорее всего, это развертывание происходило еще при царе Горохе). По счастью, абсолютное большинство сетевого (да и не только) оборудования поддерживает открытый протокол SNMP, с помощью которого можно как получать о нем информацию, так и управлять параметрами. В данном случае нас интересует первое. Вкратце опишу нужные действия:

  • включить поддержку SNMP на устройствах. Не забывай о безопасности - по возможности используй третью версию протокола, устанавливай авторизацию и изменяй имена community;
  • добавить нужные элементы в Zabbix. Одному параметру SNMP соответствует один элемент; также нужно указать OID (идентификатор параметра) версию SNMP и, в зависимости от нее, параметры авторизации;
  • добавить триггеры на нежелательное изменение параметров.

У каждой железки могут быть десятки отслеживаемых параметров, и вручную их добавлять замучаешься. Но в Сети можно найти множество шаблонов, которые уже содержат в себе все необходимые элементы, триггеры и графики, - остается только их импортировать и подключить нужные хосты. Также существуют стандартные OID, которые описаны в RFC. К таковым относится, например, uptime с OID .1.3.6.1.2.1.1.3.0 или - для коммутаторов - статус порта с OID .1.3.6.1.2.1.2.2.1.8.X, где X - номер порта.

Существует онлайн-генератор шаблонов , который генерирует их на основе стандартных OID. В основном он предназначен для железа от Cisco, но ничто не мешает его использовать для другого оборудования.

Zabbix также поддерживает и карту сети. К сожалению, ее нужно составлять вручную. Есть возможность поставить над соединительными линиями скорость - для этого требуется добавить в подпись нужный элемент в фигурных скобках. Помимо этого, в случае падения соединения можно раскрашивать соединительные линии красным цветом.

Тот же человек, что написал упомянутый генератор шаблонов, написал также и дополнение к фронтенду, которое отображает в удобном виде статус порта (скрипт для второго Zabbix лежит ). Установка его, как его автор сам и признает, достаточно заморочена - скрипт писался в первую очередь для внутреннего применения.

SNMP Traps в Zabbix

Протокол SNMP, помимо пассивного получения данных устройства, поддерживает также и активную их рассылку со стороны устройства. В англоязычной документации это именуется SNMP Trap, в русскоязычной же используется термин SNMP-трап. Трапы удобны, когда нужно срочно уведомить систему мониторинга об изменении какого-либо параметра. Для отлова трапов в Zabbix имеется три способа (во всех трех случаях нужен еще и демон snmptrapd):

  • с помощью SNMPTT (SNMP Trap Translator);
  • используя скрипт на Perl;
  • используя скрипт на bash.

Далее описан первый вариант. Прежде всего, не забываем разрешить 161-й порт UDP и по необходимости временно отключить SELinux. Затем ставим нужные пакеты (предполагается, что репозиторий EPEL у тебя подключен):

# yum install net-snmp net-snmp-utils net-snmp-perl snmptt

Настраиваем snmptrapd (/etc/snmp/snmptrapd.conf):

DisableAuthorization yes traphandle default snmptthandler

Первая строчка отключает проверки доступа, что, в общем-то, крайне не рекомендуется делать в условиях промышленного использования (здесь она исключительно для простоты конфигурации), вторая указывает обработчик всех поступивших трапов, коим и является snmptthandler.

Затем настраиваем snmptt (/etc/snmp/snmptt.ini):

# <...> net_snmp_perl_enable = 1 mibs_environment = ALL date_time_format = %H:%M:%S %Y/%m/%d

Теперь нужно настроить шаблоны для маппинга трапов на Zabbix SNMP. Ниже будет приведен пример такого шаблона для двух видов трапов - coldStart и всех остальных (/etc/snmp/snmptt.conf).

# <...> EVENT general .* "General event" Normal FORMAT ZBXTRAP $aA $1 EVENT coldStart .1.3.6.1.6.3.1.1.5.1.0.33 "Status Events" Normal FORMAT ZBXTRAP $aA Device reinitialized (coldStart)

Первые две строчки описывают любые трапы, а вторая пара - конкретный трап с OID. Замечу, что для того, чтобы Zabbix ловил эти трапы, они должны быть именно в формате «ZBXTRAP адрес».

Включаем нужные службы:

# chkconfig snmptt on # chkconfig snmptrapd on # service snmptt start # service snmptrapd start

Посылаем тестовые трапы и смотрим логи:

# snmptrap -v 1 -c public 127.0.0.1 ".1.3.6.1.6.3.1.1.5.1" "0.0.0.0" 6 1 "55" .1.3.6.1.6.3.1.1.5.1 s "teststring000" # snmptrap -v 1 -c public 127.0.0.1 ".1.3.6.1.6.3.1.1.5.1" "0.0.0.0" 6 33 "55" .1.3.6.1.6.3.1.1.5.1 s "teststring000" # tail /var/log/snmptt/snmptt.log

Если все нормально, переходим к конфигурированию Zabbix. В файле /etc/zabbix_server.conf укажем местонахождение лога и включим встроенный SNMPTrapper:

# <...> SNMPTrapperFile=/var/log/snmptt/snmptt.log StartSNMPTrapper=1

После этого нужно зайти в веб-интерфейс Zabbix, по необходимости добавить в узле сети интерфейс SNMP и добавить элемент для трапа. Ставим все необходимые действия, если это нужно, и проверяем, для чего точно так же создаем тестовый трап.


INFO

Масштабирование в Zabbix работает достаточно хорошо - при должной настройке он выдерживает 6000 узлов.

Мониторинг VPN-туннелей на оборудовании Cisco

Возникла необходимость мониторинга загрузки кучи туннелей VPN на цисках. Все хорошо, SNMP как на циске, так и на Zabbix настроен, но есть одна загвоздка - OID для каждого соединения формируются динамически, как и их списки. Это связано с особенностями протокола IPsec, в которые я вдаваться не буду - скажу лишь, что это связано с процедурой установления соединения. Алгоритм извлечения нужных счетчиков, таким образом, настолько замудрен, что реализовать его встроенными средствами Zabbix не представляется возможным.

По счастью, имеется скрипт , который это делает сам. Его нужно скачать и закинуть в каталог ExternalScripts (в моем случае это был /var/lib/zabbixsrv/externalscripts). Проверим его работоспособность:

# /var/lib/zabbixsrv/externalscripts/query_asa_lan2lan.pl ciscocom 192.168.10.1 ASA get RX 94.251.99.1

Если проверка прошла успешно, применим комбинацию LLD с этим скриптом. Создаем шаблон с правилом обнаружения (OID 1.3.6.1.4.1.9.9.171.1.2.3.1.7) и двумя элементами данных с внешней проверкой и ключами ‘queryasa lan2lan.pl[«{$SNMPCOMMUNITY}», «{HOST.IP}», «ASA», «get, «RX», «{#SNMPVALUE}»]’ и ‘queryasa lan2lan.pl[«{$SNMP COMMUNITY}», «{HOST.IP}», «ASA», «get», «TX», «{#SNMPVALUE}»]’, назвав их соответственно «Incoming traffic in tunnel to {#SNMPVALUE}» и «Outgoing traffic in tunnel to {#SNMPVALUE}». После этого применяем шаблон к нужным узлам и ждем автообнаружения.

К сожалению, LLD сейчас не поддерживает объединение графиков из нескольких прототипов данных, так что приходится добавлять нужные элементы ручками. По окончании этой работы любуемся графиками.

Прикручиваем MIB к Zabbix

Сам по себе Zabbix не поддерживает MIB (Management Information Base), а готовые шаблоны есть отнюдь не для всех устройств. Конечно, все OID можно добавить и вручную (с помощью snmpwalk), но это работает, только если их у тебя не очень много. Однако существует плагин для веб-интерфейса Zabbix под названием SNMP Builder, который позволяет конвертировать MIB-файлы в шаблоны и уже эти шаблоны допиливать под свои нужды. Берем его из Git-репозитория:

# git clone https://github.com/atimonin/snmpbuilder.git

Накладываем патч (в твоем случае, разумеется, имена каталогов могут быть другими, и подразумевается, что ты находишься в каталоге, где размещен фронтенд Zabbix - в случае с RHEL-based системами это /usr/share/zabbix):

# patch -p1 < /home/centos/snmpbuilder/snmpbuilder-2.0.5.patch

Копируем недостающие файлы и распаковываем картинки:

# tar xzvf /home/centos/snmpbuilder/snmpbuilder-2.0_imgs.tar.gz # cp -r /home/centos/snmpbuilder/zabbix/* .

По необходимости редактируем переменную MIBSALL PATH в файле snmp_builder.php . В отдельных случаях может также понадобиться слегка подправить его код, начиная со строки foreach(glob($path.»/*.mib»). Код в этом случае будет выглядеть примерно так:

# <...> foreach(glob($path."/*.mib") as $filename){ if (preg_match("/^".preg_quote($path,"/")."\/(.+)\.mib$/",$filename,$matches)){ $result=exec("cat ".$filename."| grep -i "DEFINITIONS.*::=.*BEGIN"|awk "{print $1}""); $cmbMibs->addItem($result,$result); } }

Теперь можно уже использовать.

Прежде всего нужно найти MIB-файлы для твоего железа. Некоторые производители их скрывают, некоторые - нет. После того как ты их нашел, эти файлы нужно поместить в папку, которую ты указал в вышеуказанной переменной. В отдельных случаях могут возникнуть зависимости - в подобной ситуации нужно найти соответствующий MIB-файл, чтобы их разрешить. Итак, выбери шаблон, MIB-файл и укажи адрес устройства. Если все нормально, ты увидишь список OID, которые нужно затем выбрать для добавления к шаблону. После выбора нужно нажать кнопку «Сохранить». Добавленные элементы появятся в указанном шаблоне.

В отдельных ситуациях нужно отредактировать новодобавленные элементы, поскольку по дефолту интервал обновления 60 секунд, что в случае, например, с именем хоста не имеет особого смысла - лучше в подобных ситуациях ставить его равным 86 400 секунд (24 часа). Для счетчиков же нужно изменить формат хранения на «Дельта в секунду». Кроме того, с некоторыми элементами нужно настроить еще и преобразование их значений в удобочитаемый вид. Для этого перейди в «Администрирование -> Общие» и в выпадающем меню выбери «Преобразование значений», а там уже добавляй его.

В общем-то, модуль мы настроили - все остальное ты уже настраивай самостоятельно.

Версии протокола SNMP

Существует несколько версий SNMP. Первая версия появилась в 1988 году и на данный момент, хоть и считается устаревшей, все еще очень популярна. Версия 2 (фактически сейчас под ней подразумевают версию 2c) появилась в апреле 1993 года. Она была несовместима с первой версией. Основные новшества второй версии протокола заключались в обмене информацией между управляющими компьютерами. Кроме того, появилась команда получения сразу нескольких переменных (GetBulk).

Во времена разработки первой версии мало кто заботился о безопасности, поэтому о какой-либо защите в SNMPv1 и говорить нечего. Аутентификации как таковой не было - не считать же за нее строку Community, передаваемую в открытом виде? Были, конечно, попытки реализовать безопасность SNMPv1, но успехом они не увенчались. Во второй версии кардинальных изменений тоже не появилось. А вот SNMPv3 уже начала поддерживать как безопасность сообщений (USM), так и контроль доступа (VACM). В USM поддерживаются MD5 и SHA-1 для обеспечения защиты от модификации данных и DES (сейчас уже AES) для шифрования. VACM же вводит как возможность авторизации, так и возможность указывать, какой управляющий компьютер какими атрибутами может манипулировать.

Несмотря на то что настраивать SNMPv3 сложнее, крайне рекомендуется использовать именно его, а остальные версии протокола отключать.

Заключение

В данной статье я рассмотрел интересные возможности системы мониторинга Zabbix. Полагаю, если ты хороший админ, то эти возможности можешь применить с пользой для себя. Но не стоит забывать, что мониторинг не вещь в себе - его нужно применять в комплексе с организационными мерами.