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




Интерфейс


Первое, что бросается в глаза — это освежевший веб-интерфейс. Новый дизайн избавился от лишних, нагромождавших элементов, ушли различные ненужные рамки графиков и так далее.



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



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


Шифрование


Теперь Zabbix поддерживает шифрование всех сообщений при необходимости — все общение между сервером, прокси и агентом может быть зашифровано и защищено от посторонних любопытных глаз.
Шифрование также предоставляет и аутентификацию — только при наличии доверенного сертификата или Pre-shared ключа компоненты смогут пообщаться с Zabbix. Аутентификация при этом взаимная, то есть не только Zabbix Server проверяет сертификат агента, но и агент может быть настроен проверять сертификат сервера: кто его выпустил и можно ли им верить.



Шифрование при этом полностью опционально, и может быть настроено для каждого компонента отдельно ( то есть одни агенты и прокси могут использовать шифрование, а другие продолжать общаться в открытую как и ранее)



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

И никаких новых портов — как и раньше 10050/10051 используются для всех видов коммуникаций в Zabbix.

Все подробности про шифрование в Zabbix здесь, а также в нашем отдельном мини-обзоре на Хабре.



Предсказание и прогнозирование


Предвидеть проблему до того, как она произойдет? — Теперь да, в Zabbix 3.0.
Говорят, что в 2016 на дисках все еще кончается место иногда. Zabbix может предвидеть такую ситуацию и спасти приложение от падения, предупредив всех заранее и дав время добавить или освободить место как раз до того, как начнутся проблемы.
Просто посмотрите пример, где Zabbix предсказывает, как быстро закончится место на /home, проанализировав исторические значения за последнее время.



Допустим, что нам нужно 10 часов, чтобы отреагировать и добавить или почистить место (как на скриншоте выше). И допустим, что 1 часа собранных данных о свободном месте достаточно, чтобы сделать корректный прогноз. Реальная проблема для нас — когда место на разделе / (vfs.fs.size[/,free] ) полностью закончится, т.е. 0 байт. Тогда Zabbix должен поднять аварию, когда прогноз на 10 часов вперед, основанный на собранных данных за предыдущий 1 час будет равен 0, или:
{host:vfs.fs.size[/,free].forecast(1h,,10h)}<=0

или можно поменять местами горизонт прогнозирования(10h) и пороговое значение (0 байт) и использовать другую триггерную функцию:
{host:vfs.fs.size[/,free].timeleft(1h,,0)}<=10h

Статистический анализ под капотом этих функций один и тот же, так что просто выбирайте выражение, которое удобнее.

Узнать про прогнозирование в Zabbix можно здесь и здесь.
А также в нашей отдельной статье на Хабре по прогнозированию.



Мониторинг использования CPU отдельным процессом или приложением


Новый элемент данных proc.cpu.util, доступный на Linux и Solaris, позволяет мониторить использование CPU каждым отдельным процессом или группой процессов.
Например, администратору сервера может быть интересно контролировать, как используют CPU различные пользователи. При помощи ключа:
proc.cpu.util[,john]

он сможет увидеть использование CPU всеми процессами, запущенными под john'ом. А если вдруг интересна только java Джона:
proc.cpu.util[java,john]

Кроме имени пользователя и процесса можно и указывать тип утилизации CPU (system, user), имя процесса с путем и другие параметры.
Полную спецификацию можно найти тут.







Улучшения производительности


History cache


В 3.0 не забыли и об оптимизации производительности. Например, был серьезно переработан кэш исторических данных (History Cache). Благодаря переработке структуры кэш работает быстро при любом соотношении items/values, даже если всего несколько элементов данных заполняют сервер большим количеством исторических значений.
Индекс (History index) был добавлен, чтобы следить за этим кэшем. Контролировать его можно используя новый внутренний счетчик zabbix[wcache,index,]



Например, на графике наглядно видно как долго происходила обработка восемью history syncers 500000 значений для 100 элементов данных до 3.0 и после.
Подробнее по этой и другим внутренним проверкам здесь.

Action cache


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





Запуск проверок в определенное время


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



Это позволит нам избежать ненужных аварий о недоступности выключенных компьютеров ночью.
В примере выше проверки будут происходить каждые пять минут (m/5) только в рабочие дни(wd1-5) с 8 до 18 (h9-18), то есть в 9:00, 9:05, 9:10 и так далее.



А может Вы хотели бы делать LLD-дискавери глубокой ночью, чтобы минимизировать влияние на сеть? Да, это можно сделать точно также.
Подробнее про интервалы по расписанию здесь.



Пользовательские карты, экраны и слайды


В Zabbix появились личные карты, комплексные экраны(screens) и слайды.
Это позволяет каждому пользователю создавать свои собственные представления информации, которые будут ему удобны. И админские права совсем не нужны.
При этом картой или экраном можно легко поделиться, сделав его доступным всем пользователям, или только членам определенной группы:



