Pull to refresh

11 друзей Zabbix-агента: расследование возможностей мониторинга баз данных

Чем хороша работа в команде? Всегда найдётся тот (у кого больше времени на эксперименты), кто захочет улучшить обкатанную разработку — до целого нового решения. Так наверное и происходит эволюция на Земле.

Вот и у нас: была обычная система мониторинга 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.

А (как вы развлекаетесь) чем вы мониторите свои СУБД?
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.