Zabbix 4.4 Unsupported — Но я решил продолжить его развитие

Zabbix версии 4.4 был очень удачным, в сочетании с обширными новыми возможностями и при сохранении классического интерфейса он нравился (и наверно нравится до сих пор) многим. Но увы, версия 4.4 была с коротким сроком поддержки и после выхода релиза 5.0 была объявлена неподдерживаемой. Последний релиз — это 4.4.10 от 29 июня 2020.

Я решил продолжить развитие этой ветки путем портирования исправлений и нового функционала из версий 5.0, 5.2. и 5.4

Раньше я работал в компании которая использовала Zabbix для мониторинга различных баз данных (Oracle, MySQL, PostgreSQL, MSSQL) и помимо собственной разработки Zabbix-agent с нативной (без внешних скриптов) поддержкой мониторинга СУБД в компании так же использовался кастомизированный вариант Zabbix.

Мы использовали версию 4.4 и пока она поддерживалась официально нам этого хватало. После появления Zabbix 5.0 версию 4.4 сняли с поддержки и более для нее не выпускают обновлений с исправлением проблем.

Мы задумались переходить на 5.0, но новый интерфейс пятерки и некоторые нововведения нас сильно огорчали, с другой стороны в 5.0 появилось много полезного и нового функционала, который бы позволил улучшить мониторинг.

Именно поэтому я решил бэкпортировать некоторые новые возможности (ZBXNEXT) из 5.x в версию 4.4, так же бэкпортировались и исправления проблем (багов, ZBX).

Основной принцип бэкпортирования которого я стал придерживаться — это не изменять структуру базы данных, чтобы можно было легко и безопасно перейти с костомизированной версии 4.4 на более новую 5.x в будущем. Так же я постарался запустить систему авто-тестов (cmoka и selenium), чтобы вовремя обнаруживать проблемы с нарушением функционала при бэкпортировании патчей.

Проект был назван Zabbix Next: Continued development of Zabbix version 4.4.x (unofficial) и поселился на Github. Там Вы найдете готовые архивы исходников, готовые сборки агентов под Windows (подписанные моим сертификатом code sign), так же там есть инструкции (на русском и на английском) для новой установке или по обновлению официальной версии 4.4.10 на мою неофициальную. Есть готовые репозитарии пакетов для RedHat-подобных ОС (RedHat Enterprise/CentOS/Oracle Linux 7.x, 8.x) и для Ubuntu (16.04, 18.04, 20.04). Так же я могу собрать zabbix-agent’а для Solaris и AIX 7.1/7.2 c нужным уровнем TL если это Вам вдруг понадобиться.

На текущий момент я выпустил уже 7 неофициальных релизов версии 4.4, последний это 4.4.17 от 22 февраля 2021 года.

Выпуск релизов я стараюсь синхронизировать с выходом релизов официального Zabbix, то есть это в среднем 1 релиз в месяц.

Теперь я постараюсь описать, что нового можно увидеть в моей неофициальной версии. Новинок конечно очень много, все их я не опишу в этой статье, но полный список патчей всегда доступен на Github.

Итак, что нового в 4.4.17 (unofficial):

DBS-001 — На странице «Проблемы» реализована возможность отображения 4-х тегов. Это моя собственная доработка, 3-х тегов оказалось мало и поэтому был реализован функционал по отображению от 1 до 4 тегов.

DBS-002 — На странице «Проблемы» в колонке «Теги» добавлен пробел для разделения тегов при выделении и копировании их в буфер обмена. Тоже моя доработка. Если выделить список тегов мышкой и скопировать, то при вставке значение тега склеивается с именем следующего тега в одно целое и это жутко не удобно.

26ffd32742c27cf4e6aff60c0879fad6.png

DBS-003 — Добавлен переход на страницу «Последние данные» со страницы Настройка → Узлы сети. Очень полезный патч от сообщества Zabbix. Когда Вы редактируете хост, то иногда бывает необходимо сразу же после редактирования перейти в просмотру его последних данных и данный патч позволяет легко это сделать.

6180faeedd65aeee590b688a7a8dfde5.png

DBS-004 — Изменены некоторые настройки по умолчанию в веб-интерфейсе — это ZBX_UNITS_ROUNDOFF_MIDDLE_LIMIT изменен с 4 до 2 и ZBX_DEFAULT_URL изменен с zabbix.php? action=dashboard.view на zabbix.php? action=problem.view. Показывать 4 знака после запятой кажется тратой драгоценного места в строке на странице Проблемы, зачем такая точность? А так же неудобно, что новые пользователи при входе попадают на дашборд по умолчанию, хотя по сути нужно бы сразу идти на страницу с проблемами.

