11 друзей Zabbix-агента: расследование возможностей мониторинга баз данных
Invite pending
Чем хороша работа в команде? Всегда найдётся тот (у кого больше времени на эксперименты), кто захочет улучшить обкатанную разработку — до целого нового решения. Так наверное и происходит эволюция на Земле.
Вот и у нас: была обычная система мониторинга ZenMon — на основе Zabbix, а стала — нативный кросс-платформенный мониторинг баз данных Oracle, MySQL, PostgreSQL с помощью Zabbix Agent. И что в ней главное? Один дашборд на все виды систем и бизнес-процессов, скорость обработки и малое потребление ресурсов. Короче, всё.
Ратуя за непредвзятость, наш коллега — Михаил Григорьев — провел разбор традиционных систем мониторинга и ZenMon. И вот, что у него вышло.
Свой ZenMon мы дорабатывали на версии Zabbix v4.4. Задача: совместить в одном мониторинге не только классические популярные open-source системы управления — MySQL и PostgreSQL, но и коммерческие продукты – Oracle и Microsoft SQL Server. Та же цель стояла и с операционными системами.
Linux для запуска Oracle/MySQL/PostgreSQL — это must have, но нужно было дополнить набор еще Windows, AIX и Solaris. Так как для MSSQL, к примеру, Windows пока единственная операционная система. Решение необходимо было с минимумом зависимостей и с возможностью кастомизации. Начали, как это водится, с анализа существующих вариантов.
1. ODBC мониторинг: в чем плюсы? Он встроен в Zabbix и поддерживает большое количество систем управления базами данных: от Oracle до MongoDB и Firebird. Минусы: работает только на zabbix-server и zabbix-proxy, поэтому необходимо прямое соединение с СУБД, а значит его невозможно использовать на серверах находящихся за NAT. Что еще? У ODBC нет поддержки пула соединений, а значит, каждый запрос – это новое соединение с системой управления базами данных. Нет встроенных шаблонов для Oracle, PostgreSQL и MSSQL. И там где нет *nix его нельзя использовать вообще.
2. Zabbix Agent с помощью UserParameter. С ним часто используют сторонние скрипты на bash/python/powershell/etc. Плюсы: работает непосредственно на сервере с СУБД (активный или пассивный режим агента, при активном NAT не страшен). Быстро и относительно легко позволяет написать свое решение. Плюс — кросс-платформенность, за счет скриптов на разных языках. Минусы: нет поддержки пула соединений, а значит каждый запуск скрипта – это новое соединение с СУБД. При большом количестве собираемых метрик и высокой частоте опроса возрастает нагрузка на сервер. Здесь также нет единого решения под Windows/Linux/AIX и разные систему управления БД. Решение может не пройти внутреннюю политику безопасности. И под него точно необходимо ставить дополнительное ПО (например python).
3. Модули для Zabbix Agent: libzbxpgsql, libzbxredis, zabbix-module-mysql, etc. Плюсы: работают непосредственно на сервере с СУБД: активный или пассивный режим агента, при активном NAT не страшен. Минусы: работают только на Linux, нет единого модуля под все популярные системы управления базами данных. Поддержка многих модулей заброшена, модули и шаблоны не развиваются. Нет поддержки пула соединений. Многие модули нужно самостоятельно собирать из исходников, а для этого нужен квалифицированный инженер.
4. Внешние агенты: mamonsu, DBforBIX, ZabbixDBA, zbxdb, zbxora, etc. Плюсы: Работают непосредственно на сервере с СУБД. Многие агенты кросс-платформенны, но не все проверены на Windows/AIX. Многие агенты «поддерживают» пул соединений. Минусы: часть — давно заброшены и не развиваются, нет готовых шаблонов под разные СУБД, например, у DBforBIX, ZabbixDBA. Другие — сложны в настройке, например, zbxdb. Требуется PSK/SSL шифрование при отправке данных мониторинга. Необходимо ставить дополнительное ПО: python, java или perl.
5. Модули мониторинга в составе Zabbix Agent 2: Redis. Плюсы: работает непосредственно на сервере с СУБД (активный или пассивный режим агента, при активном NAT не страшен, поддержка шифрования PSK/SSL). Написан на Golang, кросс-платформенный, но пока доступен только под Linux. Есть поддержка мониторинга Redis, есть готовый актуальный шаблон. В версии 5.0 должна быть поддержка PostgreSQL c пулом соединений, как и MySQL по слухам. Минусы: написан на Golang, а значит не настолько кросс-платформенный как хотелось бы. AIX версии < 7.2 не поддерживаются компилятором Golang. Пока реализована поддержка далеко не всех популярных СУБД: нет MySQL, PostgreSQL, Oracle и MSSQL.

