Zabbix - мониторинг сети

25.01.2013
Zabbix – это решение распределенного мониторинга ИТ инфраструктуры с открытыми исходными кодами.

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
Вам нужно сконфигурировать это файл для каждого хоста на котором установлен zabbix_agentd. В файле вы должны указать IP адрес Zabbix сервера. Подключения с остальных хостов будут отклонены.
  • файл конфигурации Zabbix сервера /usr/local/etc/zabbix_server.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 и выполнить установку с помощью мастера, включающую:
    1. Проверку требований
    2. Задание настроек БД
    3. Задание свойств сервера (адрес, порт)
    4. Сохранение настроек на сервере
    Пользователь по умолчанию: Admin/zabbix

    Начало работы c Zabbix

    Основные определения

    Host - сетевое устройство, которые вы хотите мониторить, с IP/DNS.
    Hostgroup - логическая группировка узлов сети; они могут содержать узлы сети и шаблоны. Узлы сети и шаблоны в группе узлов сети никаким образом не связаны с друг другом. Группы узлов сети используются при назначении прав доступа к узлам сети различным группам пользователей.
    Item-элемент данных. Конкретная часть данных, которую вы хотите получать от узла сети, метрические данные.
    Trigger – триггер. |логическое выражение которое определяет порог проблемы и используется для “вычисления” данных полученных элементами данных. При получении данных превышающих порог, триггеры переходят из состояния 'Ок' в состояние 'Проблема'. При получении данных ниже порога, триггеры остаются в/возвращаются в состояние 'Ок'.
    Event - одиночное возникновение того, что заслуживает внимания, такого как изменение состояния триггера или обнаружение/авто-регистрация агента
    Action - предопределенные средства реагирования на событие.Действие состоит из операций (например отправка оповещений) и условий (когда осуществляется операция)
    Escalation - пользовательский сценарий для выполнения операций в действии; последовательность отправки оповещений/выполнений удаленных команд
    Media - способ доставки оповещений; канал доставки
    Remote command - предопределенная команда, которая будет автоматически выполнена на наблюдаемом узле сети при некоторых условиях
    Template - набор сущностей (элементы данных, триггеры, графики, комплексные экраны, правила низкоуровневого обнаружения) готовые к присоединению к одному или нескольким узлам сети Задача шаблонов повысить скорость развертывания задач мониторинга узла сети; кроме того делать более простым применение массовых изменений к задачам наблюдения. Шаблоны соединяются напрямую с отдельными узлами сети.
    Application - сгрупированные элементы данных в некую логическую группу
    Web scenario - один или несколько запросов HTTP для проверки доступности веб сайта

    Быстрый старт

    Самый простой способ проверить корректность установки и запуска мониторинга – настроить простую проверку характеристик удаленного хоста, например проверку доступности агента (agent.ping), а также уведомление пользователя в случае недоступности.

    Для этого необходимо:

    1. Создать пользователя. По умолчанию пользователю не задается предпочтительный способ доставки сообщений, поэтому необходимо его задать, например email для уведомлений по электронной почте. Также пользователю необходимо задать права на чтение для сервера, оповещения о недоступности которого пользователь будет получать. В противном случае Zabbix не сможет отправить оповещение
    2. Добавить удаленный хост, указав его имя, адрес, агентский порт и статус. Также его можно включить в одну или несколько групп серверов.
    3. Создать элемент данных - можно создать вручную или на основе шаблона. При ручной настройке необходимо указать название, тип, название ключа, тип возвращаемых данных.
    4. Добавить триггер – можно вручную задать выражение для проверки элемента данных или использовать триггер из шаблона.
    5. Настроить систему оповещений для сервера. Для оповещений по электронной почте необходимо указать параметры почтового сервера и аккаунта, от имени которого будут выполняться уведомления.
    6. Создать действие, определив для него операцию оповещения пользователя.

    После проделанных шагов достаточно остановить агента на удаленном хосте, после чего мы получим уведомление на адрес электронной почты, также мы увидим запись о произошедшем событии в панели управления Zabbix на вкладке Latest data – Events.

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


    Видеоматериал

    Небольшой видеообзор системы мониторинга Zabbix:

    Zabbix from Amigos Team on Vimeo.

    Источники