Издано: марта 30, 2009
Тут речь пойдет об установке Zabbix версий 1.4.x (поскольку версии
1.3.x не актуальны, а 1.5 находится в бете, и возможно, подойдет не всем).
Небольшое лирическое отступление
Прежде всего, почему именно Zabbix?
Если говорить коротко – то потому, что эта система написана так, как я
написал бы её сам. Имеется ввиду как архитектура, так и выбор
языков/инструментов. В свое время я уже собирался делать что-то свое на
коленке, но по счастью обнаружил Zabbix (с большим трудом, поскольку он
слабо раскручен в поисковиках).
Зачем вообще нужна эта система? Попросту говоря – мониторить сервера и
устройства. Но мониторинг – понятие многозначное. Для мониторинга
доступности я (да и многие другие) с успехом пользуюсь
Nagios и пр. Мне нужен был не только (и не
столько даже) мониторинг доступности, сколько мониторинг нагрузки и
производительности, а также сбор статистики. И Zabbix для этой задачи
идеально (IMHO) подходит.
Как устроена эта система?
Как видим, архитектура простая и понятная. Кроме того, имеются важные (с
моей точки зрения) особенности:
Вот пожалуй и все, что я хотел отметить в лирическом отступлении (мнение
автора может не совпадать с мнением редакции).
Установка агента
Вопреки традиции, начну с установки агента, ибо она проще и меньше
зависит от версии. Разумеется, рассматривается установка из исходников.
Если вас интересуют другие варианты (порой, находятся любители rpm), то
неплохую описанку установки под Gentoo я видел тут.
Данная инструкция создана на базе
этого документа.
Если вам ближе английский язык – используйте его.
Итак, предположим вы уже скачали архив c Zabbix (из download). Далее выполняем:
Ну вот, если все собралось – самое трудное позади.
Попробуем запуститься:
И получаем
Не удивительно. Мы забыли создать конфигурационные файлы!
Скопируем их.
Разумеется, одного копирования мало. Надо подправить конфигурацию под наши нужды.
Я рассмотрю сценарий запуска из под inetd. В ранних бетах мне никак не
удавалось запустить stand alone агента, и я забросил эти попытки.
Поскольку своего позитивного опыта у меня нет, то утомлять читателя
пересказом было бы не совсем честно.
Сначала файл **zabbix_agent.conf**
Может показаться, что этого достаточно, но у меня бывали проблемы, если
не заполнен список серверов в файле для активного агента.
Посему, поправим и его (**zabbix_agent.conf**):
Я не привожу этот файл полностью, поскольку он нам не очень интересен,
и, кроме того, легко изучаем.
Ну, теперь мы наконец сможем запустить агент?
Ура!
Что-то работает. Агент выведет список поддерживаемых им параметров. Их
должно быть около 50.
Теперь попробуем доступиться к агенту удаленно. Для этого необходимо
внести его в config inetd (в нашем случае – xinetd).
Создаем файл **/etc/xinetd.d/zabbix**
Перезапустим xinetd…
и воспользуемся специальной утилитой которая имеется в комплекте. С её
помощью можно запросить значение любого параметра у агента.
Получаем connection refused. Почему? Потому, что нужно добавить
пользователя zabbix и поправить **/etc/services**!
в файл **/etc/services** пишем
После этого еще раз рестартуем xinetd. И пробуем доступиться к агенту:
Если все сделано правильно будет напечатано некое число, например 1.
Это означает что агент настроен и работает!
Установка сервера
Сервер Zabbix – ключевой элемент в системе, однако его установка
(обычно) довольно проста.
Прочесть официальную документацию о ней можно тут.
Если на машине где бежит сервер еще не установлен agent (т.е. это выделенная машина) проделаем ряд операций общих для обоих:
Далее, не забываем:
в файл **/etc/services** пишем
Затем разворачиваем архив:
запускаем configure предварительно установив все, что может понадобиться
серверу. А это прежде всего интерфейс базы данных (MySQL, Postgres или
Oracle). Заметим, что сама база может стоять и на другой машине, равно
как и front end. Главное чтоб имелась библиотека, например
libmysqlclient.
В большинстве случаев – сервер успешно соберется. Однако, может
оказаться, что в Makefile отсутствует та или иная библиотека (замечалось
в 1.4)
В этом случае, нужно пойти в Makefile того модуля, который не смог
собраться, и добавить библиотеку руками. Например:
Однако, в версии 1.4.2, на примере которой мы обсуждаем установку,
подобных проблем не возникло.
Обратите внимание! Мы собираем сервер без поддержки SNMP. Если она вам
необходима, добавьте опцию ‘–with-net-snmp’
После чего копируем
и правим файл zabbix_server.conf.
Содержимое может быть, например, таким (оставлены только необходимые
параметры):
Внимание! В нашем примере база данных находится на другом хосте, и связь
с MySQL идет по TCP, что не обязательно.
Создание базы данных
База данных необходима как для работы front end-а так и для работы сервера
Есть несколько путей для ее создания, воспользуйтесь любым, привычным вам.
Руководство предлагает:
Я всегда делаю эти операции через phpMyAdmin, но это не догма.
После создания базы можно наконец запустить сервер, предварительно скопировав в init.d
подходящий для вашей системы script. В моем случае это gentoo:
Финальный аккорд:
Если все хорошо, то в файле
/tmp/zabbix_server.log вы увидите что-то вроде:
Работа с Web-интерфейсом
Итак, система заработала. Но пока она еще ничего не мониторит.
Действительно, настройку мы делаем один раз, а ежедневное использование
системы сводится к просмотру графиков нагрузки, добавлению хостов,
отслеживанию параметров, и борьбе с головной болью.
Чтобы адекватно настроить zabbix нам придется понять, какими сущностями
он оперирует при сборе и анализе данных. Сущностей не так уж много.
* Хосты (hosts)
* Показатели (items)
* Триггеры (triggers)
* Акции (actions)
* Графики (graphs или charts)
* Экраны (screens)
Итак, какова же иерархия этих сущностей? Очень простая: на хостах
контролируются определенные показатели. Иногда, когда они переходят
заданную границу срабатывают триггеры, что вызывает собой акции. Кроме
того, рисуются графики показателей. Один или несколько графиков можно
обьеденить в экран. Вот и все (на самом деле, есть достаточно много
второстепенных сущностей, но для простоты я их опущу).
С чего начинается родина конфигурация мониторинга сервера?
Разумеется, с определения хоста (я надеюсь, вы уже активировали account
администратора, и залогинились в zabbix (все операции описанные ниже
надо делать в меню конфигурации)).
hosts
Здесь задается имя, группа, IP адрес или доменное имя, порт агента,
статус и template (грубо говоря – схема сбора данных).
Задав все эти параметры, можно переходить к показателям (items).
items
Нет ничего проще – показателем может быть любой системный параметр,
значение которого может вычислить zabbix-агент. Показатель может быть
как «встроенным» (например обьем свободной памяти, загрузка CPU) так и
пользовательским; например, количество транзакций вашего Postgres за
последнюю минуту, или даже текущее настроение вашей девушки (если
конечно вы научите агента его определять). При создании показателя можно
указать достаточно много параметров, важнейшие из которы: тип, интервал
обновления, приложение (CPU, Memory, Filesystem) и группа. Интервалы
можно задавать весьма гибко, но мы обойдем этот момент.
Дальше идут триггеры.
triggers
это чуть сложнее, но тоже не бином Ньютона. Триггер взводится, если
какой-то из показателей перешел через граничное значение. Например,
обьем свободной памяти опустился ниже 100 Mb.
actions
При взводе триггера, иногда бывает полезно выполнить определенное
действие, сиречь – акцию. К примеру – послать письмо админу, или что-то
в этом роде.
Впрочем, желательно, чтобы триггеры на наших серверах срабатывали как
можно реже.
Наконец, мы переходим к самым часто используемым сущностям. Это графики
и экраны. Графики zabbix рисует как бог (правда, при масштабировании по
времени порой происходят непонятные вещи).
graphs
Чтобы увидеть график, надо задать его имя, размеры для отрисовки, и
показатель, который мы хотим отобразить. Для показателя задается
дополнительно цвет и вид заливки (только линия, залитый регион, etc). На
самом деле, на одном графике может быть сведено несколько показателей,
но я не советую добавлять больше двух, т.к. это не повысит
информативность графика. Для анализа нескольких показателей следует
воспользоваться экранами (screens).
screens
Конфигурация экрана очень проста. Это количество его строк и колонок.
Когда экран создан, надо ткнуться в любую ячейку, и указать график,
который мы хотим там видеть. Понятно, что для гармоничного отображения,
желательно подобрать графики одинакового размера.
После того, как все необходимые графики и экраны созданы, можно
переходить из меню конфигурации в меню мониторинга.
Здесь мы можем лицезреть наши родные графики
graphs
и конечно, экраны
screens
Каждый график можно проматывать во времени, а также менять масштаб
временной оси (1 час, 8 часов, сутки, неделя, месяц, год).
А их красота и информативность зависят только от вашей ловкости рук.
Какие тонкие моменты имеются при работе с web-UI? Почти никаких.
Единственная неочевидная порой вещь – почему график того или иного
параметра девственно чист? Обычно – причина проста. Отвалился монитор
(или сам хост) а нотификация об этом не настроена, или же скрипт,
поставляющий значения параметра содержит ошибку, и не выдает нормальное
значение. Отсюда вытекает простое практическое правило: добавив или
изменив определенный параметр, подождите несколько минут, и убедитесь,
что он корректно обновляется на графиках.
Popularity: 8% [?]
Tagged with: bind, gentoo, HTTP, jabber, monitoring, mysql, nagios, Oracle, SQL, UNIX