Интересно? больше здесь.



Имена групп элементов данных с использованием макросов


Давным-давно люди спрашивали про возможность использования макросов низкоуровневого обнаружения (LLD) в названии в группах элементов данных? Да, теперь пожалуйста и это — прототипы групп элементов данных(Applications) теперь доступны наравне с прототипами элементов данных, триггеров, графиков и комплексных экранов.
Например, для сетевых интерфейсов:





Принудительный запуск процедуры очистки базы данных


Процедура очистки базы данных необходима для удаления старых исторических данных. Если удалить нужно действительно много, то потребуется большое количество системные ресурсов, ч��о может негативно сказаться на остальных процессах Zabbix, которые заняты чем-то поважней и полезней.
В 3.0 добавлена возможность отменить запуск процедуры очистки по расписанию и запускать её вручную, когда это необходимо. Новая возможность поддерживается как Zabbix прокси, так и Zabbix сервером. Чтобы воспользоваться ею, необходимо отключить в конфиг-файле исполнение очистки по расписанию:
HousekeepingFrequency=0

И затем очистку базы данных возможно запускать через командную строку:
zabbix_server -R housekeeper_execute

Про выполнение этой и других административных функций(runtime-control) из командной строки читайте тут.



Возможность работы Zabbix компонент на переднем плане


Основные Zabbix процессы теперь могут быть запущены не только как демоны, если использовать ключ -f (--foreground). Кроме других преимуществ это, например, может быть полезно при использовании компонент Zabbix в Docker.



Зависимости между прототипами триггеров


Зависимости между триггерами, которые позволяют получить только одну аварию от роутера, вместо десятка аварий от устройств, которые расположены за ним — в Zabbix уже довольно давно. Но, к сожалению, это не работало для прототипов триггеров. Опять же, в 3.0 это ограничение уходит. Это позволит, например, создавать группу триггеров из прототипов, которые имеют разные пороговые значения и уровень важности (предупреждение и авария) при мониторинге количества свободного места на диске:





Подробности найдутся тут.



Обнаружение служб Windows





Те, кто мониторят Windows сервера через Zabbix, должны оценить следующее нововведение — возможность находить все доступные службы в Windows через ключ LLD service.discovery, и создавать для каждой новой службы элементы данных и триггеры. Найденные службы также всегда можно отфильтровать через стандартный механизм фильтров, который есть в низкоуровневом обнаружении.





Подробнее как это настроить можно посмотреть опять таки в обновленной документации по LLD.



SMTP с аутентификацией


Свершилось! Теперь можно делать рассылку уведомлений просто и без проблем: через интерфейс Zabbix настраиваете подключение к почтовому серверу с использованием логина пароля, а также шифрование, если нужно. Больше никаких дополнительных postfix в режиме smarthost или непонимающих взглядов от админа почтовых серверов, кого вы просили разрешать с IP Zabbix сервера слать почту анонимно.



Подробнее тут.



Импорт и экспорт преобразований значений


Повзрослели и шаблоны. Теперь при загрузке/выгрузке в XML они включают в себя все используемые преобразования значений(value mappings). Загружать /выгружать преобразования можно и отдельно. А еще загрузить value mappings теперь можно и через API.





Низкоуровневое обнаружение SNMP по нескольким OID сразу


Появилась отличная возможность принимать решение об обнаружении по SNMP на основе не одного, а нескольких OID.
Например, для интерфейсов мы можем искать сразу ifName, ifAlias, ifDescr и ifOperStatus:
discovery[{#SNMPVALUE},ifOperStatus,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR},.1.3.6.1.2.1.2.2.1.2,{#IFTYPE},ifType]

И если в описании прототипа триггера указать, например, вот такой список:
Last Discovery Interface info:
ifAlias:{#IFALIAS}
ifName:{#IFNAME}
ifDescr:{#IFDESCR}
ifType:{#IFTYPE}

то при аварии по триггеру мы сможем увидеть подробное описание порта.



Можно использовать значения дополнительных OID и в фильтрах LLD, для принятия решения ставить интерфейс на мониторинг или нет, а также использовать значения в названии триггеров, графиков и элементов данных. Или как было сказано выше в названии групп элементов данных (Applications).
Подробнее читайте в обновленном мануале по LLD.



И это не все


Zabbix 3.0 предлагает более 50 новых возможностей для изучения, со всеми, что не попали в эту статью, такими как API для trends или добавление дополнительных параметров для пользовательских скриптов оповещения можно озн��комиться в релизе здесь.
Приглашаем всех попробовать обновленную систему Zabbix уже сегодня и поделиться с нами своими впечатлениями в сети или лично на Zabbix meetup в Москве, который состоится 12 марта 2016 года, в 11:00, по адресу метро Трубная, Цветной Бульвар, 2. Регистрация на митап будет доступа через две недели.