Расширение MariaDB

Материал из Документация Ключ-АСТРОМ
Версия от 12:56, 21 сентября 2026; IKuznetsov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Расширение MariaDB

Мониторинг экземпляров MariaDB удалённо через АктивныйШлюз для сбора метрик производительности, сведений о медленных запросах и логов в Ключ-АСТРОМ.

Начало работы

Обзор

Расширение MariaDB использует драйвер JDBC для подключения к вашим экземплярам баз данных через АктивныйШлюз без локального агента. Оно запрашивает схему производительности MariaDB и системные таблицы для сбора метрик и фиксирует данные о медленных запросах в виде логов.

Требования

  • Установите АктивныйШлюз версии 1.295 или новее.
  • Скачайте платформонезависимый коннектор Java 8+ и скопируйте JAR-файл в этот каталог на всех АктивныхШлюзах в нужной группе:
  * Windows: C:\ProgramData\astromkey\remotepluginmodule\agent\conf\userdata\libs
  * Linux: /var/lib/astromkey/remotepluginmodule/agent/conf/userdata/libs
  • Убедитесь, что пользователь dtuserag имеет доступ на чтение к драйверу.
  • Добавьте custom_code_jdbc_allowed=true в extensionsuser.conf.
  • Перезапустите службу EEC.
  • Убедитесь, что схема производительности активирована и включена для экземпляров MariaDB, которые вы отслеживаете.
  • Скачайте драйвер MariaDB JDBC со страницы загрузок MariaDB.
  • Создайте выделенного пользователя базы данных в вашем экземпляре базы данных с необходимыми разрешениями. Ключ-АСТРОМ использует этого пользователя для выполнения запросов мониторинга к вашей базе данных MariaDB.

Настройка пользователя с разрешениями

Создайте пользователя, идентифицируемого собственным паролем. Настройте имя пользователя и пароль по мере необходимости:

CREATE USER 'astromkey'@'%' IDENTIFIED BY 'password';

Предоставьте пользователю следующие разрешения:

GRANT SELECT ON performance_schema.* TO 'astromkey'@'%';

Позволяет запрашивать базу данных performance_schema.

GRANT PROCESS ON *.* TO 'astromkey'@'%';

Позволяет просматривать метрики потоков и подключений для всех пользователей.

GRANT SHOW DATABASES ON *.* TO 'astromkey'@'%';

Позволяет просматривать метрики баз данных для всех баз данных.

GRANT SELECT ON sys.x$memory_global_by_current_bytes TO 'astromkey'@'%';

Позволяет запрашивать статистику памяти.

GRANT SLAVE MONITOR ON *.* TO 'astromkey'@'%';

Позволяет запрашивать метрики реплик.

Из-за ограничения MariaDB вам необходимо предоставить разрешения SELECT на отдельные базы данных для расчёта их размеров.

Информация о совместимости

  • Наборы функций global_status и global_status_extended: MariaDB 10.5.2+
  Таблица global_status схемы производительности была представлена в этой версии.
  Обратите внимание, что для конкретных переменных глобального статуса в этой таблице поддержка версий может отличаться, и точные поддерживаемые версии не все документированы. Если вы заметите, что метрика в этих наборах функций не собирается, вы можете найти её в документации по системным и статусным переменным, чтобы проверить, указана ли для неё поддерживаемая версия MariaDB.
  • Наборы функций replicas и replica_error_logs: MariaDB 11.6+
  Таблица SLAVE_STATUS информационной схемы была представлена в этой версии.

Активация и настройка

Добавление экземпляра БД

  1. Перейдите в раздел Расширения.
  2. Выберите и установите расширение MariaDB. Это включает расширение в вашей среде мониторинга.
  * Требуемое разрешение: Изменение настроек мониторинга
  1. Выберите Добавить экземпляр БД в приложении Базы данных. Откроется мастер Добавить экземпляр БД.
  2. Выберите раздел MariaDB в мастере.

Выбор типа размещения

Выберите тип размещения из предложенных вариантов. Этот выбор определяет, какой скрипт создаст необходимые объекты базы данных на более позднем этапе процесса.

  1. В мастере Добавить экземпляр БД выберите тип хоста, соответствующий вашим требованиям.
  2. Выберите Далее.

Выбор группы АктивныйШлюз

