DB Query
Материал из Документация Ключ-АСТРОМ
Расширение DB Query для Ключ-АСТРОМ
Расширение DB Query предназначено для мониторинга баз данных через выполнение пользовательских запросов и извлечения метрик. Оно поддерживает основные реляционные СУБД и MongoDB, позволяя превращать результаты запросов в метрики и измерения Ключ-АСТРОМ.
Возможности расширения
- Подключение к базам данных PostgreSQL, Oracle, MySQL, MariaDB, SQL Server и MongoDB.
- Выполнение произвольных запросов (SQL или MongoDB-команд) и преобразование результатов в метрики и размерности.
- Настройка интервала выполнения запросов и расписания запуска по времени.
- Ограничение времени выполнения запроса.
- Проверка доступности подключения лёгким запросом (fastcheck).
- Создание сущностей DB Query Host и DB Query Endpoint с топологическими связями.
- Готовый обзорный дашборд.
- Отображение ошибок подключения и выполнения в статусе расширения.
Поддерживаемые базы данных
- PostgreSQL
- Oracle
- MySQL
- MariaDB
- SQL Server
- MongoDB
Требования
- АктивныйШлюз с включённым выполнением расширений (или ЕдиныйАгент с EEC).
- Сетевой доступ к базе данных.
- Учётные данные с правами на выполнение запросов.
- Для MongoDB — зависимость pymongo (включена в расширение).
Конфигурация
Конфигурация каждого endpoint задаётся через JSON со следующими основными полями:
name— имя endpoint.db_name— имя базы данных.query— запрос (SQL или JSON для MongoDB).metric_columns— колонки, значения которых станут метриками.dimension_columns— колонки, значения которых станут измерениями.Query interval (minutes)— интервал выполнения в минутах.Query timeout (minutes)— ограничение времени выполнения (по умолчанию 10 минут).Execution times— конкретное время запуска (HH:MM, можно несколько через запятую); если пусто, используется интервал.
Метрики
Расширение отправляет служебную метрику ru.ruscomtech.dbquery.host.status для отображения хоста на обзорном дашборде.
История версий
Версия 0.2.30
- Лимит поля Query увеличен до 10000 символов.
- Добавлено поле Query timeout (minutes) для ограничения времени выполнения одного запроса. По умолчанию 10 минут; применяется для Postgres, Oracle, MySQL, MariaDB, SQLServer и MongoDB.
- Добавлено поле Execution times для запуска конкретного endpoint по расписанию. Формат: HH:MM по локальному времени хоста/АктивногоШлюза; несколько значений через запятую, например
09:00,18:30. - Запуск по Execution times выполняется в окне от указанного времени до +5 минут. Если поле пустое, endpoint выполняется по старому правилу через Query interval (minutes).
fastcheck()проверяет подключение к БД лёгким запросом: MongoDB —ping, Oracle —SELECT 1 FROM dual, MySQL/MariaDB/SQLServer —SELECT 1, Postgres —SELECT 1.- Ошибки выполнения query больше не отображаются как OK: последняя ошибка endpoint сохраняется и возвращается в runtime status.
- Ошибки подключения, авторизации и конфигурации мапятся в соответствующие StatusValue; ошибка Oracle
DPY-6005: cannot connect to databaseклассифицируется какDEVICE_CONNECTION_ERROR. - Исправлена ошибка UnboundLocalError после неуспешного подключения к MongoDB или другой БД.
- Русифицированы описания полей.
- Добавлена служебная метрика
ru.ruscomtech.dbquery.host.statusдля отображения DB Query Host на overview dashboard. - Плитка DB Query Host теперь содержит Data Explorer query и показывает хосты по
device.address. - Метрика
ru.ruscomtech.dbquery.host.statusотправляется в каждом циклеquery()для валидной конфигурации, даже если endpoint пропущен по расписанию или интервалу.
Версия 0.2.11
- Добавлена поддержка MongoDB.
- Добавлена зависимость pymongo.
- Для MongoDB поле query принимает JSON:
- raw MongoDB command для выполнения через
db.command(...); - wrapper с
collectionиoperation.
- raw MongoDB command для выполнения через
- Поддержанные операции MongoDB:
find,find_one,count_documents,estimated_document_count,aggregate. - Поля
dimension_columnsиmetric_columnsработают для MongoDB по возвращаемым полям документов, так же как для SQL-колонок.
Версия 0.2.10
- Добавлены topology entities для DB Query Host и DB Query Endpoint.
- Добавлен overview dashboard.
Версия 0.2.1
- Добавлена поддержка Oracle.
- Добавлена функция ожидания после каждого выполнения.
Примеры конфигурации
Пример MongoDB count
{
"name": "mongo_orders_open",
"db_name": "mydb",
"query": "{\"collection\":\"orders\",\"operation\":\"count_documents\",\"filter\":{\"status\":\"open\"}}",
"metric_columns": "count"
}
Пример MongoDB aggregate
{
"name": "mongo_orders_by_status",
"db_name": "mydb",
"query": "{\"collection\":\"orders\",\"operation\":\"aggregate\",\"pipeline\":[{\"$group\":{\"_id\":\"$status\",\"total\":{\"$sum\":1}}}]}",
"dimension_columns": "_id",
"metric_columns": "total"
}