DBS-005 — Увеличена ширина всплывающего окна на странице «Проблемы» при клике на проблему. Тут все просто — если элемент данных имеет очень длинное имя, то он просто не помещается в ширину выпадающего списка и его имя обрезается. Из-за этого в случае нескольких элементов данных со схожими именами понять какой нам нужен было не реально. На скрине ниже обрезка списка шла примерно по красной линии.

217d27018f06ed841825927db1dc82ab.png

DBS-006 — На странице «Проблемы» колонка «Теги» перемещена в позицию после колонки «Проблема», так же увеличена ширина колонки «Теги». Сделано это для того, чтобы можно было легко выделить сразу 2 колонки — Проблему и Теги и скопировать это, например, в чат заказчику. Тем более теги являются одним из важных элементов, и их позиция последней колонкой меня сильно напрягала.

056c068d61fa952f4401c03f92f2ad2a.png

ZBXNEXT-5554 — Использование http/socks-прокси для web-хуков. Новый параметр HTTPProxy. Данная возможность появилась только в версии 5.0

ZBXNEXT-5903 — Обнаружение центров обработки данных VMWARE, новый элемент данных vmware.dc.discovery[url] возвращает JSON содержащий параметры {#DATACENTER} и {#DATACENTERID}. Данная возможность появилась только в версии 4.0.23, 5.0.3

ZBXNEXT-6004 — Информация об узле сети в журнале событий VMWARE. Информация, возвращаемая элементом данных vmware.eventlog[url, mode] содержит информацию об исходном узле сети, если такая информация обнаружена в журнале. Данная возможность появилась только в версии 4.0.23, 5.0.3

ZBXNEXT-435 — Поддержка указания строки подключения к Oracle RDBMS в формате Net Service Name (TNSNAME). Это старый ZBXNEXT, который был реализован под другим номером (ZBXNEXT-5759) лишь в 5.4. Т.к. на предыдущем месте работы мы использовали в качестве СУЮД Oracle, то этот ZBXNEXT был одним из первых в моей сборке. Нужно сказать, что традиционно Zabbix поддерживал подключение в Oracle с указанием строки подключения в формате Easy Connect и только в 5.4 наконец-то реализовали возможность указания подключения в формате Net Service Name (TNSNAME).

ZBXNEXT-1961 — Мониторинг ODBC без DSN. Новый параметр строка подключения был добавлен к элементам db.odbc.*. Теперь элементы db.odbc.* можно настроить двумя способами: Используя имя источника данных, как установлено в /etc/odbc.ini и используя строку подключения. Данная возможность появилась только в версии 5.0

ZBXNEXT-4647, ZBXNEXT-6096 — Поддержка Digest-аутентификации для HTTP-агента и в веб-сценариях. Данная возможность появилась только в версии 5.2

ZBXNEXT-5592 — Удалена поддержка IBM DB2 в Zabbix-сервере.

ZBXNEXT-5716 — Удалена поддержка библиотеки mbedTLS.

ZBXNEXT-5725 — Проблемы, отображаемые в разделе Мониторинг → Проблемы, теперь могут быть отфильтрованы по одному или нескольким индивидуально выбранным уровням важности. Ранее существовала только фильтрация по минимальному уровню важности. Данная возможность появилась только в версии 5.0

5ed611c52b9e5cf81deb729f6b5c83a8.png

ZBXNEXT-5879 — Фильтрация в правилах обнаружения. Теперь можно фильтровать по группе узлов сети, узлу сети, типу элемента обнаружения, состоянию правила обнаружения и другим параметрам. Кроме того, добавленный первый столбец в списке теперь всегда отображает узел сети правила обнаружения.

ax3avayvr_hy1lj-wqtutcs9zie.png

ZBXNEXT-6139 — Получение заголовков ответа HTTP. Теперь можно получить заголовки HTTP-ответов из объекта CurlHttpRequest в вебхуках. Данная возможность появилась только в версии 5.0.4

ZBXNEXT-3940 — Ручная очистка SNMP-кэша у Zabbix сервера и прокси. У опции -R появилась команда snmp_cache_reload, которая перезагружает кэш SNMP и очищает сохраненные параметры SNMP (engine time, engine boots, engine id, учетные данные) для всех узлов сети. Требуется Net-SNMP версии 5.3.0 или выше. Данная возможность появилась только в версии 5.0

ZBXNEXT-2480 — Отключение в веб-интерфейсе автозаполнения для полей содержащих чувствительные данные (поля паролей, PSK ключей, имена пользователей, SSL ключей и т.д.). Этот не позволяет большинству браузеров использовать автозаполнение в затронутых полях. Данная возможность появилась только в версии 5.0.6

ZBXNEXT-3205 — Поддержка регулярных выражений в контексте пользовательских макросов. Пример синтаксиса: {$MACRO: regex: «регулярное выражение»}. Использование регулярных выражений может значительно сократить количество контекстов пользовательских макросов, которые вам нужно определить. Данная возможность появилась только в версии 5.0.2

ZBXNEXT-3588, ZBXNEXT-6247, ZBXNEXT-6042 — Несколько ZBXNEXT связанных с улучшением производительности Zabbix-сервер. Были портированы из версии 5.0

ZBXNEXT-6345 — Агент Zabbix для Windows теперь заменяет SID на имя учетной записи и имя домена в сообщениях журнала событий. Данная возможность появилась только в версии 5.0.7

ZBXNEXT-6307 — Для Java gateway появился появился новый параметр zabbix.propertiesFile, который позволяет указать имя файла содержащего дополнительные параметры запуска процесса, таким образом эти параметры не будут отображаться в строке запуска в процессах. Так же в этом файле можно указать параметры которые переопределять параметры командной строки. Данная возможность появилась только в версии 5.0.7

ZBXNEXT-170 — Массовое открепление шаблонов при использовании узла сети или массовое обновление шаблонов. Данная возможность появилась только в версии 5.0

c5438b652325d3522ee3370ed6dcd132.png

ZBXNEXT-1423 — Добавлен новый IPMI элемент данных ipmi.get который возвращает JSON с информацией, связанной с IPMI-датчиком. Этот элемент данных может быть использован для обнаружения датчиков IPMI. Данная возможность появилась только в версии 5.0

ZBXNEXT-1578 — Пользовательские макросы теперь поддерживаются в полях имени пользователя и пароля IPMI в настройках узла сети. Данная возможность появилась только в версии 5.0

ZBXNEXT-5538, ZBXNEXT-5720 — Пара ZBXNEXT связанная с реализацией и улучшением работы постраничного вывода данных на странице Последние данные (Latest data) и не только. Данные улучшения появились только в версии 5.0

ZBXNEXT-5486, ZBXNEXT-5538 — Пара ZBXNEXT связанная с переносом в MVC фреймворк страниц Администрирование → Общее, пользователи и группы пользователей. Данные улучшения появились только в версии 5.0

ZBXNEXT-5898 — Пользовательские макросы теперь поддерживаются (раскрываются) в поле Описание (Description). Данные улучшения появились только в версии 5.2

ZBXNEXT-6380 — Новый элемент данных vmware.cl.perfcounter[, , , ] который позволяет получать метрики счетчиков производительности кластера VMware. Данные улучшения появились только в версии 5.4

ZBXNEXT-6443, ZBXNEXT-6183 — Поддержка функций sha256() и md5() в JavaScript. Данная возможность появилась только в версии 5.0.9

ZBXNEXT-6441 — Поддержка HTTP-аутентификации в веб-хуках. Можно использовать метод SetHttpAuth (bitmask, username, password) в CurlHttpRequest объекте в JavaScript. Данная возможность появилась только в версии 5.0.9

Это далеко не весь список портированный ZBXNEXT из версии 5.0, 5.2 и 5.4.

Про список исправленных багов я говорить не буду, там исправлено более 120 проблем, присутствовавших в версии 4.4.10.

В готовящейся к выходу версии 4.4.18 будет портировано еще 7 новых ZBXNEXT (ZBXNEXT-1797, ZBXNEXT-2727, ZBXNEXT-5369, ZBXNEXT-5786, ZBXNEXT-5829, ZBXNEXT-6442, ZBXNEXT-6503) которые еще больше улучшат функционал неофициальной ветки 4.4

Так же хочу сказать, что данный проект используется в продакшене в нескольких компаниях, поэтому ни о какой экспериментальной доработке речи не идет.

Заходите на страницу проекта на Github, пользуйтесь на здоровье, но не забывайте, что это неофициальная версия и тех. поддержка Zabbix SIA Вам не сможет помочь в решении проблем.

P.S. Если Вы нашли баг в моей неофициальной версии или у Вас есть предложение по портированию какого-то ZBXNEXT, то открывайте Issue на Github, будем думать, обсуждать.

© Habrahabr.ru