Выберите группу АктивныйШлюз, чтобы определить, какие АктивныеШлюзы будут запускать расширение.

Выберите Следующий шаг.

Создание подключения

Настройте подключение к вашему экземпляру базы данных.

  1. Назовите подключение, чтобы вы могли идентифицировать его позже.
  2. Добавьте данные в разделе Настроить подключение.
  3. Укажите следующие данные подключения:
  * Хост
  * Порт
  * Строка подключения
  1. Предоставьте учётные данные для аутентификации напрямую или используйте безопасные альтернативы.
  * Базовые учётные данные: при базовой аутентификации данные, передаваемые в Ключ-АСТРОМ при активации конфигурации мониторинга, маскируются, чтобы предотвратить их извлечение.
  * Хранилище учётных данных: используйте учётные данные из хранилища для безопасного хранения и извлечения учётных данных базы данных.
  1. Выберите Далее.

Установка экземпляра

Добавьте ручные конфигурации на основе требований мониторинга.

Добавление конфигураций для сбора топовых медленных запросов

Это относится к набору функций top_queries, который извлекает данные из performance_schema.events_statements_summary_by_digest:

  1. Включите необходимые инструменты операторов — это указывает MariaDB отслеживать все операторы:
UPDATE performance_schema.setup_instruments
SET ENABLED = 'YES', TIMED = 'YES'
WHERE NAME LIKE 'statement/%';
  1. Включите потребителей — это указывает MariaDB, где хранить отслеживаемые операторы:
UPDATE performance_schema.setup_consumers
SET ENABLED = 'YES'
WHERE NAME IN ('events_statements_history', 'events_statements_summary_by_digest');

Хотя приведённые выше команды работают, создайте пользовательскую группу параметров для более надёжной конфигурации RDS. В группе параметров установите performance_schema в 1 и включите настройки потребителей. Эта конфигурация сохраняется при перезапусках и изменениях экземпляра.

Выберите Создать мониторинг экземпляра БД.

Детали

Лицензирование и затраты

Использование расширения бесплатно. Вы платите только за данные, которые собирает расширение.

Расширение MariaDB собирает пользовательские метрики, которые потребляют Davis Data Units (DDU) (классическая лицензия Ключ-АСТРОМ) или метрики в зависимости от вашей модели лицензирования.

Следующая формула даёт количество точек данных метрик в минуту.

(69 * количество экземпляров) + (1 * количество баз данных)

Это расширение также собирает логи.

Подписка на платформу Ключ-АСТРОМ

В подписке на платформу Ключ-АСТРОМ приём метрик потребляет метрики в соответствии с количеством принятых точек данных метрик.

Чтобы рассчитать приблизительное годовое потребление, примените следующую формулу: <количество точек данных метрик в минуту> * 60 минут * 24 часа * 365 дней.

Для логов применяется обычное потребление.

Классическая лицензия Ключ-АСТРОМ

В классической модели лицензирования приём метрик потребляет Davis Data Units (DDU) со скоростью 0,001 DDU на точку данных метрики. Умножьте приведённую выше формулу для годовых точек данных на 0,001, чтобы оценить годовое использование DDU.

Для логов применяется обычное потребление DDU.

Стоимость DDU, указанная выше, не включает возможные события логов или пользовательские события, запускаемые расширением.

Наборы функций

При активации расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций. Для корректной работы расширение должно собрать хотя бы одну метрику после активации.

В сильно сегментированных сетях наборы функций могут отражать сегменты вашей среды. Затем при создании конфигурации мониторинга вы можете выбрать набор функций и соответствующую группу АктивныйШлюз, которая может подключиться к этому конкретному сегменту.

Все метрики, не отнесённые ни к одному набору функций, считаются стандартными и всегда сообщаются.

Метрика наследует набор функций подгруппы, которая, в свою очередь, наследует набор функций группы. Кроме того, набор функций, определённый на уровне метрики, переопределяет набор функций, определённый на уровне подгруппы, который, в свою очередь, переопределяет набор функций, определённый на уровне группы.

statements

