Для начала необходимо было создать сбор системных метрик.
Для сбора системных метрик был выбран агент версии 2, так как у него имеются минимальные требования к системным зависимостям (в особенности libc). Был собран статический исполняемый файл, с учетом инструментов и версий зависимостей, которые мы также собрали, подобрав по версиям (gcc, libssl, re2, etc).
После того, как появились системные метрики, мы занялись решением самой сложной задачи: сбором метрик с СУБД.
Мы выяснили:
- шаблоны, поддерживаемые “из коробки” есть, только начиная с определенного обновления для Oracle 11g, в котором добавили поддержку json;
- доступные в паблике проекты уже адаптированы под Python 3+;
- количество SQL скриптов сбора метрик превышает разумные пределы для выноса их в внешние скрипты агента (адаптация шаблона также не рациональна по трудозатратам).
Для решения головоломки по запуску несовместимого (Python 2.6 + бинарные зависимости для работы с БД + библиотеки и код под Python 3) мы использовали следующую схему:
- Упаковали кодовую базу в исполняемый файл вместе с зависимостями при помощи pyinstaller. Это позволило получить скрипт + библиотеки к нему + интерпретатор свежей версии.
- После чего исполняемый файл упаковали вместе с системными библиотеками при помощи python staticx проекта.