Bозможности Zabbix
Zabbix - высоко интегрированное решение мониторинга сети, которое предлагает множество возможностей в одном пакете.- Сбор данных
- проверки доступности и производительности
- поддержка мониторинга по SNMP, IPMI, JMX
- пользовательские проверки
- сбор желаемых данных за выборочные интервалы
- Широкие возможности визуализация
- Графики в режиме реального времени
- Карты сети
- Пользовательские экраны и слайд шоу
- Отчеты
- Хранение истории
- Гибкая настройка
- Определение порогов
- Настраиваемые оповещения
- Автоматические реакции на события, в том числе удаленные команды
- Шаблонизация
- Система прав доступа
- Возможности web-мониторинга
- Веб интерфейс
- Zabbix API
- Наличие нативных клиентов под разные ОС
- Готовое решение Zabbix, основанное на Open SUSE
Архитектура и основные понятия Zabbix
Zabbix состоит из нескольких важных компонентов программного обеспечения, функции которых изложены нижеZabbix Сервер
Zabbix сервер - является главным компонентом, которому агенты сообщают информацию и статистику о доступности и целостности. Сервер является главным хранилищем, в котором хранятся все данные конфигурации, статистики, а также оперативные данные. Сервер выполняет опрос и захват данных, он вычисляет триггеры, отправляет оповещения пользователям. Это главный компонент которому Zabbix агенты и прокси отправляют данные доступности и целостности системы. Сервер может самостоятельно удаленно проверять сетевые устройства (так же как и веб сервера и почтовые сервера) используя простые проверки сервиса.
Сервер является главным хранилищем, в котором хранятся все данные конфигурации, статистики, оперативные данные, а так же эта сущность в Zabbix, которая будет активно уведомлять администраторов в случае возникновения проблем в любой из наблюдаемых систем.
Функционал базового Zabbix сервера разделен на три отдельных компонента; это: Zabbix сервер, веб интерфейс и хранилище в базе данных.
Zabbix Агент
Zabbix агенты разворачиваются на наблюдаемых целях для активного мониторинга за локальными ресурсами и приложениями (статистика жестких диски, памяти, процессоров и т.д.).
Агент собирает локальную оперативную информацию и отправляет данные Zabbix серверу для дальнейшей обработкиg. В случае проблем (таких как рабочий жесткий диск заполнен или упал процесс сервиса), Zabbix сервер может быстро уведомить администраторов конкретного сервера, который сообщил об ошибке.
Zabbix агенты чрезвычайно эффективны, потому что используют нативные системные вызовы для сбора информации статистики.
Пассивные и активные проверки Zabbix агенты могут выполнять пассивные и активные проверки. В случае пассивной проверки агент отвечает на запрос данных. Zabbix сервер (или прокси) запрашивает данные, например, загрузку ЦПУ, и Zabbix агент возвращает результат. Активные проверки требуют более сложной обработки. Агент сначала получает список элементов данных для независимой обработки от Zabbix сервера. Далее он будет периодически отправлять новые значения серверу.
Zabbix Прокси
Zabbix прокси - это процесс, который может собирать данные мониторинга с одного или нескольких наблюдаемых устройств и отправлять эту информацию Zabbix серверу, впринципе прокси работает от имени сервера. Все собранные данные локально буферизуются и затем отправляются Zabbix серверу, которому принадлежит этот прокси.
Развертывание прокси опционально, но может быть очень полезна для распределения нагрузки на одиночный Zabbix сервер. Если данные собирают только прокси, то обработка этих данных на сервере значительно уменьшает загрузку ЦПУ и I/O диска.
Zabbix прокси - идеальное решение для централизованного мониторинга удаленных мест, филиалов и сетей без местных администраторов. Для Zabbix прокси требуется отдельная база данных.
Java gateway
В Zabbix 2.0 добавлена нативная поддержка для мониторинга JMX приложений введением нового демона Zabbix, называемого Zabbix Java gateway.
Zabbix Java gateway - это демон написанный на языке Java. Когда Zabbix сервер хочет знать значение конкретного JMX счетчика у узла сети, он опрашивает Zabbix Java gateway, который использует API управления JMX для опроса интересующего удаленного приложения. Приложению не требуется никаких дополнительных программ, оно просто должно быть запущено с опцией командной строки -Dcom.sun.management.jmxremote.
Установка Zabbix
Установка сервера и клиента отличается незначительно и состоит из ряда простейших действий:Установка серверной части
1. Загрузить и распаковать архив исходных кодов
tar -zxvf zabbix-2.0.0.tar.gz
2. Создать группу и пользователя zabbix, от имени которого будут работать демоны zabbix
groupadd zabbix useradd -g zabbix zabbix
3. Создать БД для хранения настроек и данных мониторинга.
Пример для MySQL:mysql -u<username> -p<password> create database zabbix character set utf8; quit; mysql -u<username> -p<password> zabbix < database/mysql/schema.sql # остановитесь здесь, если вы создаете базу данных для Zabbix прокси mysql -u<username> -p<password> zabbix < database/mysql/images.sql mysql -u<username> -p<password> zabbix < database/mysql/data.sql
4. Сконфигурировать исходные коды
В этой части установка агента и сервера немного отличаются. Для zabbix сервера необходимо задать большее кол-во параметров. При конфигурировании исходных кодов Zabbix сервера или прокси, вы должны указать используемый тип базы данных. Только один тип базы данных может быть скомпилирован для процессов сервера или прокси единовременно. Для просмотра всех доступных опция конфигурирования, выполните в папке извлеченных исходных кодов Zabbix:
configure --helpВывод доступных опций конфигурирования:
Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-largefile omit support for large files --enable-static Build statically linked binaries --enable-server Turn on build of Zabbix server --enable-proxy Turn on build of Zabbix proxy --enable-agent Turn on build of Zabbix agent and client utilities --enable-java Turn on build of Zabbix Java gateway --enable-ipv6 Turn on support of IPv6 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ibm-db2=[ARG] use IBM DB2 CLI from given sqllib directory (ARG=path); use /home/db2inst1/sqllib (ARG=yes); disable IBM DB2 support (ARG=no) --with-ibm-db2-include=[DIR] use IBM DB2 CLI headers from given path --with-ibm-db2-lib=[DIR] use IBM DB2 CLI libraries from given path --with-mysql[=ARG] use MySQL client library [default=no], optionally specify path to mysql_config --with-oracle=[ARG] use Oracle OCI API from given Oracle home (ARG=path); use existing ORACLE_HOME (ARG=yes); disable Oracle OCI support (ARG=no) --with-oracle-include=[DIR] use Oracle OCI API headers from given path --with-oracle-lib=[DIR] use Oracle OCI API libraries from given path --with-postgresql[=ARG] use PostgreSQL library [default=no], optionally specify path to pg_config --with-sqlite3[=ARG] use SQLite 3 library [default=no], optionally specify the prefix for sqlite3 library If you want to use Jabber protocol for messaging: --with-jabber[=DIR] Include Jabber support [default=no]. DIR is the iksemel library install directory. If you want to use cURL library: --with-libcurl[=DIR] use cURL package [default=no], optionally specify path to curl-config What ODBC driver do you want to use (please select only one): --with-iodbc[=ARG] use odbc driver against iODBC package [default=no], default is to search through a number of common places for the IODBC files. --with-unixodbc[=ARG] use odbc driver against unixODBC package [default=no], optionally specify full path to odbc_config binary. What SNMP package do you want to use (please select only one): --with-net-snmp[=ARG] use NET-SNMP package [default=no], optionally specify path to net-snmp-config --with-ucd-snmp[=ARG] use UCD-SNMP package [default=no], default is to search through a number of common places for the UCD-SNMP files. If you want to use SSH2 based checks: --with-ssh2[=DIR] use SSH2 package [default=no], DIR is the SSH2 library install directory. If you want to check IPMI devices: --with-openipmi[=DIR] Include OPENIPMI support [default=no]. DIR is the OPENIPMI base install directory, default is to search through a number of common places for the OPENIPMI files. If you want to check LDAP servers: --with-ldap[=DIR] Include LDAP support [default=no]. DIR is the LDAP base install directory, default is to search through a number of common places for the LDAP files.Пример конфигурации сервера:
./configure --enable-server –enable-java --enable-ipv6 --with-mysql --with-net-snmpПример конфигурации агента:
./configure –-enable-agent
5. Собрать и установить все
Этот шаг должен быть выполнен пользователем с достаточными правами (как правило 'root', или с помощью sudo).
Выполнение make install установит исполняемые файлы демона (zabbix_server, zabbix_agentd, zabbix_proxy) в /usr/local/sbin и исполняемые файлы клиента (zabbix_get, zabbix_sender) в /usr/local/bin.
make install
6. Отредактировать конфигурационные файлы
- файл конфигурации Zabbix агента /usr/local/etc/zabbix_agentd.conf
7. Запустить сервер и агента
zabbix_server zabbix_agentd
8. Добавить скрипты автозапуска(опционально)
Для этого нужно скопировать скрипты из папки с исходными кодами для вашей ОС в директорию для автозапуска. Скрипты автозапуска необходимо скорректировать, если при конфигурировании были изменены стандартные пути расположения демонов Zabbix
Пример для ОС Debian:
cp misc/init.d/debian/zabbix-server /etc/init.d/ cp misc/init.d/debian/zabbix-agent /etc/init.d/ chmod 755 /etc/init.d/zabbix-server chmod 755 /etc/init.d/zabbix-agent update-rc.d zabbix-server defaults update-rc.d zabbix-agent defaults
Установка web-интерфейса
Веб-интерфейс Zabbix написан на языке PHP, поэтому чтобы его запустить вам потребуется веб-сервер с поддержкой PHP. Установка производится путем простого копирования PHP файлов в папку HTML вебсервера.mkdir <htdocs>/zabbix cd frontends/php cp -a . <htdocs>/zabbixПосле копирования необходимо открыть адрес http://hostname/zabbix и выполнить установку с помощью мастера, включающую:
- Проверку требований
- Задание настроек БД
- Задание свойств сервера (адрес, порт)
- Сохранение настроек на сервере
Начало работы c Zabbix
Основные определения
Host - сетевое устройство, которые вы хотите мониторить, с IP/DNS.
Hostgroup - логическая группировка узлов сети; они могут содержать узлы сети и шаблоны. Узлы сети и шаблоны в группе узлов сети никаким образом не связаны с друг другом. Группы узлов сети используются при назначении прав доступа к узлам сети различным группам пользователей.
Item-элемент данных. Конкретная часть данных, которую вы хотите получать от узла сети, метрические данные.
Trigger – триггер. |логическое выражение которое определяет порог проблемы и используется для “вычисления” данных полученных элементами данных. При получении данных превышающих порог, триггеры переходят из состояния 'Ок' в состояние 'Проблема'. При получении данных ниже порога, триггеры остаются в/возвращаются в состояние 'Ок'.
Event - одиночное возникновение того, что заслуживает внимания, такого как изменение состояния триггера или обнаружение/авто-регистрация агента
Action - предопределенные средства реагирования на событие.Действие состоит из операций (например отправка оповещений) и условий (когда осуществляется операция)
Escalation - пользовательский сценарий для выполнения операций в действии; последовательность отправки оповещений/выполнений удаленных команд
Media - способ доставки оповещений; канал доставки
Remote command - предопределенная команда, которая будет автоматически выполнена на наблюдаемом узле сети при некоторых условиях
Template - набор сущностей (элементы данных, триггеры, графики, комплексные экраны, правила низкоуровневого обнаружения) готовые к присоединению к одному или нескольким узлам сети
Задача шаблонов повысить скорость развертывания задач мониторинга узла сети; кроме того делать более простым применение массовых изменений к задачам наблюдения. Шаблоны соединяются напрямую с отдельными узлами сети.
Application - сгрупированные элементы данных в некую логическую группу
Web scenario - один или несколько запросов HTTP для проверки доступности веб сайта
Быстрый старт
Самый простой способ проверить корректность установки и запуска мониторинга – настроить простую проверку характеристик удаленного хоста, например проверку доступности агента (agent.ping), а также уведомление пользователя в случае недоступности.
Для этого необходимо:
- Создать пользователя. По умолчанию пользователю не задается предпочтительный способ доставки сообщений, поэтому необходимо его задать, например email для уведомлений по электронной почте. Также пользователю необходимо задать права на чтение для сервера, оповещения о недоступности которого пользователь будет получать. В противном случае Zabbix не сможет отправить оповещение
- Добавить удаленный хост, указав его имя, адрес, агентский порт и статус. Также его можно включить в одну или несколько групп серверов.
- Создать элемент данных - можно создать вручную или на основе шаблона. При ручной настройке необходимо указать название, тип, название ключа, тип возвращаемых данных.
- Добавить триггер – можно вручную задать выражение для проверки элемента данных или использовать триггер из шаблона.
- Настроить систему оповещений для сервера. Для оповещений по электронной почте необходимо указать параметры почтового сервера и аккаунта, от имени которого будут выполняться уведомления.
- Создать действие, определив для него операцию оповещения пользователя.
После проделанных шагов достаточно остановить агента на удаленном хосте, после чего мы получим уведомление на адрес электронной почты, также мы увидим запись о произошедшем событии в панели управления Zabbix на вкладке Latest data – Events.
Теперь можно переходить к более глубокой настройке мониторинга. Одна из основных возможностей, значительно упрощающих конфигурирование и мониторинг, шаблонизация – будет рассмотрена в след. разделах.
Видеоматериал
Небольшой видеообзор системы мониторинга Zabbix:
Zabbix from Amigos Team on Vimeo.
- Zabbix - официальный сайт
- Zabbix documentation - документация