"
Для операционных систем: у Windows всего 9 бинарных файлов + zabbix_agentd.conf с размером инсталлятора — 21 Мбайт.
Для Linux, в зависимости от того какие СУБД нужно поддерживать, ставится нужная сборка агента, напрмиер, с поддержкой 3 СУБД сразу.
Для Oracle: oracle-instantclient12.2-basic.x86_64 или oracle-instantclient18.5-basic.x86_64
Для MariaDB: MariaDB-client, MariaDB-shared
Для PostgreSQL: postgresql11-contrib, postgresql11-libs
Что еще добавили?
Кастомизацию собираемых данных. А значит — возможность создавать собственные item’s и писать SQL запросы в файле конфигурации.
Открытый исходный код: открыт по лицензии GPLv2, после первого стабильного релиза будет выложен на Github.
А (как вы развлекаетесь) чем вы мониторите свои СУБД?
Вот и у нас: была обычная система мониторинга ZenMon — на основе Zabbix, а стала — нативный кросс-платформенный мониторинг баз данных Oracle, MySQL, PostgreSQL с помощью Zabbix Agent. И что в ней главное? Один дашборд на все виды систем и бизнес-процессов, скорость обработки и малое потребление ресурсов. Короче, всё.
Ратуя за непредвзятость, наш коллега — Михаил Григорьев — провел разбор традиционных систем мониторинга и ZenMon. И вот, что у него вышло.
История вопроса
Свой ZenMon мы дорабатывали на версии Zabbix v4.4. Задача: совместить в одном мониторинге не только классические популярные open-source системы управления — MySQL и PostgreSQL, но и коммерческие продукты – Oracle и Microsoft SQL Server. Та же цель стояла и с операционными системами.
Linux для запуска Oracle/MySQL/PostgreSQL — это must have, но нужно было дополнить набор еще Windows, AIX и Solaris. Так как для MSSQL, к примеру, Windows пока единственная операционная система. Решение необходимо было с минимумом зависимостей и с возможностью кастомизации. Начали, как это водится, с анализа существующих вариантов.
ODBC VS UserParameter VS Модули VS Внешние агенты
1. ODBC мониторинг: в чем плюсы? Он встроен в Zabbix и поддерживает большое количество систем управления базами данных: от Oracle до MongoDB и Firebird. Минусы: работает только на zabbix-server и zabbix-proxy, поэтому необходимо прямое соединение с СУБД, а значит его невозможно использовать на серверах находящихся за NAT. Что еще? У ODBC нет поддержки пула соединений, а значит, каждый запрос – это новое соединение с системой управления базами данных. Нет встроенных шаблонов для Oracle, PostgreSQL и MSSQL. И там где нет *nix его нельзя использовать вообще.
2. Zabbix Agent с помощью UserParameter. С ним часто используют сторонние скрипты на bash/python/powershell/etc. Плюсы: работает непосредственно на сервере с СУБД (активный или пассивный режим агента, при активном NAT не страшен). Быстро и относительно легко позволяет написать свое решение. Плюс — кросс-платформенность, за счет скриптов на разных языках. Минусы: нет поддержки пула соединений, а значит каждый запуск скрипта – это новое соединение с СУБД. При большом количестве собираемых метрик и высокой частоте опроса возрастает нагрузка на сервер. Здесь также нет единого решения под Windows/Linux/AIX и разные систему управления БД. Решение может не пройти внутреннюю политику безопасности. И под него точно необходимо ставить дополнительное ПО (например python).
3. Модули для Zabbix Agent: libzbxpgsql, libzbxredis, zabbix-module-mysql, etc. Плюсы: работают непосредственно на сервере с СУБД: активный или пассивный режим агента, при активном NAT не страшен. Минусы: работают только на Linux, нет единого модуля под все популярные системы управления базами данных. Поддержка многих модулей заброшена, модули и шаблоны не развиваются. Нет поддержки пула соединений. Многие модули нужно самостоятельно собирать из исходников, а для этого нужен квалифицированный инженер.
4. Внешние агенты: mamonsu, DBforBIX, ZabbixDBA, zbxdb, zbxora, etc. Плюсы: Работают непосредственно на сервере с СУБД. Многие агенты кросс-платформенны, но не все проверены на Windows/AIX. Многие агенты «поддерживают» пул соединений. Минусы: часть — давно заброшены и не развиваются, нет готовых шаблонов под разные СУБД, например, у DBforBIX, ZabbixDBA. Другие — сложны в настройке, например, zbxdb. Требуется PSK/SSL шифрование при отправке данных мониторинга. Необходимо ставить дополнительное ПО: python, java или perl.
5. Модули мониторинга в составе Zabbix Agent 2: Redis. Плюсы: работает непосредственно на сервере с СУБД (активный или пассивный режим агента, при активном NAT не страшен, поддержка шифрования PSK/SSL). Написан на Golang, кросс-платформенный, но пока доступен только под Linux. Есть поддержка мониторинга Redis, есть готовый актуальный шаблон. В версии 5.0 должна быть поддержка PostgreSQL c пулом соединений, как и MySQL по слухам. Минусы: написан на Golang, а значит не настолько кросс-платформенный как хотелось бы. AIX версии < 7.2 не поддерживаются компилятором Golang. Пока реализована поддержка далеко не всех популярных СУБД: нет MySQL, PostgreSQL, Oracle и MSSQL.
Что мы сделали с ZenMon?