Название метрики Ключ метрики Описание
Commits
mariadb.statements.commit.count
Количество операторов COMMIT, выполненных этим сервером
Deletes
mariadb.statements.delete.count
Количество операторов DELETE, выполненных этим сервером
Multi-Table Deletes
mariadb.statements.delete_multi.count
Количество многотабличных операторов DELETE, выполненных этим сервером
Inserts
mariadb.statements.insert.count
Количество операторов INSERT, выполненных этим сервером
Selects
mariadb.statements.select.count
Количество операторов SELECT, выполненных этим сервером
Updates
mariadb.statements.update.count
Количество операторов UPDATE, выполненных этим сервером
Executes
mariadb.statements.execute.count
Количество операторов EXECUTE, выполненных этим сервером
Multi-Table Updates
mariadb.statements.update_multi.count
Количество многотабличных операторов UPDATE, выполненных этим сервером
Bytes Sent
mariadb.statements.bytes_sent.count
Количество байтов, отправленных всем клиентам
Bytes Received
mariadb.statements.bytes_received.count
Количество байтов, полученных от всех клиентов
Rollbacks
mariadb.statements.rollback.count
Количество операторов ROLLBACK, выполненных этим сервером
Insert Selects
mariadb.statements.insert_select.count
Количество операторов insert-select, выполненных этим сервером
Replace Selects
mariadb.statements.replace_select.count
Количество операторов replace-select, выполненных этим сервером
Prepared Statements
mariadb.statements.prepared_stmt_count.count
Текущее количество подготовленных операторов

waits

Название метрики Ключ метрики Описание
Waits IO
mariadb.waits.waits_io.count
Количество раз, когда сервер ожидал завершения операции ввода-вывода.
Waits IO Time
mariadb.waits.waits_io_time.count
Общее время, в течение которого сервер ожидал завершения операций ввода-вывода.
Waits Sync
mariadb.waits.waits_sync.count
Количество раз, когда сервер ожидал завершения операции синхронизации.
Waits Sync Time
mariadb.waits.waits_sync_time.count
Общее время, в течение которого сервер ожидал завершения операций синхронизации.

default

Название метрики Ключ метрики Описание
Uptime
mariadb.global_status.uptime
Время в секундах, в течение которого сервер MariaDB работал с момента запуска.

topQueries

Название метрики Ключ метрики Описание

globalStatusExtended

Название метрики Ключ метрики Описание
Query Cache Queries in Cache
mariadb.global_status.qcache_queries_in_cache.count
Количество запросов, зарегистрированных в кэше запросов.
Query Cache Free Blocks
mariadb.global_status.qcache_free_blocks
Количество свободных блоков памяти в кэше запросов.
Query Cache Total Blocks
mariadb.global_status.qcache_total_blocks
Общее количество блоков в кэше запросов.
Created Temporary Tables
mariadb.global_status.created_tmp_tables.count
Количество внутренних временных таблиц, созданных сервером при выполнении операторов. Вы можете сравнить количество созданных внутренних временных таблиц на диске с общим количеством созданных внутренних временных таблиц, сравнив значения Created_tmp_disk_tables и Created_tmp_tables.
Created Temporary Disk Tables
mariadb.global_status.created_tmp_disk_tables.count
Количество внутренних временных таблиц на диске, созданных сервером при выполнении операторов. Вы можете сравнить количество созданных внутренних временных таблиц на диске с общим количеством созданных внутренних временных таблиц, сравнив значения Created_tmp_disk_tables и Created_tmp_tables.
Innodb Buffer Pool Size
mariadb.global_status.innodb_buffer_pool_size
Размер в байтах пула буферов — области памяти, где InnoDB кэширует данные таблиц и индексов.

globalStatus

