Последнее изменение файла: 2019.08.19
Скопировано с www.bog.pp.ru: 2021.04.23
Bog BOS: Zabbix - распределённая система мониторинга
Zabbix - распределённая система мониторинга, которая позволяет мониторить
любые измеримые параметры деятельности сети и серверов (сервисов), отслеживать нарушение
предопределённых границ значений параметров и извещать заинтересованных лиц (e-mail, SMS, XMPP (jabber), скрипт),
средства эскалации и подтверждения извещения.
Хорошо проработанные средства построения графиков и отчётов, возможно соотнесение с планом или картой.
Можно использовать для проверки доступности и контроля производительности.
Данные могут получать как с помощью запросов от сервера агентам, устанавливаемым
на контролируемые хосты, так и получением сообщений от активных агентов,
возможности агентов могут быть расширены скриптами.
В качестве агента можно использовать SNMP сервер (v1 и v2 и v3, запрос и trap, динамические индексы с версии 2.2),
IPMI, без агентов можно мониторить
доступность определённых сервисов (почта, веб, FTP, LDAP, SSH, telnet, СУБД, сервера приложений Java).
Позволяет определить SLA (через группу триггеров и выражение) и отслеживать их выполнение.
Возможно автообнаружение (ICMP ping) и авторегистрация агентов.
Поддержка JMX (Java Management Extensions) с версии 2.0.
Конфигурация и данные хранятся в СУБД (MySQL/InnoDB для тяжёлой нагрузки, PostgreSQL, Oracle, SQLite - до версии 1.8).
Возможен экспорт и импорт конфигурации (части конфигурации) в XML (zabbix_export.xml,
экспортируется не всё! комплексные отчёты и карты с версии 1.8).
Интерфейс пользователя к данным мониторинга и настройкам - через браузер
(сам интерфейс в кодировке UTF-8, но данные - нет!), Apache 1.3.12 или новее,
PHP 4.3 или новее (модули php-gd, php-bcmath, php-mysql/php-sqlora8/php-pgsql/php-sqlite3).
Возможна привязка аутентификации к LDAP.
Настройка облегчается наличием параметризованных шаблонов (template).
Требуется синхронизации времени в сети.
Возможно закрытие интерфейса с помощью SSL/TLS, коммуникации между компонентами открытые, защита по адресу IP.
Имеется интерфейс (API) взаимодействия с другими приложениями (JIRA, Puppet).
Разработка Zabbix LLC (Alexei Vladishev), ранее Латвийской компании Zabbix SIA (2005).
Лицензия - GPL2, бесплатен даже для коммерческого использования. Имеется коммерческая поддержка.
Версия на момент описания - 1.6.5.
Поддержка версии 1.8 уже закончилась, в версии 2.0 исправляются только критические ошибки.
Сервер может быть установлен на Linux, Solaris, HP-UX, AIX, FreeBSD, NetBSD, OpenBSD, Mac OS/X.
Клиенты (агенты) могут быть также установлены на Windows 2000, Windows Server 2003/2008/2012, Windows XP, Windows Vista, Windows 7, Windows 8.
Базовой системой для разработчика является Ubuntu (?).
Обещается совместимость всех старых версий агентов с новыми версиями сервера.
Обещается совместимость БД внутри версии и скрипты преобразования к новой версии.
Документация версии 1.8 и новее только на сайте (обещан конвертор в ODT).
сервер Zabbix регулярно опрашивает пассивных агентов (Zabbix, SNMP)
и принимает данные от активных агентов,
при необходимости извещает кого попало;
потоки (все выглядят как zabbix_server):
Poller - извлекает данные от агентов SNMP и Zabbix
Pinger - ICMP ping; используется внешняя утилита fping, которая включает опцию RECORD_ROUTE,
к которой многие устройства относятся плохо
Trapper - приёмник данных от активных агентов, журналов и Sender
Timer - обрабатывает триггерные выражения, зависящие от времени (?)
агент Zabbix работает на сервере, который необходимо мониторить;
выполняется в режиме демона или inetd/xinetd (не рекомендуется);
может работать в активном режиме (запрашивает список требуемых параметров и посылает их сам)
и пассивном режиме (ждёт запросов от сервера);
возможна авторегистрация агента на сервере,
обеспечивается аутентификация (не верю - где задаётся пароль?)
zabbix_sender - утилита,
посылающая данные на сервер (используется в долгоиграющих скриптах
для периодической посылки значений параметров)
прокси для системы мониторинга Zabbix (zabbix_proxy, /etc/zabbix/zabbix_proxy.conf)
собирает и принимает данные с нескольких агентов для сервера Zabbix;
удобен для установки в удалённом филиале; не разбирался
СУБД для хранения собранных данных, конфигурации, событий и пр.
HTTP сервер (Apache и PHP), обеспечивающий интерфейс пользователя
zabbix_get - утилита для опроса агентов (используется при отладке)
Контролируемые объекты называются хостами (host).
Их можно группировать. Хост может входить в несколько групп.
Профиль (profile) хоста - набор сведений для инвентаризации о типе оборудования,
модели, расположении, серийном номере и пр.. Заполняется вручную.
Каждый контролируемый параметр хоста называется элементом данных (item).
Текущее значение элементов данных опрашивается в дискретные моменты времени
с заданным интервалом. Система позволяет посмотреть очередь невыполненных запросов
(меню администратора).
Триггер (trigger) задаётся с помощью логического выражения
от значений элементов данных.
Приложение (application) есть множество элементов данных хоста,
связанных с одним реальным приложением. Элемент данных может входит в несколько приложений.
Используется для группировки в вебинтерфейсе и выражениях триггеров.
Событием (event) называется изменение состояния триггера
от FALSE к TRUE или от TRUE к FALSE (возможно с промежуточным состоянием UNKNOWN).
Действие (action) является реакцией системы на событие.
Определяется для события или группы событий.
Реализован распределённый мониторинг.
Главный узел конфигурирует подчинённые (proxy) и собирает с них данные. Не осваивал.
Каждый контролируемый параметр хоста называется элементом данных (item).
Не рекомендуется иметь более 1000 элементов на хост - будут проблемы в настройке.
Данные могут собираться сервером напрямую (простые проверки, SNMP, IPMI),
внешними скриптами и с помощью агентов (клиентов zabiix), работающими на
контролируемых серверах. Агенты могут собирать данные встроенными средствами и
с помощью скриптов. Веб-мониторинг позволяет извлекать данные с HTML страниц (специальный модуль).
Имеется некоторое количество внутренних проверок работоспособности самого сервера zabbix
и агрегированные проверки.
Некоторые типы (key) элементов данных могут иметь параметры, заключаемые в квадратные скобки.
Часть параметров является необязательной.
Не все типы элементов данных поддерживаются на всех типах ОС (в документации есть таблица
для какой-то старой версии).
При добавлении элемента данных в общем случае указывается
описание, может содержать макросы: $N - N-ый параметр элемента данных
имя (тип, key), под которым он будет собираться, храниться и извлекаться
тип данных
целое 64 бита без знака (u)
плавающее число (d)
строка до 255 байт (s, Latin1?)
текст неограниченной длины (t)
журнал (m) - специальная модификация текста для хранения журналов
основание счисления для целых чисел (десятичное, восьмеричное или шестнадцатеричное)
единица измерения (для числовых данных) - строка будет выводиться сразу за значением,
числа преобразовываться к кило, мега и гига;
встроенные единицы измерения:
b или bps
unixtime (секунды абсолютные, выводится в формате yyyy.mm.dd hh:mm:ss)
uptime (секунды относительные, выводится в формате N days, hh:mm:dd)
s (секунды относительные, выводится в формате YYyMMmDDdHHhMMm)
на сколько надо умножать входные данные
интервал опроса (в секундах)
гибкий интервал позволяет задать различные интервалы опроса в разное время суток
время хранения данных (в сутках)
время хранения суммированных данных (трендов, ежечасные max, min и avg)
активировать или нет (может быть переведён в состояние неподдерживаемого)
что хранить (полученные данные, изменения между измерениями, изменения за секунду)
что показывать (непосредственно хранимое или извлекать строку из таблицы отображения по индексу;
таблицы отображения (только для целых) можно редактировать и создавать в разделе
Настройка/Общие параметры/Преобразование значений; при этом остаётся возможность смотреть графики)
в какие приложения (группы элементов данных) включить элемент данных
Специальный тип данных "status", который определяется, если для хоста мониторится
хотя бы один параметр (0 - хост доступен, 2 - хост недоступен).
Типы данных, собираемые агентами самостоятельно:
agent.ping (целое, 1)
agent.version (строка)
kernel.maxfiles (целое)
kernel.maxproc (целое; в Linux не поддерживается)
log[имя-файла,регулярное-выражение] (при активном мониторинге посылает каждую добавленную
в файл строку на сервер; требуются права на чтение файла для пользователя zabbix;
данные на сервере д.б. типа log и ZABBIX Agent (active); не более 10 строк в секунду;
отслеживается размер файла и текущая позиция, чтобы ничего не пропустить и не удвоить)
net.if.collisions[имя-интерфейса] (целое; коллизий на указанном интерфейсе)
net.tcp.dns[ip-адрес,домен] (1 - можно получить данные по указанному доменному имени;
ip-адрес игнорируется,
используются настройки /etc/resolv.conf)
net.tcp.listen[порт] (1 - порт открыт; в Linux не поддерживается (?))
net.tcp.port[ip-адрес,порт] (1 - можно соединиться с указанным портом)
net.tcp.service[имя-сервиса,ip-адрес,порт] (0 - невозможно соединиться, 1 - TCP соединение удачно,
2 - истекло время ожидания; сервис: ssh, ntp, ldap, smtp, ftp, http, pop, nntp, imap, tcp
net.tcp.service.perf[имя-сервиса,ip-адрес,порт] (0 - сервис не работает, иначе количество
секунд, потраченных на соединение
proc.mem[имя-процесса,имя-пользователя,avg|max|min|sum,фильтр-командной-строки]
(используемая указанным процессом/процессами память в байтах;
любой параметр или все параметры можно опустить; не отличает процессы от потоков :()
proc.num[имя-процесса,имя-пользователя,all|run|sleep|zomb,фильтр-командной-строки]
(количество указанных процессов;
любой параметр или все параметры можно опустить)
system.cpu.load[номер-процессора,avg1|avg5|avg15] (берётся из uptime)
system.cpu.num (количество процессоров (ядер))
system.cpu.switches (количество переключений контекста; в Linux не поддерживается)
system.cpu.util[номер-процессора,idle|nice|user|system|kernel|wait|interrupt|softirq|steal,avg1|avg5|avg15]
(загрузка процессора в процентах; не работает при тестировании: "Collector is not started!";
wait переименован в iowait)
system.run[команда-оболочки,wait|nowait] (указанная команда выполняется
на удалённом хосте, результат возвращается в режиме wait;
агент д.б. сконфигурирован в режиме EnableRemoteCommands)
vfs.fs.inode[файловая-система,total|free|used|pfree|pused] (количество inode в штуках
и процентах)
vfs.fs.size[файловая-система,total|free|used|pfree|pused] (количество места в килобайтах
и процентах)
vm.memory.size[total|shared|free|buffers|cached] (объём ОП в байтах) (shared всегда возвращал 0 и был удалён в 2.0)
web.page.get[адрес-хоста,локальная-часть-URL,порт] (возвращает полученную HTML страницу;
EOF - при ошибке)
web.page.perf[адрес-хоста,локальная-часть-URL,порт] (возвращает время загрузки страницы в секундах)
web.page.regexp[адрес-хоста,локальная-часть-URL,порт,регулярное-выражение,длина]
(возвращает первое вхождение регулярного выражения; EOF - ошибка)
специфические для MS Windows (eventlog, perf_counter, service_state, proc_info)
wmi.get() - Windows Management Instrumentation (WMI)
Возможности агентов могут быть расширены с помощью внешних скриптов.
Для описания внешнего скрипта в конфигурационный файл добавляется строка (требуется перезапуск агента):
UserParameter=уникальное-имя-типа-данных,незакавыченная команда оболочки с параметрами
Команда может иметь позиционные параметры
(при использовании указываются в квадратных скобках, так же как и для встроенных типов данных):
UserParameter=уникальное-имя-типа-данных[*],команда оболочки с использованием $1 - $10
Простые проверки производятся сервером удалённо без использования агентов.
Типы данных, собираемые простыми проверками:
tcp|ftp|http|imap|nntp|pop|smtp|ssh|telnet|ldap,ip-адрес,порт (0 - соединение не принято,
1 - соединение принято, 2 - время ожидания истекло)
ftp_perf|http_perf|imap_perf|nntp_perf|pop_perf|smtp_perf|ssh_perf,ip-адрес,порт
(0 - сервер недоступен, иначе число милисекунд, потраченных на соединение)
icmpping (0 - неудача, 1 - успех)
icmppingsec (время оборота)
Для описания элементов данных, собираемых с помощью SNMP,
необходимо для каждого элемента указать:
описание
тип агента (SNMPv1, SNMPv2 или SNMPv3)
SNMP комьюнити для чтения
OID (рекомендуется в числовом виде); возможен динамический поиск OID в формате
(от такого поиска некоторые устройства со слабым CPU могут умереть):
базовая-часть-OID["index","базовая часть OID, в которой будет вестись поиск","строка поиска"]
ifInOctets["index","ifDescr","GigabitEthernet0/1"]
порт (по умолчанию 161)
тип (key), под которым этот OID будет известен (можно сам OID)
Перехват SNMP trap - snmptrap.sh (используется zabbix_sender, настроить по месту)
и snmptrapd из net-snmp (добавить в snmptrapd.conf строку "traphandle default /bin/bash .../snmptrap.sh").
После этого настроить элемент данных.
Типы данных, собираемые IPMI - IPMI имя сенсора и ключ (можно использовать имя сенсора без пробелов).
Предварительно в настройках узла необходимо указать использование IPMI (IP адрес, порт 623, алгоритм аутентификации,
уровень привилегий, имя пользователя и пароль).
Дискретные сенсоры не поддерживаются.
Типы данных, собираемые сервером без использования агентов
с помощью внешних скриптов. Синтаксис (скрипты ищутся в каталоге, заданном параметром
ExternalScripts конфигурационного файла, скрипту дополнительно передаётся имя хоста
в качестве первого параметра, параметры должны быть хотя бы фиктивные):
zabbix[uptime] (время жизни процесса zabbix_server)
Агрегированные проверки не требуют ни агентов, ни прямых обращений
сервера к хостам - первичные данные извлекаются из БД и обрабатываются
(усредняются, суммируются и т.д.). Нельзя комбинировать несколько различных первичных данных.
Формат агрегированной проверки:
имя-групповой-функции["имя группы хостов","элемент данных","тип предобработки","параметр предобработки"]
Последовательность извлеченных элементов данных для одного хоста предобрабатывается
( параметр определяет интервал времени в секундах, извлекаются значения элементов данных,
полученные за этот интервал):
avg (усреднение данных по интервалу)
count (количество имеющихся данных за интервал)
last (последнее значение элемента данных)
max
min
sum (сумма значений)
Групповые функции действуют над предобработанными значениями:
grpavg (среднее по группе)
grpmax
grpmin
grpsum
Вычисляемые элементы данных не требуют дополнительных запросов - данные извлекаются из БД и обрабатываются.
Простая формула состоит из имени функции (набор функций совпадает с функциями триггеров - last, min, max, avg, count и пр.) и параметров в скобках,
первым параметром является имя-ключа или имя-хоста:имя-ключа. Если имя ключа содержит пробелы или другие символы пунктуации,
то необходимо использовать кавычки. Вычисленные значения записываются в базу, записанные значения не изменяются при изменении формулы.
Мониторинг своей СУБД - ?
ZABBIX trapper - значения элемента данных заполняются с помощью
zabber_sender. Указывается список хостов, которым разрешается посылать данные.
Дополнительный модуль с отдельной настройкой для мониторинга HTTP/HTTPS серверов
позволяет периодически выполнять многошаговые сценарии и сохранять результат в БД:
время ответа, скорость загрузки, код возврата, найденная строка.
Куки сохраняются в пределах сценария.
При настройке необходимо задать
в какую группу элементов данных (приложение) включить (обязательно)
имя сценария
интервал выполнения
каким браузером представляться
активность
имена и значения макро, которые будут использоваться при описании шагов сценария, в виде:
{имя}=значение
шаги сценария (HTTP запросы)
имя
URL
имена и значения POST переменных (можно использовать макро)
максимальное время ожидания (отдельно для соединения и самого запроса)
регулярное выражение для поиска в результатах HTTP запроса,
для успешности этапа поиск должен быть успешен (пустое выражение всегда успешно)
коды возврата через запятую, считающиеся успешными (пустой список - любой код)
При создании каждого сценария автоматически добавляются элементы данных:
web.test.in[имя-сценария,,bps] - средняя скорость загрузки (байт в секунду, float)
для всего сценария
web.test.fail[имя-сценария] - номер неудачного шага (0 - если весь сценарий завершился удачно)
При создании каждого шага сценария автоматически добавляются элементы данных:
web.test.in[имя-сценария,имя-шага,bps] - средняя скорость загрузки (байт в секунду, float) для шага
web.test.time[имя-сценария,имя-шага] - время ответа в секундах, float
web.test.rspcode[имя-сценария,имя-шага] - код возврата, целое
Написать свой скрипт, извлекающий значение со страницы
и вставить его в cron (вызывать как внешнюю проверку) оказалось проще, чем использовать этот модуль.
Некоторые элементы данных могут перейти в разряд "неподдерживаемых",
если сервер или агент не могут получить соответствующее значение (смотрите в журналы!),
Это можно заметить пробежавшись в настройке элементов данных по всем узлам.
Периодически (по умолчанию - 600 секунд) сервер пытается проверить их работоспособность.
Получить список неподдерживаемых элементов данных в версии 1.8:
"SELECT description,key_,host FROM items LEFT JOIN hosts ON items.hostid = hosts.hostid WHERE items.status = 3; ".
Получить список неподдерживаемых элементов данных: Настройка -> Узлы сети; фильтр сбросить; фильтр "состояние не поддерживается" .
В версии 2.2 появился специальный тип извещений о переходе элементов в неподдерживаемые.
Триггер (trigger) задаётся с помощью логического выражения от значений
единиц данных и может принимать значения FALSE, TRUE и UNKNOWN.
Есть традиция определять триггеры так, чтобы значение TRUE указывало на наличие проблемы.
Выражение перевычисляется каждый раз при получении очередного значения единицы данных,
используемой в выражении. Выражения строятся с использованиемм бинарных операторов и функций
над элементами данных, а также констант (числа и числа с двоичными множителями (K, M, G)).
В выражении можно использовать единицы данных различных хостов.
Для задания приоритета вычислений необходимо использовать круглые скобки.
Синтаксис извлечения значения элемента данных:
Операторы (перечислены в порядке убывания приоритета, преобразование типов - ?):
/
*
-
+
<
>
# (приближённо не равно)
= (приближённо равно)
&
|
Функции (имя фукции записывается через точку после
имени типа элемента данных; параметры указываются в круглых скобках через запятую;
параметры необходимо указывать даже для тех функций, которые их игнорируют или не имеют;
некоторые параметры имеют значения по умолчанию и их можно опускать):
abschange (абсолютная разница между последним и предпоследним значением;
для строк: 0 - значения равны, 1 - не равны)
avg (среднее значение за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#'))
delta (разность между максимумом и минимумом за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#'))
change (разница между последним и предпоследним значением;
для строк: 0 - значения равны, 1 - не равны)
count (количество отсчётов, удовлетворяющих критерию, за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#');
критерий задаётся вторым (с чем сравнивать) и
третьим параметром (как сравнивать - указывать в кавычках: eq, ne, gt, ge, lt, le);
для плавающих чисел сравнение приближённое; для строк, журналов и текстов ищется вхождение
шаблона)
date (дата в формате YYYYMMDD)
dayofweek (1 - понедельник, 7 - воскресенье)
diff (0 - последнее и предпоследнее значения равны; 1 - различаются)
fuzzytime (1 - временной штамп элемента данных различается от времени сервера не более указанного
числа секунд)
iregexp (1 - указанное в качестве первого параметра регулярное выражение
соответсвует значению элемента данных за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#');
без учёта регистра символов)
last (N-ое с конца значение элемента данных (число предваряется символом '#');
порядок гарантируется с точностью до секунды; last(0) - это last(#1))
logseverity (для event log)
logsource (для event log)
max (максимум за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#'))
min (минимум за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#'))
nodata (1 - если за указанное число секунд не было полученно данных;
нельзя указывать менее 30 секунд)
regexp (1 - указанное в качестве первого параметра регулярное выражение
соответствует значению элемента данных за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#');
с учётом регистра символов)
str (1 - указанная в качестве первого параметра подстрока найдена
в элементе данных за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#');
с учётом регистра символов)
sum (сумма значений за указанный интервал в секундах или за указанное
количество отсчётов (число предваряется символом '#'))
time (текущее время в формате HHMMSS)
Триггер может зависеть от других триггеров, т.е. он не меняет своё состояние в соответствии
со значением выражения, а событие не генерируется, если хотя бы один из
этих триггеров взведён.
События могут генерироваться только при взведении триггера или каждом
изменении взведённого триггера (Multiple TRUE events).
Триггер имеет уровень серьёзности (представляется цветом и звуком
в вебинтерфейсе, определяет допустимость средства доставки (Media) сообщения и используется
в условных действиях):
Not classified (серый)
Information (зелёный)
Warning (жёлтый)
Average (тёмнокрасный)
High (красный)
Disaster (алый)
Триггер может содержать комментарии, которые могут передаваться в сообщении,
и URL, которые будет доступен на странице состояния триггеров.
Действие (action) является реакцией системы на событие (event).
Определяется для события или группы событий.
Атрибуты:
Name - имя действия
Event Source - источник событий: Triggers (изменение состояния триггера) или Discovery (модуль
автоматического обнаружения контролируемых объектов)
Enable escalations - разрешить дальнейшую эскалацию событий
Period - период времени для шага эскалации в секундах
Defult subject - кого извещать по умолчанию (можно использовать макросы)
Default message - текст сообщения по умолчанию (можно использовать макросы)
Recovery message - текст сообщения о решении проблемы (можно использовать макросы)
Recovery subject - кого извещать о решении проблемы (можно использовать макросы)
Status - статус действия: активно или запрещено
набор условий инициации действия (фильтр), каждое условие задаётся типом,
оператором сравнения и строкой для сравнения, условия одного типа OR-ятся,
разных типов - AND-ятся
типы условий для событий, порождаемых переключением триггера
Application (операторы: =, like, not like) - триггер является частью указанного приложения
Host group (операторы: =, <>) - изменился триггер для хоста из указанной группы
Host template (операторы: =, <>) - изменился триггер, определённый в указанном шаблоне,
использованном при создании хоста
Host (операторы: =, <>) - изменился триггер для указанного хоста
Trigger value (операторы: =) - изменился триггер с указанным значением (OK или PROBLEM)
Time period (операторы: in) - время события попадает в указанный интервал
(шаблоны: dd-dd, hh:mm-hh:mm и др.)
типы условий для событий, порождаемых модулем автообнаружения
Host IP (операторы: =, <>) - входит ли адрес обнаруженного хоста в указанный интервал
Service type (операторы: =, <>) - обнаруженный сервис совпадает с указанным
Service port (операторы: =, <>) - TCP порт обнаруженного сервиса входит
в указанный интервал
Discovery status (операторы: =) - Up или Down
Uptime (>=, <=) - в секундах
Downtime (>=, <=) - в секундах
Received value (операторы: like, not like, =, <>, >=, <=) - сравнение указанной строки
со значением, полученным от агента или SNMP
операция (operation) или набор операций;
для событий автообнаружения можно также добавить или удалить хост,
добавить хост в группу или удалить из группы, связать хост с шаблоном или отвязать;
параметры операции:
Step - при эскалации событий (позволяет организовать повторное извещенеие,
извещение других пользователей, дополнительные действия при неустранении проблемы
за указанное время)
устанавливается начальный шаг (From), конечный шаг (To)
и интервал времени (в секундах) для перехода на следующий шаг
Operation type - что делать на этом шаге: Send message или Execute command
Event Source (?)
Send message to - персональное сообщение (Single user) или групповое (User group)
Default message - использовать текст сообщения по умолчанию
Subject - кого извещать (можно использовать макросы);
для получения сообщения пользователь должен иметь права на чтение к триггеру на хосте,
который породил сообщение
Message - текст сообщения (можно использовать макросы)
Remote command - текст команды для удалённого выполнения (д.б. разрешено в настройках агента);
каждая строка должна содержать имя хоста, двоеточие и текст команды (можно использовать макросы)
или имя группы хостов, '#' и текст команды (можно использовать макросы);
пользователь zabbix должен иметь права на выполнение
(рекомендуется настроить sudo);
команда выполняется в фоновом режиме без проверки результата;
команда может выполняться на сервере, на агенте (требуется настройка агента), через IPMI, telnet или ssh
Для генерации текста сообщения, команд и получателя можно использовать
макросы.
Некоторые макросы можно также использовать для написания скриптов,
указания параметров элемента данных, генерации меток на карте (с версии 1.8), генерации имён триггеров.
Вызов макроса заключается в фигурные скобки. Вызовы макросов могут быть вложенными.
Имена макросов:
{DATE} - текущая дата (yyyy.mm.dd)
{ESC.HISTORY} - журнал предыдущих сообщений в истории эскалации
{EVENT.AGE} - возраст события (в секундах?)
{EVENT.DATE} - дата события
{EVENT.ID} - номер (идентификатор) события
{EVENT.TIME} - время события (формат - hh:mm:ss)
{HOSTNAME} - имя хоста первого элемента данных из выражения, определяющего
переключившийся триггер, вызвавший событие
{HOST.CONN} - IP адрес или DNS имя хоста (зависит от настроек)
{HOST.DNS} - DNS имя хоста
{IPADDRESS} - IP адрес хоста первого элемента данных из выражения, определяющего
переключившийся триггер, вызвавший событие
{ITEM.LASTVALUE} - последнее значение первого элемента данных из выражения, определяющего
переключившийся триггер, вызвавший событие
{ITEM.NAME} - имя первого элемента данных из выражения, определяющего
переключившийся триггер, вызвавший событие
{ITEM.VALUEномер} - ?
{PROFILE.CONTACT} - контактное лицо из профиля хоста
{PROFILE.DEVIDETYPE} - тип устройства из профиля хоста
{PROFILE.HARDWARE} - тип оборудования из профиля хоста
{PROFILE.NAME} - имя из профиля хоста
{PROFILE.LOCATION}
{PROFILE.MACADDRESS}
{PROFILE.NOTES}
{PROFILE.OS}
{PROFILE.SERIALNO}
{PROFILE.SOFTWARE}
{PROFILE.TAG}
{STATUS} - см. {TRIGGER.STATUS}
{TIME} - текущее время (hh:mm:ss)
{TRIGGER.COMMENT} - комментарий к переключившемуся триггеру, вызвавшему событие
{TRIGGER.ID} - номер (идентификатор) триггера
{TRIGGER.KEY} - тип (key) первого элемента данных из выражения, определяющего
переключившийся триггер, вызвавший событие
{TRIGGER.NAME}
{TRIGGER.NSEVERITY} - уровень серьёзности (0 - непонятно, 1 - информация, 2 - предупреждение,
3 - так себе происшествие, 4 - реальная проблема, 5 - сливай воду
{хост:тип.функция(параметр)} - значение элемента данных аналогично выражениям,
используемым для задания триггеров (см. выше описание триггера))
Для посылки извещений администратором определяется среда передачи (Media):
тип
e-mail (необходимо указать имя SMTP сервера, обратный адрес и HELO)
Jabber
свой скрипт, которому передаются следующие параметры: получатель, тема, сообщение
SMS через GSM модем, подключённый к последовательному порту (параметры
линии устанавливаются другим ПО; пользватель zabbix должен иметь права на чтение
и запись к устройству; модем не должен требовать ввода PIN;
В настройках пользователя указывается среда передачи (можно несколько):
время доступности среды передачи
уровень серьёзности сообщений для передачи по этой среде
События и действия хранятся в БД (время хранения - 365 дней - задаётся
в настройках сборки мусора), их можно просмотреть и подтвердить получение или написать комментарий.
Для ускорения настройки введено понятие
шаблона (Template) - одинаковый набор данных, триггеров и графиков можно описать
один раз, а затем использовать (связать, link) при описании хоста.
К одному хосту может быть привязано несколько шаблонов.
При описании шаблона можно также ссылаться на другие шаблоны (иерархический шаблон).
Шаблон или его элементы можно также копировать в другой шаблон или хост.
При изменении шаблона необходима осторожность:
добавления к шаблону как и ожидается добавляются к хостам, к которым привязан шаблон,
удаления из шаблона не удаляются из хостов (удалить и очистить?),
изменения - как повезёт.
Не менее полезной особенностью является возможность
массового внесения изменений в конфигурацию узлов, элементов данных, триггеров.
Только не надо массово добавлять шаблоны - старые при этом удаляются!
В особо тяжёлых случаях можно экспортировать часть конфигурации
(гибкие возможности выбора) в формате XML, изменить и вернуть обратно.
При импорте можно указать правила обработки для уже существующих и новых объектов:
изменять, добавлять, пропускать.
Экспортируются: хосты (настройки хоста и ссылки на шаблоны, шаблоны, приложения, элементы данных, триггеры,
графики, макросы), карты, комплексные отчёты.
Модуль автоматического обнаружения (отдельный пункт настройки) пробегает по указанному
диапазону адресов (списку диапазонов адресов) с указанным интервалом времени,
пытаясь обнаружить неизвестный ранее хост.
Типы проверок:
SSH (можно указать порт, интервал портов, список портов)
LDAP (можно указать порт, интервал портов, список портов)
SMTP (можно указать порт, интервал портов, список портов)
FTP (можно указать порт, интервал портов, список портов)
HTTP (можно указать порт, интервал портов, список портов)
POP (можно указать порт, интервал портов, список портов)
NNTP (можно указать порт, интервал портов, список портов)
IMAP (можно указать порт, интервал портов, список портов)
TCP (можно указать порт, интервал портов, список портов)
Zabbix агент (можно указать порт и ключ)
SNMPv1 (можно указать порт, комьюнити, OID)
SNMPv2 (можно указать порт, комьюнити, OID)
ICMP ping (fping)
При обнаружении или пропадании хоста генерируется событие
(Service Up, Service Down, Host Up, Host Down, Service Discovered, Service Lost, Host Discovered, Host Lost),
к которому можно привязать действие (условия и операции),
так же как и к событию, порождённому
изменением состояния триггера. Для событий автообнаружения кроме посылки извещений
и выполнения скриптов можно также: добавить или удалить хост,
добавить хост в группу или удалить из группы, связать хост с шаблоном или отвязать от шаблона.
В документации приводится пример, как автоматически включать в мониторинг хосты,
которые активны более 1 часа и выключать их после 24 часов неактивности,
причём использовать различные шаблоны (на основании значения system.uname,
предоставляемого агентом). Одно непонятно - зачем это нужно?
Правил автообнаружения может быть много.
Модуль LLD (Low-level discovery) позволяет автоматически добавлять
элементы данных, триггеры и графики для обнаруживаемых файловых систем, сетевых интерфейсов,
ЦПУ и SNMP OID. Можно добавить свои правила LLD.
Имеется возможность автоматической регистрации активных клиентов.
Zabbix позволяет определить SLA для иерархии услуг IT,
задавая метод вычисления, допустимый предел, часы обслуживания и привязку к состоянию триггеров,
а затем отслеживать его соблюдение.
Веб-интерфейс консоли управления реализован через
обращение PHP скриптов напрямую к СУБД. Поддерживается SSL.
Консоль позволяет как просмотр собранных данных, так и настройку.
Автоматическое отсоединение после 30 минут бездействия.
После 5 неудачных попыток доступ блокируется на 1 минуту,
а IP-адрес показывается настоящему администратору.
Консоль отображает состояние контролируемых объектов и параметров, состояние триггеров,
историю событий и реакций оператора, карту сети и графики изменения параметров.
Главная панель (входная страница, dashboard) даёт общий обзор состояния триггеров и сервера zabbix.
Настраивается доступ к популярным графикам, отчётам и картам.
Можно выбрать несколько объектов из списка, нажимая Ctrl одновременно
с указанием мышью.
Каждый пользователь может подогнать вид консоли под свои нужды - поменяв
главную панель, создав свои графики, карты, экраны и прочее.
Кроме встроенных графиков по каждому числовому параметру (настройка не требуется)
можно определять свои составные графики: имя, ширина, высота, тип (нормальный, стек, пирог, 3D пирог),
показывать ли границы рабочего времени (настраивается в общих настройках),
показывать ли границы триггеров, тип оси Y (автоматически, положительное автоматически, вручную),
элементы данных (имя, предобработка, что делать при наличии нескольких данных в одном пикселе,
цвет, тип линии или заполнения, приоритет сортировки - с меньшим числом будет внизу стека).
Нельзя составлять выражения из элементов данных.
Графики автоматически обновляются (можно настроить интервал обновления, начальное время и масштаб).
Карта позволяет наглядно показать связь хостов между собой,
цветом отображается состояние хоста (узлы) или триггера (соединения).
Картинку (общие размеры задаются в пикселах) необходимо рисовать самостоятельно,
задавая вручную координаты (в пикселах) иконок хостов на плоскости и какой хост с каким соединён.
Новые иконки (встроенные ужасны) загружаются в общих настройках (PNG, 48x48 или 24x24).
Там же можно загружать фоновые картинки (масштабирование при визуализации не производится).
Рекомендуется предварительно задуматься о прозрачности. Удаления иконок нет.
В общих настройках карты указывается тип подписей (указанную при составлении карты подпись и статус,
IP адрес и статус, имя хоста и статус, только статус хоста или совсем ничего)
к иконкам и где их размещать по умолчанию.
Для каждого элемента карты указываются
тип элемента карты
иконка изображает состояние всех триггеров хоста (Host, узел сети)
иконка изображает состояние всех элементов карты (нет такого?)
иконка изображает состояние триггера
иконка изображает состояние всех триггеров всех хостов группы
ни с чем не связанная иконка
подпись к иконке (см. общие настройки карты)
расположение подписи, если не по умолчанию
хост, группа или триггер в зависимости от типа элемента карты
имя иконки для объекта в нормальном состоянии, при наличии проблемы,
при неопределённом состоянии, при отключённом объекте
URL, который будет связан с иконкой (иначе будет доступ к скриптам и триггерам хоста)
Для каждого соединения элементов карты указываются
элементы карты, которое оно соединяет
тип и цвет линии для нормального состояния
набор триггеров, позволяющих изменить тип линии и цвет соединения
К узлам карты могут быть приписаны скрипты (Администрирование - Скрипты).
При задании команды можно использовать макросы {HOST.CONN}, {HOST.DNS}, {IPADDRESS}.
В комплекте идут ping и traceroute (запускаются на сервере, результат в окне браузера).
В настройках скриптов можно задать допустимую группу пользователей, группу хостов
и наличие прав на чтение или запись.
Экран (Screen, комплексный отчёт) позволяет
собрать свою страницу из карт, графиков, триггеров и прочего.
Экран представляет собой прямоугольную таблицу (можно сливать ячейки по горизонтали и вертикали),
в ячейках которой можно размещать:
часы
обзор данных о группах хостов
встроенные графики
определённые пользователем графики
информацию о хостах
карты
строки текста
обзор состояния сервера
общий обзор триггеров
обзор триггеров для группы хостов
историю событий
историю действий
вложенные экраны
вложенные произвольные страницы (URL)
Ячейки можно сливать по горизонтали и вертикали,
выравнивать содержимое по горизонтали и вертикали.
Из экранов можно делать слайд-шоу, задав последовательность экранов
и интервал демонстрации каждого из них.
Инвентаризация - поиск и просмотр профилей узлов (модель, серийный номер
и пр.). Увы - их придётся в начале задать и скорее всего они уже есть в другой системе инвентаризации.
Есть аудит действий системы (action) и действий администратора
(вход, выход, добавление, удаление, изменение).
Можно заблокировать доступ к интерфейсу, поменяв conf/maintenance.conf.php.
Тему оформления можно подогнать под свой вкус, отредактировав styles/css_имя-темы.css,
и включив в include/forms.inc.php.
Методы аутентификаци: собственный (имена и пароли, хранятся в БД в зашифрованном виде), от Apache, LDAP.
В случае аутентификации Apache и LDAP пользователь в смысле Zabbix тоже должен существовать,
но его пароль не используется. При использовании LDAP пользователи из группы, для которой
указан метод доступа "Internal", будут аутентифицироваться локально.
Управление правами доступа осуществляется с помощью включения пользователя в
группы пользователей и задания прав доступа для группы пользователей к группам хостов на чтение или чтение и запись.
Типы пользователей:
ZABBIX User (доступ к меню мониторинга, по умолчанию
не имеет доступа ни к каким хостам и группам, необходимо предоставлять доступ явно)
ZABBIX Admin (доступ к меню мониторинга и конфигурации, по умолчанию
не имеет доступа ни к каким хостам и группам, необходимо предоставлять доступ явно)
ZABBIX Super Admin (доступ к меню мониторинга, конфигурации и администрирования;
имеет неотзывный доступ на чтение и запись ко всем хостам и группам)
Для пользователя также задаются: входное имя, имя собственное, фамилия,
список групп, среда передачи сообщений (Media), язык (русский есть), тема оформления,
использование куки для автоматического входа, выход по неактивности, начальный URL,
интервал обновления экрана. Здесь же можно посмотреть права доступа, определяемые членством в группах.
Пользователь может самостоятельно настроить (в профиле): пароль, язык, тему оформления,
использование куки для автоматического входа, начальный URL,
интервал обновления экрана.
По умолчанию создаются пользователи Admin (максимальные права) и Guest (минимальные права,
в этом режиме с системой могут работать незарегистрированные пользователи).
Для группы пользователей определяется:
список пользователей, доступность вебинтерфейса (включить, выключить, системные умолчания),
заблокированность пользователя, права на запись/чтение и чтение к группам хостов,
запрещённые группы хостов (?).
Можно создавать свои группы пользователей и имеются группы пользователей "из коробки":
Zabbix administrators (члены этой группы получают извещения о проблемах с СУБД)
UNIX administrators
WEB administrators
Security specialists
Network administrators
Head of IT department
Disabled (сюда надо помещать временно заблокированных пользователей вместо их удаления)
--new-nodeid идентификатор-узла (преобразовать БД под указанный номер узла)
Конфигурационный файл имеет текстовый формат.
На каждой строке задаётся значение одного параметра в формате "имя=значение".
Комментарии начинаются с символа '#'.
Параметры:
StartPollers (5; начальное количество опрашивающих процессов)
StartIPMIPollers (0; нужен хотя бы 1, есть есть потребность собирать информацию через IPMI)
StartPollersUnreachable (1; начальное количество опрашивающих процессов для недоступных хостов)
StartTrappers (5; начальное количество слушающих процессов)
StartPingers (1; начальное количество процессов, занимающихся пингами)
StartDiscoverers (1; начальное количество процессов, занимающихся обнаружением новых хостов)
StartHTTPPollers (1; начальное количество процессов, извлекающих информацию с веб-страниц)
ListenIP (все; адрес для получения информации от активных агентов))
ListenPort (10051; порт для получения информации от активных агентов)
SourceIP (адрес для исходящих соединений)
HousekeepingFrequency (1; интервал в часах - от 1 до 24 - между запусками процесса
удаления данных (history, alert, alarms) с истёкшим сроком хранения)
DisableHousekeeping (0)
SenderFrequency (30; интервал в секундах между попытками послать извещение)
Timeout (5; время ожидания от 1 до 30 секунд данных от агента)
TrapperTimeout (5; максимальное время обработки данных слушающим процессом
в секундах - от 1 до 300)
UnreachablePeriod (45; через сколько секунд недоступности объявлять хост неработающим)
UnreachableDelay (15; интервал в секундах при проверке недоступного хоста);
UnavailableDelay (60; интервал в секундах при проверке неработающего хоста)
PidFile (/var/tmp/zabbix_server.pid; изменять не стоит)
LogFile (/var/log/zabbix/zabbix_server.log; права доступа; в комментариях сказано, что при
неустановленном значении будет выдаваться на syslog - не работает)
LogFileSize (1; максимальный размер журнала в мегабайтах;
при превышении производится ротация журнала; 0 - без ограничений
AlertScriptsPath (/home/zabbix/bin (!); расположение пользовательских скриптов для извещений)
ExternalScripts (/etc/zabbix/externalscripts)
FpingLocation (/usr/sbin/fping)
Fping6Location (/usr/sbin/fping6)
PingerFrequency (60; в секундах)
TmpDir (/tmp)
DBHost (localhost; адрес СУБД)
DBName (имя БД для СУБД)
DBUser (имя пользователя для СУБД)
DBPassword (пароль пользователя для СУБД)
DBSocket (быстрее; веб-интерфейс не умеет работать через сокет)
StartDBSyncers (0; включить кеширование обращений к СУБД)
Include (вставляет содержимое указанного файла)
NodeID (0; номер узла для распределённой системы мониторинга, 0 - локальная система)
NodeNoEvents (0; не посылать локальные события главному злу)
NodeNoHistory (0; не посылать локальные данные главному узлу)
--print (вывести примерный список поддерживаемых типов (метрик) параметров, тип значения,
значение в текущий момент)
--test метрика (протестировать возможность получения значения параметра указанной метрики,
не обязательно из приведённого выше списка)
Конфигурационный файл имеет текстовый формат.
На каждой строке задаётся значение одного параметра в формате "имя=значение".
Комментарии начинаются с символа '#'.
Параметры:
Server (; IP адрес или имя сервера; можно указывать список через запятую;
для активных проверок используется первый адрес из списка)
ServerPort (10051; порт сервера для активных проверок)
Hostname (уникальное имя хоста для активных проверок - это имя узла zabbix, а не имя хоста DNS)
ListenPort (10050; номер порта для приёма запросов)
ListenIP (все; IP адрес для привязки приёмного порта)
SourceIP (; IP адрес для исходящих соединений)
StartAgents (3 (5 в версии 1.4); начальное количество слушающих процессов; одного недостаточно)
RefreshActiveChecks (120; интервал в секундах для запроса списка параметров активных проверок)
DisableActive (0; только отвечать на запросы)
DisablePassive (0; не принимать запросы)
EnableRemoteCommands (по разному; разрешить приём удалённых команд)
PidFile (/var/tmp/zabbix_agentd.pid; изменять не стоит)
LogFile (/var/log/zabbix/zabbix_agentd.log; права доступа; в комментариях сказано, что при
неустановленном значении будет выдаваться на syslog - не работает)
LogFileSize (1; максимальный размер журнала в мегабайтах;
при превышении производится ротация журнала; 0 - без ограничений
Timeout (3; разрешается тратить на обработку не более указанного количества секунд;
некоторые внешние скрипты выполняются медленно; zabbix_agentd не убивает запущенный процесс,
только престаёт ждать ответ)
UserParameter (указывается ключ (метрика) и строка для командной оболочки (bash);
командная строка должна хоть что-то вернуть)
BufferSend (5; не держать данные в буфере дольше указанного количества секунд)
BufferSize (100; размер буфера значений параметров в штуках)
Создать пользователей (Zabbix Super Admin, во всех группах, кроме guest и disabled).
Разрешить в качестве средства достувка email в любое время и по любому поводу.
Английский язык (от прошлой версии осталось неприятное воспоминание).
Тему по умолчанию. Автоматический вход. Увеличить интервал перерисовок.
URL на dashboard.php. Проверить права (на всякий случай).
Скопировать предопределённые шаблоны и настроить под свои нужды.
В частности, из Template_Linux сделать шаблон с набором действительно общих
для всех хостов параметров Template_LinuxCore (без сервисов, которые есть не на каждом хосте)
и отдельные шаблоны для каждого сервиса и дополнительных аппаратных особенностей
(Template_eth1, Template_eth1-eth5 и т.д.).
Шаблон Template_HP_InsightManager содержит только параметры статуса
(из 11 тысяч доступных параметров).
При расчёте требуемого места для хранения данных необходимо учесть
количество контролируемых параметров, частоту их обновления, время хранения,
затраты СУБД на хранение каждого значения (50 байт на число),
учесть место под суммарные данные (trend) и записи о событиях.
Кеширование доступа к СУБД уменьшает нагрузку на CPU в несколько раз,
но события могут запаздывать на несколько секунд.
./configure --enable-server --enable-agent --with-mysql --with-libcurl --with-net-snmp --with-openipmi --with-ldap
# --with-ssh2 требует версию 1.0.0 или выше
make
make install
/usr/local/sbin/ (zabbix_agent (запускается через xinetd),
zabbix_agentd (самостоятельный), zabbix_server
удалить остатки старой версии: /usr/local/sbin/zabbix_get, /usr/local/sbin/zabbix_sender
где zabbix_snmptrap?
скопировать из misc/conf/ в /etc/zabbix и отредактировать zabbix_server.conf и zabbix_agentd.conf (кстати, удалена опция StartDBSyncers),
права доступа
удалить индексы (MySQL), не все они существуют:
alter table dhosts drop index dhosts_1;
alter table dservices drop index dservices_1;
alter table httptest drop index httptest_2;
alter table httptest drop index httptest_3;
alter table history_log drop index history_log_2;
alter table history_text drop index history_text_2;
alter table actions drop index actions_1;
alter table escalations drop index escalations_2;
alter table graphs_items drop index graphs_items_1;
alter table graphs_items drop index graphs_items_2;
alter table services drop index services_1;
запастись правами и местом на диске (двухкратное? у меня ничего не потребовалось)
mysql zabbix -u zabbix -p < upgrades/dbpatches/1.8/mysql/patch.sql
service zabbix_agentd start
service zabbix_server start
проблемы с IPMI: адрес IPMI сбросился в 127.0.0.1, в качестве DNS имени указан бывший адрес IPMI
проблемы с элементами данных типа символ, извлекаемыми с помощью SNMP: была строка,
включая двойные кавычки, стала без кавычек - сработали триггеры на изменение
Веб-интерфейс
исправить /etc/php.ini и перезапустить httpd (service httpd restart)
адаптировать /var/www/html/zabbix169/conf/zabbix.conf.php и /var/www/html/zabbix/conf/zabbix.conf.php.example
в /var/www/html/zabbix/conf/zabbix.conf.php,
права доступа: chown apache /var/www/html/zabbix/conf/zabbix.conf.php; chmod 440 /var/www/html/zabbix/conf/zabbix.conf.php
при первом запуске могут предложить провести установку системы, надо вежливо отказаться
русский текст из знаков вопроса
контрольная панель теперь не влезает на экран по ширине
опция "предварительные проверки" при установке рекомендует ещё увеличить лимиты в /etc/php.ini
и перезапустить httpd (service httpd restart)
смонтировать /dev/mapper/system-mysql на /var/lib/mysql (и позаботиться о правах доступа)
будет использоваться InnoDB в тяжёлом режиме (my-innodb-heavy-4G.cnf)
skip-networking
#log-bin
myisam_max_sort_file_size = 1G (где он будет создаваться?)
myisam_max_extra_sort_file_size = 1G (где он будет создаваться?)
innodb_data_file_path = ibdata1:19000M:autoextend # тютелька-в-тютельку с учётом журналов
innodb_flush_log_at_trx_commit = 0 # немножко увеличивает риск, но сильно уменьшает нагрузку
innodb_fast_shutdown
innodb_flush_method=O_DIRECT # исключает дублирование данных в файловом кеше,
не стоит использовать в конфигурации с SAN, размер буферов должен быть достаточным
Установка сервера и агента Zabbix
создать пользователя zabbix (useradd zabbix;
зачем ему домашний каталог и bash?)
развернуть архив
создание БД
echo "create database zabbix" | mysql -u root -p
cat create/schema/mysql.sql | mysql -u root -p zabbix
cat create/data/data.sql | mysql -u root -p zabbix
cat create/data/images_mysql.sql | mysql -u root -p zabbix
создание пользователя zabbix для MySQL
mysql -u root -p zabbix
grant all privileges on zabbix.* to zabbix@localhost;
grant all privileges on zabbix.* to zabbix@"%";
SET PASSWORD FOR 'zabbix'@'localhost' = PASSWORD('пароль');
SET PASSWORD FOR 'zabbix'@'%' = PASSWORD('пароль');
/usr/local/sbin/ (zabbix_agent (запускается через xinetd),
zabbix_agentd (самостоятельный), zabbix_get, zabbix_sender, zabbix_server
и это всё?
mkdir /etc/zabbix
mkdir /etc/zabbix/externalscripts
mkdir /var/log/zabbix (и права)
cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/ (отредактировать под zabbix и local)
cp misc/conf/zabbix_server.conf /etc/zabbix/ (отредактировать - имя, пароль, DBSocket,
LogFile - и права доступа; вывод в syslog не работает!)
chkconfig --add zabbix_server
chkconfig --level 2345 zabbix_server on
service zabbix_server start # какая толпа процессов!
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ (отредактировать под zabbix и local)
cp misc/conf/zabbix_agentd.conf /etc/zabbix/ (отредактировать LogFile; вывод в syslog не работает!)
chkconfig --add zabbix_agentd
chkconfig --level 2345 zabbix_agentd on
service zabbix_agentd start
установить агентов на контролируемых хостах
открыть порт tcp/10050 на агентах
открыть порт tcp/10051 на сервере
Веб-интерфейс
установить Apache (пакет httpd) и
PHP (пакеты php php-mysql php-bcmath php-gd);
рекомендуется завести отдельный виртуальный сервер, направив его на /var/www/html/zabbix/
настроить по шагам (выясняется, что сервер zabbix умеет обращаться к
MySQL через сокет, а вебинтерфейс - нет; пришлось включить сетевой доступ к MySQL)
вручную скопировать сохранённый файл с настройками в /var/www/html/zabbix/conf/zabbix.conf.php
(я использовал метод Copy/Paste и в конец файла прокралась пустая строка -
сивол NL выводился в начале каждой генерируемой картинки ;)
можно заходить под именем Admin и паролем zabbix и тут же его поменять
в разделе конфигурации добавить хост "ZABBIX Server" с шаблоном Template_Linux
и начать мониторинг
Определение и настройка контролируемых объектов, параметров,
триггеров, пользователей и их прав, средств доставки и красивых карт и консолей.
установить mysql-devel, postgresql-devel, net-snmp-devel, iksemel-devel, unixODBC-devel, OpenIPMI-devel
скачать пакет src из EPEL6
положить zabbix.spec в /usr/src/redhat/SPECS (/root/rpmbuild/SPECS),
остальное в /usr/src/redhat/SOURCES/ (/root/rpmbuild/SOURCES)
при необходимости закомментировать --with-ssh2 (требуется версия libssh 1.0 или выше)
из /usr/src/redhat/SPECS (/root/rpmbuild/SPECS) запустить "rpmbuild -bb --target=x86_64 zabbix.spec"
готовые пакеты /usr/src/redhat/RPMS/x86_64/zabbix-1.8.22-1.x86_64.rpm и zabbix-agent-1.8.22-1.x86_64.rpm
(/root/rpmbuild/RPMS/x86_64/zabbix-agent-1.8.22-1.fc10.x86_64.rpm и zabbix-1.8.22-1.fc10.x86_64.rpm)
при обновлении с 1.4 или 1.6
service zabbix-agent stop
при переходе с 1.4: rpm -iv zabbix-1.8.22-1.x86_64.rpm; rpm -Fv zabbix-agent-1.8.22-1.x86_64.rpm
при переходе с 1.6: rpm -Fv zabbix-1.8.22-1.fc10.x86_64.rpm zabbix-agent-1.8.22-1.fc10.x86_64.rpm
отредактировать /etc/zabbix/zabbix_agentd.conf из /etc/zabbix/zabbix_agentd.conf.rpmnew
service zabbix-agent start
zabbix_get не входит в состав пакета zabbix-agent до версии 2.0.
При установке из RPM (пакет zabbix_agentd или zabbix-agent) создаётся пользователь
zabbix и создаётся сервис zabbix-agent (незапущенный по умолчанию).
При установке в RHEL4 (CentOS4) из EPEL требуются пакеты fping и iksemel.x86_64.
Настроить /etc/zabbix/zabbix_agentd.conf
(адрес сервера, имя клиентского хоста, локальный порт (10050) и адрес,
уменьшить количество агентов (но одного недостаточно), не разрешать удалённые команды,
журнал в syslog - local7 - не работает). Создать /var/log/zabbix и /var/run/zabbix с нужными правами.
Открыть порт. Запустить сервис. Обеспечить запуск сервиса при загрузке.
Пересборка пакетов из исходных текстов
(CentOS4
(подходят к FC3/FC4),
CentOS5):
скачать и положить в
/usr/src/redhat/SOURCES/ (zabbix-1.4.2-cpustats.patch, [zabbix-1.4.2-netsnmp-x86_64.patch],
zabbix-agent.init, zabbix-logrotate.in, zabbix-server.init, zabbix-web.conf)
и в /usr/src/redhat/SPECS/ (zabbix.spec). Доставить net-snmp-devel, gnutls-devel, curl-devel,
iksemel-devel (из FC4/FC6). Сборка пакетов:
rpmbuild -bb --target=x86_64 zabbix.spec
Для работы скриптов с параметрами требуется каталог /var/lib/zabbix
(с правами для пользователя zabbix).
добавить пользователя zabbix:zabbix (без домашнего каталога и командной оболочки
mkdir /etc/zabbix
cp misc/conf/zabbix_agentd.conf /etc/zabbix/
настроить /etc/zabbix/zabbix_agentd.conf
(адрес сервера, имя клиентского хоста, локальный порт (10050) и адрес,
уменьшить количество агентов (но одного недостаточно), не разрешать удалённые команды,
журнал в /val/log/zabbix/)
агенты версий 1.0 и далее могут быть использованы с сервером версии 1.6
поддерживается экспорт файлов от 1.8 и далее
требуется ручной просмотр zabbix_server.conf, обеспечивается автоматическое преобразование БД для версий 2.0 и далее
требуется PHP 5.4.0
другой веб-интерфейс - стало меньше влезать на экран
взаимная аутентификация и шифрование (TLS 1.2; PSK или сертификаты)
предсказательные функции в триггерах
возможность запроса данных в точно указанное время (планировщик)
преобразование данных при экспорте и импорте
при просмотре графиков минимальный интервал времени уменьшен с часа до минуты
записи журналов могут сохраняться с указанием типа (целое и т.п.)
убрана поддержка IE8
ускорено вычисление триггеров
proc.mem получил 5 параметр memtype
db.odbc.discovery
при мониторинге журналов метаданные журналов сохраняются между перезапусками zabbix
элемент данных zabbix[host,,items] и zabbix[host,,items_unsupported]
элемент данных proc.cpu.util
функция percentile() при вычислении триггеров
Мониторинг использования CPU отдельным процессом или приложением
личные карты, комплексные экраны(screens) и слайды
SMTP с аутентификацией
zabbix 2.4.7 (версия будет поддерживаться недолго); кратко:
Ситуационные графики для нескольких элементов данных
Подробная информация о неподдерживаемых элементах данных агента
zabbix 2.2.10 (zabbix22 в RHEL/CentOS 6)
zabbix 2.2.7 (zabbix22 в RHEL/CentOS 7); кратко:
ускорение проверок в 2-5 раз:
Для вычисления триггеров используется кеширование исторических данных в памяти
Новая версия не сразу производит изменения в базе данных при получении новой информации.
Это уменьшает количество запросов как минимум в два раза
Встроенный мониторинг VMWare
Возможность линковки шаблонов имеющих одинаковое приложение (application) - Performance и т.д.
Внутренние (internal) события генерируются самим Zabbix в двух случаях:
айтем стал не поддерживаемым (not supported) либо триггер перешёл в неизвестное (unknown) состояние.
Эти два события очень важны для администратора Zabbix, так как они позволяют отловить
проблемы с конфигурацией на самом начальном этапе. С помощью внутренних событий появляется
возможность оперативно реагировать на такие случаи отправив сообщение пользователю либо запустив внешний скрипт.
Разрешён доступ к исторической информации отключенных узлов сети.
Такой узел не пропадёт из секции Мониторинг Web интерфейса и будет доступен для просмотра уже накопленной исторической информации.
zabbix 2.0.15 (zabbix20 в RHEL/CentOS 6)
zabbix 2.0.13 (zabbix20 в RHEL/CentOS 7); кратко:
Теперь Zabbix может не только автоматически искать новые хосты, но и новые объекты на самих хостах,
например, дисковые разделы или сетевые интерфейсы. Для всех найденных объектов Zabbix может сам
создать новые элементы данных, триггеры и графики и автоматически начать их мониторить.
Если какой-то из объектов станет недоступным, через какое-то время Zabbix сам его удалит.
Это поможет сэкономить кучу времени при настройке мониторинга динамичных систем.
Для хостов теперь можно добавлять несколько сетевых интерфейсов разных типов и отмечать,
какие из них будут использоваться для соотвествующих элементов данных.
Автоматизированная инвентаризация.
Профиль и расширенный профиль сети были объединены в инвентарные данные, которые теперь
могут заполняться автоматически на основе информации, полученной из элементов данных.
Для этого в форме конфигурации элементов данных было добавлено поле «Заполнение поля
инвентаря узла сети» в котором можно указать, в какое именно поле надо сохранить информацию.
Учитывая, что эти данные теперь можно использовать при создании карт, это достаточно полезная возможность.
Теперь можно мониторить Java приложения без необходимости устанавливать дополнительные программы.
Достаточно использовать новый тип элементов данных — JMX агент, и Zabbix все сделает сам.
Улучшенный редактор карт
Производительность web-интерфейса
Использование кеша для триггеров и элементов данных, а также улучшенные алгоритмы очистки
истории и эскалации событий позволило значительно снизить нагрузку на базу данных.
zabbix 1.8.22 (15 декабря 2014, больше не поддерживается, RHEL/CentOS 6):
меню реорганизовано
столбиковые диаграммы в качестве графиков
полная поддержка Unicode/UTF-8 (не понял? 1.6.9 выдаёт "charset=UTF-8" и русский язык),
введённый русский текст отображается знаками вопроса
улучшено управление интервалом времени при отображении графиков (предопределённые интервалы - всё, 1 час, 2 часа и т.д.)
редактирование карт в графическом режиме, к связям можно привязывать значения элементов данных ({host:key.func(param)})
улучшения в картах: возможность выделения узлов со свежими событиями
визуальный редактор выражений для триггеров с возможностью тестирования
при редактировании выражений триггеров цветами выделяется статус элемента данных (серый - не поддерживается, красный - не опрашивается)
улучшенная система фильтров визуализации: фильтрация настроек элементов по значениям атрибутов,
фильтр журнала аудита, фильтрация значений элементов по описанию (разве не было раньше?),
фильтр состояния триггеров (подтверждение, интервал времени), фильтр журнала
фильтрация объектов в управляющей панели (группы хостов, хосты в период обслуживания, уровень триггеров, только неподтверждённые триггеры)
дополнительные фильтры настройки хостов: имя, IP, DNS, порт
подтверждение получения извещения можно дать в окне триггеров
редактирование комплексных отчётов в графическом режиме (не работает), строки и колонки можно вставлять в любом месте
глобальный поиск хостов, групп хостов и шаблонов по имени
разбиение длинных списков на страницы (можно задать количество элементов на странице)
выбранные элементы списка подсвечиваются
переменная ZBX_SERVER_NAME в настройках веб интерфейса позволяет выводить имя сервера в правом верхнем углу
при привязке шаблона к хосту можно редактировать атрибуты элементов данных (например, имя сообщества SNMP)
отладчик в веб-интерфейсе, пока не нашёл
виджет состояния хостов в управляющей панели
виджет состояния сервера показывает проблемы с PHP
доступ к комплексным отчётам и картам по имени
экспорт и импорт комплексных отчётов и карт (с картинками) в XML
валидация XML перед импортом
возможность включить режим извещения о событиях на любой странице веб интерфейса (включил и тут же выключил),
в настройках пользователя задаётся интервал удержания оповещения и звук
API 1.2 для управления сервером (JSON-RPC) и консольная утилита zabcon, в поисковых шаблонах надо использовать '*' вместо '%'
пассивный прокси: опции StartProxyPollers, ProxyConfigFrequency, ProxyDataFrequency в настройках сервера;
опция ProxyMode в настройках прокси
добавлена и удалена опция StartDBSyncers в zabbix_server.conf (кеширование БД всегда включено,
обещано 10-кратное ускорение работы сервера с БД, параметры модуля dbcache), очередь необработанных запросов реально уменьшилась в 10 раз
удалена опция StartPollersUnreachable в zabbix_server.conf и добавлена снова
в опции ListenIP можно указывать несколько адресов
модуль веб мониторинга получил возможность базовой аутентификации HTTP и NTLM аутентификации
улучшения автоматического обнаружения: можно указывать интервал портов, новые операции при обнаружении (enable, disable),
можно указывать маску сети, поддержка серверов с несколькими адресами (multihome), SNMPv3
автоматическая регистрация активных агентов
пользовательские макросы в шаблонах (для триггеров), SNMP (комьюнити, OID и др.), описаниях элементов данных
периоды обслуживания хостов и групп хостов (при возникновении событий сообщения выдаются после завершения периода обслуживания)
внутренняя проверка zabbix[wcache,*] (можно узнать количество неподдерживаемых элементов данных) и zabbix[rcache,*] кеширования БД
новые простые проверки: ldap, ldap_perf, ntp, ntp_perf
вычисляемые элементы данных
новые элементы данных: icmppingloss, net.tcp.dns.query, system.cpu.switches
элемент данных icmpping получил параметры: цель, количество пакетов, интервал в милисекундах, размер пакета, время ожидания в милисекундах
элемент данных icmppingsec получил параметры: цель, количество пакетов, интервал в милисекундах, размер пакета, время ожидания в милисекундах,
режим (min, max, avg)
элементы данных log и eventlog получили параметр maxlines (максимальное количество строк в секунду, по умолчанию - 100)
элемент данных eventlog (MS Windows) можно фильтровать по типу, источнику и идентификатору событий
элементы данных net.if.list и net.if.* под MS Windows
элемент данных kernel.maxproc[]
элементы данных net.tcp.listen и net.udp.listen
элементы данных, определяющие количество строк в таблице: zabbix[history_log], zabbix[history_str], zabbix[history_text],
zabbix[history_uint], zabbix[trends_uint]
для элемента данных zabbix[queue] можно задать интервал времени
элемент данных zabbix[process,тип,режим,состояние] выдаёт процент времени,
который процесс zabbux указанного типа (poller, trapper и т.д.) проводит в указанном состоянии (busy) в последнюю минуту
снято ограничение на размер файла для элемента данных vfs.file.md5sum (но может не хватить времени)
элемент данных system.hostname для MS Windows получил параметр для выбора между NetBIOS и именем хоста
элементы данных vfs.dev.read и vfs.dev.write получили возможность работы с LVM (например, vfs.dev.read[/dev/mapper/system-root,sectors])
элемент данных agent.hostname (system.hostname, Hostname или HostnameItem)
исправлен элемент данных system.run[,wait] на system.run[,nowait]
расширение синтаксиса агрегированных данных - списки групп
элементы данных целого типа могут принимать значения, начинающиеся с символа "+"
новые типы данных: восьмеричные и шестнадцатеричные
возможность задания начала временного интервала в функциях min, max, avg, last и count
функция strlen, dayofmonth и logeventid в триггерных выражениях
возможность указывать массивы в качестве параметров ключей элементов данных
при указании временных промежутков в триггерных выражениях можно использовать суффиксы s, m, h, d, w
для безагентного мониторинга можно использовать telnet и SSH (по паролю или ключу, нужен libssh 1.0 или новее)
в действиях можно задать метод извещения
при мониторинге журналов можно использовать регулярные выражения в именах файлов (позволяет бороться с ротацией)
журнализация исполняемых агентом команд (LogRemoteCommands)
агент может обслуживать несколько серверов в активном режиме, параметр ServerActive задаёт список серверов
(для каждого сервера запускается отдельный обслуживающий процесс - осторожно со скриптами!)
изменение правил округлений и управляющие рукоятки в include/defines.inc.php: ZBX_UNITS_ROUNDOFF_THRESHOLD,
ZBX_UNITS_ROUNDOFF_UPPER_LIMIT, ZBX_UNITS_ROUNDOFF_LOWER_LIMIT
поддержка партиционирования БД: ZBX_HISTORY_DATA_UPKEEP в include/defines.inc.php
поддержка upstart
при запуске zabbix_server перестал использоваться "nice 5", надо выставлять приоритет самостоятельно
часовой пояс берётся из PHP
ЦП в system.cpu.util теперь нумеруются с 0
vfs.fs.size выдаёт результат в байтах для всех ОС и учитывает зарезервированное место
параметр service.ntp в net.tcp.service и net.tcp.service.perf переименован в ntp
хост должен принадлежать хотя бы к одной группе
изменились имена приложений при выдаче в syslog (zabbix_agent вместо "Zabbix Agent" и т.д.)
агенты версий 1.0, 1.1, 1.4 и 1.6 могут быть использованы с сервером версии 1.8
прокси версии 1.6 не могут быть использованы с сервером версии 1.8
memory_limit в PHP д.б. не менее 128 МБ
post_max_size в PHP д.б. не менее 16 МБ
max_input_time в PHP д.б. не менее 300
upload_max_filesize в PHP д.б. не менее 2 МБ
mbstring.func_overload в PHP больше нен нужен
убрана поддержка SQLite
изменился метод запуска внешних команд: вместо popen() вызывается /bin/sh
(привет именам устройств вида "cciss!c0d0")
утилиты zabbix_get и zabbix_sender переехали в bin (были в sbin)
программа не запускается, если конфигурационный файл содержит неизвестный параметр
требуется OpenIPMI 2.0.14 и новее (OpenIPMI-2.0.16 в RHEL/CentOS 5)
PHP 4 больше не поддерживается, требуется PHP 5.0; добавлена поддержка PHP 5.3 (пакеты php53 в RHEL/CentOS 5; пакеты php в RHEL/CentOS 6;
отсутствует в RHEL/CentOS 7)
поддержка MySQL 5.5
поддержка PostgreSQL 9.1, убрана поддержка PostgreSQL 7.0 (самая старая поддерживаемая версия - 7.4)
поддержка IBM DB2
формат даты берётся из локали
проблемы с IPMI при обновлении с 1.6.9:
адрес IPMI сбросился в 127.0.0.1, в качестве DNS имени указан бывший адрес IPMI
проблемы с элементами данных типа символ, извлекаемыми с помощью SNMP: была строка,
включая двойные кавычки, стала без кавычек
zabbix 1.6.9 (25 марта 2010) от 1.6.5
не требуется обновление БД
рекомендуется обновление агентов до 1.6.7, если используются активные агенты
рекомендуется создать индексы, если их нет (в 1.6.5 уже есть)
CREATE UNIQUE INDEX history_log_2 on history_log (itemid,id);
CREATE UNIQUE INDEX history_text_2 on history_text (itemid,id);
CREATE INDEX graphs_items_1 on graphs_items (itemid);
CREATE INDEX graphs_items_2 on graphs_items (graphid);
CREATE INDEX services_1 on services (triggerid);
zabbix_sender посылает данные пачками по 250 штук
новые индексы для httptest, httptest, actions, dhosts, dservices, escalations
исправлена доставшая ошибка с перемежающейся доступностью хоста при смешивании простой и агентской проверок
zabbix_sender -T (задать явно отметку времени с каждым значением)
поддержка более 10 ЦП в system.cpu.util
housekeeper обрабатывает таблицу trends_uint (то-то она у меня занимает 21 ГБ!)
исправлено падение сервера при получении неправильных данных
закрыта возможность SQL инъекции
исправлено падение сервера при проверке zabbix[queue] без использования dbcache
закрыта возможность исполнения скриптов неавторизованным пользователем
zabbix 1.6.5 от 1.4
агенты версий 1.0, 1.1 и 1.4 могут быть использованы с сервером версии 1.6
пустые пароли в версии 1.6 автозаменяются на "zabbix" (кроме пользователя guest)
Масштабируя Zabbix(10000 опросов в секунду;
"Главное, я думаю, правильно настраивать время хранения raw данных в zabbix, хранить 7-14 дней их в базе,
все остальное - агрегированные значения")