- Он остался кросс-платформенным (поддерживается сборка под Linux, Windows, AIX), можно собрать под другие ОС, но нам пока не нужно;
- Он поддерживает мониторинг Oracle, MySQL, PostgreSQL на всех ОС, не нужны никакие скрипты, костыли и прочее;
- Zabbix-agent, как и раньше, поддерживает мониторинг параметров ОС, а также поддерживает шифрования (PSK/SSL);
- Быстрая работа мониторинга, малое потребление ресурсов CPU и RAM (да здравствует Си!);
- Минимум настроек у агента (нужно указать логин и пароль для подключения к СУБД в zabbix_agentd.conf), все остальное настраивается через макросы в web-frontend;
- — Компактное решение, минимум зависимостей.

Для операционных систем: у Windows всего 9 бинарных файлов + zabbix_agentd.conf с размером инсталлятора — 21 Мбайт.
Для Linux, в зависимости от того какие СУБД нужно поддерживать, ставится нужная сборка агента, напрмиер, с поддержкой 3 СУБД сразу.
Для Oracle: oracle-instantclient12.2-basic.x86_64 или oracle-instantclient18.5-basic.x86_64
Для MariaDB: MariaDB-client, MariaDB-shared
Для PostgreSQL: postgresql11-contrib, postgresql11-libs
Что еще добавили?
Кастомизацию собираемых данных. А значит — возможность создавать собственные item’s и писать SQL запросы в файле конфигурации.
Открытый исходный код: открыт по лицензии GPLv2, после первого стабильного релиза будет выложен на Github.
А (