Название метрики Ключ метрики Описание
Queries
mariadb.global_status.queries.count
Количество операторов, выполненных сервером. Эта переменная включает операторы, выполненные внутри хранимых программ, в отличие от переменной Questions. Она не считает команды COM_PING или COM_STATISTICS.
Slow Queries
mariadb.global_status.slow_queries.count
Количество запросов, выполнение которых заняло более long_query_time секунд. Этот счётчик увеличивается независимо от того, включён ли лог медленных запросов.
Table Locks Waited
mariadb.global_status.table_locks_waited.count
Количество раз, когда запрос на блокировку таблицы не мог быть предоставлен немедленно и требовалось ожидание. Если это значение высокое и у вас проблемы с производительностью, сначала оптимизируйте запросы, а затем либо разделите таблицу или таблицы, либо используйте репликацию.
Table Locks Immediate
mariadb.global_status.table_locks_immediate.count
Количество раз, когда запрос на блокировку таблицы мог быть предоставлен немедленно.
Current Connections
mariadb.global_status.current_connections
Количество текущих открытых подключений.
Threads Running
mariadb.global_status.threads_running
Количество потоков, которые не спят.
Threads Created
mariadb.global_status.threads_created
Количество потоков, созданных для обработки подключений. Если значение Threads_created большое, возможно, стоит увеличить значение thread_cache_size. Частоту промахов кэша можно рассчитать как Threads_created/Connections.
Innodb Buffer Pool Pages Data
mariadb.global_status.innodb_buffer_pool_pages_data
Количество страниц в пуле буферов InnoDB, содержащих данные. Это число включает как грязные, так и чистые страницы. При использовании сжатых таблиц сообщаемое значение Innodb_buffer_pool_pages_data может быть больше, чем Innodb_buffer_pool_pages_total
Innodb Buffer Pool Pages Dirty
mariadb.global_status.innodb_buffer_pool_pages_dirty
Текущее количество грязных страниц в пуле буферов InnoDB.
Innodb Buffer Pool Pages Free
mariadb.global_status.innodb_buffer_pool_pages_free
Количество свободных страниц в пуле буферов InnoDB.
Innodb Buffer Pool Pages Total
mariadb.global_status.innodb_buffer_pool_pages_total
Общий размер пула буферов InnoDB в страницах. При использовании сжатых таблиц сообщаемое значение Innodb_buffer_pool_pages_data может быть больше, чем Innodb_buffer_pool_pages_total
Innodb Data Reads
mariadb.global_status.innodb_data_reads.count
Общее количество чтений данных (чтений файлов ОС).
Innodb Data Writes
mariadb.global_status.innodb_data_writes.count
Общее количество записей данных.
Innodb Data Read
mariadb.global_status.innodb_data_read.count
Общий объём данных, прочитанных из файлов.
Innodb Data Written
mariadb.global_status.innodb_data_written.count
Общий объём записанных данных.
Innodb Buffer Pool Reads
mariadb.global_status.innodb_buffer_pool_reads
Количество логических чтений, которые InnoDB не смогла удовлетворить из пула буферов и была вынуждена читать напрямую с диска.
Innodb Buffer Pool Read Requests
mariadb.global_status.innodb_buffer_pool_read_requests
Количество логических запросов на чтение.
Availability
mariadb.global_status.availability
Можно ли установить подключение к базе данных
Status
mariadb.global_status.status
Статус AVAILABLE возвращается, если мы можем запросить базу данных
Handler Rollback
mariadb.global_status.handler_rollback.count
Количество запросов к движку хранилища на выполнение операции отката.
Innodb Log Waits
mariadb.global_status.innodb_log_waits.count
Количество раз, когда буфер лога был слишком мал и требовалось ожидание его сброса перед продолжением.
Innodb Row Lock Current Waits
mariadb.global_status.innodb_row_lock_current_waits
Количество блокировок строк, ожидаемых в данный момент операциями над таблицами InnoDB.
Innodb Row Lock Time (Avg)
mariadb.global_status.innodb_row_lock_time_avg
Среднее время получения блокировки строки для таблиц InnoDB
Innodb Row Lock Waits
mariadb.global_status.innodb_row_lock_waits.count
Количество раз, когда операции над таблицами InnoDB были вынуждены ожидать блокировку строки.
Opened Tables
mariadb.global_status.opened_tables.count
Количество таблиц, которые были открыты. Если значение Opened_tables большое, вероятно, ваше значение table_open_cache слишком мало.
Open Files
mariadb.global_status.open_files
Количество открытых файлов. Этот счётчик включает обычные файлы, открытые сервером. Он не включает другие типы файлов, такие как сокеты или каналы. Также счётчик не включает файлы, которые движки хранилища открывают с помощью своих внутренних функций, а не запрашивая это у сервера.
Open Tables
mariadb.global_status.open_tables
Количество открытых таблиц.
Query Cache Free Memory
mariadb.global_status.qcache_free_memory
Объём свободной памяти для кэша запросов.
Query Cache Hits
mariadb.global_status.qcache_hits.count
Количество попаданий в кэш запросов.
Query Cache not Cached
mariadb.global_status.qcache_not_cached.count
Количество некэшированных запросов (не подлежащих кэшированию или не кэшированных из-за настройки query_cache_type).
Aborted Clients
mariadb.global_status.aborted_clients.count
Количество подключений, которые были прерваны из-за того, что клиент отключился, не закрыв подключение должным образом.
Aborted Connects
mariadb.global_status.aborted_connects.count
Количество неудачных попыток подключения к серверу MySQL.
Connection Errors Max Connections
mariadb.global_status.connection_errors_max_connections.count
Количество подключений, отклонённых из-за достижения лимита max_connections сервера.
Max Used Connections
mariadb.global_status.max_used_connections
Максимальное количество подключений, одновременно использовавшихся с момента запуска сервера.
Questions
mariadb.global_status.questions.count
Количество операторов, выполненных сервером. Это включает только операторы, отправленные на сервер клиентами, и не включает операторы, выполненные внутри хранимых программ, в отличие от переменной Queries. Эта переменная не считает команды COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE или COM_STMT_RESET.

