DB Query

Материал из Документация Ключ-АСТРОМ
Версия от 22:41, 25 августа 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «= Расширение DB Query для Ключ-АСТРОМ = Расширение '''DB Query''' предназначено для мониторинга баз данных через выполнение пользовательских запросов и извлечения метрик. Оно поддерживает основные реляционные СУБД и '''MongoDB''', позволяя превращать результаты запр...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Расширение 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() проверяет подключение к БД лёгким запросом: MongoDBping, OracleSELECT 1 FROM dual, MySQL/MariaDB/SQLServerSELECT 1, PostgresSELECT 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.
  • Поддержанные операции 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"
}