infrastructure

Название метрики Ключ метрики Описание
Memory
mariadb.infrastructure.memory
Объём памяти, используемой для каждой области кода.

databases

Название метрики Ключ метрики Описание
Database Size
mariadb.databases.size
Размер базы данных
Database Queries
mariadb.databases.queries.count
Количество запросов, выполненных для базы данных.
Database Rows Read
mariadb.databases.rows_read.count
Количество строк, проверенных запросами, выполненными для базы данных.
Database Rows Written
mariadb.databases.rows_written.count
Количество строк, затронутых запросами, выполненными для базы данных.

replicas

Название метрики Ключ метрики Описание
Slave IO Running
mariadb.replica.slave_io_running
Работает ли поток ввода-вывода реплики и подключён ли он (Yes — 1), работает, но не подключён к первичному узлу (Connecting — 2) или не работает (No — 0).
Slave SQL Running
mariadb.replica.slave_sql_running
Работает ли поток SQL и подключён ли он (Yes — 1), работает, но не подключён к первичному узлу (Connecting — 2) или не работает (No — 0).
Relay Log Space
mariadb.replica.relay_log_space
Общий размер всех файлов журнала ретрансляции вместе взятых.
Last IO Errno
mariadb.replica.last_io_errno
Код ошибки самой последней ошибки, которая привела к остановке потока ввода-вывода (также записывается в журнал ошибок реплики). 0 означает отсутствие ошибки. RESET SLAVE или RESET MASTER сбросят это значение.
Last SQL Errno
mariadb.replica.last_sql_errno
Код ошибки самой последней ошибки, которая привела к остановке потока SQL (также записывается в журнал ошибок реплики). 0 означает отсутствие ошибки. RESET SLAVE или RESET MASTER сбросят это значение.
Seconds Behind Master
mariadb.replica.seconds_behind_master
Разница между временной меткой, зарегистрированной на ведущем узле для события, которое реплика обрабатывает в данный момент, и текущей временной меткой на реплике. Ноль, если реплика в данный момент не обрабатывает событие.
Read Master Log Position
mariadb.replica.read_master_log_pos
Позиция, до которой поток ввода-вывода прочитал текущий файл бинарного журнала первичного узла.
Exec Master Log Position
mariadb.replica.exec_master_log_pos
Позиция, до которой поток SQL обработал текущий файл бинарного журнала ведущего узла.

Часто задаваемые вопросы

Почему я не вижу метрики ожиданий? Чтобы собирать метрики ожиданий, включите сбор данных для экземпляра MariaDB.

Я получаю ошибку "RSA public key is not available client side" Это означает, что имя пользователя не идентифицируется собственным паролем.

Почему я не вижу метрики памяти? Включите сбор данных для вашего экземпляра.

Вы можете проверить, что запрос данных работает, выполнив:

SELECT SUBSTRING_INDEX(event_name,'/',2) AS code_area,
                SUM(current_alloc) AS current_alloc
          FROM sys.x$memory_global_by_current_bytes
          GROUP BY SUBSTRING_INDEX(event_name,'/',2)
          ORDER BY SUM(current_alloc) DESC;

Почему я не могу видеть медленные запросы? См. раздел «Добавление конфигураций для сбора топовых медленных запросов».

Расширения

Изучите в разделе Расширения.

Мониторинг экземпляров MariaDB удалённо через АктивныйШлюз для сбора метрик производительности, сведений о медленных запросах и логов в Ключ-АСТРОМ.