Расширение MariaDB
Расширение 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 'dynatrace'@'%' IDENTIFIED BY 'password';
Предоставьте пользователю следующие разрешения:
GRANT SELECT ON performance_schema.* TO 'dynatrace'@'%';
Позволяет запрашивать базу данных performance_schema.
GRANT PROCESS ON *.* TO 'dynatrace'@'%';
Позволяет просматривать метрики потоков и подключений для всех пользователей.
GRANT SHOW DATABASES ON *.* TO 'dynatrace'@'%';
Позволяет просматривать метрики баз данных для всех баз данных.
GRANT SELECT ON sys.x$memory_global_by_current_bytes TO 'dynatrace'@'%';
Позволяет запрашивать статистику памяти.
GRANT SLAVE MONITOR ON *.* TO 'dynatrace'@'%';
Позволяет запрашивать метрики реплик.
Из-за ограничения MariaDB вам необходимо предоставить разрешения SELECT на отдельные базы данных для расчёта их размеров.
Информация о совместимости
- Наборы функций
global_statusиglobal_status_extended: MariaDB 10.5.2+
Таблица global_status схемы производительности была представлена в этой версии.
Обратите внимание, что для конкретных переменных глобального статуса в этой таблице поддержка версий может отличаться, и точные поддерживаемые версии не все документированы. Если вы заметите, что метрика в этих наборах функций не собирается, вы можете найти её в документации по системным и статусным переменным, чтобы проверить, указана ли для неё поддерживаемая версия MariaDB.
- Наборы функций
replicasиreplica_error_logs: MariaDB 11.6+
Таблица SLAVE_STATUS информационной схемы была представлена в этой версии.
Активация и настройка
Добавление экземпляра БД
- Перейдите в раздел Расширения.
- Выберите и установите расширение MariaDB. Это включает расширение в вашей среде мониторинга.
* Требуемое разрешение: Изменение настроек мониторинга
- Выберите Добавить экземпляр БД в приложении Базы данных. Откроется мастер Добавить экземпляр БД.
- Выберите раздел MariaDB в мастере.
Выбор типа размещения
Выберите тип размещения из предложенных вариантов. Этот выбор определяет, какой скрипт создаст необходимые объекты базы данных на более позднем этапе процесса.
- В мастере Добавить экземпляр БД выберите тип хоста, соответствующий вашим требованиям.
- Выберите Далее.
Выбор группы АктивныйШлюз
Выберите группу АктивныйШлюз, чтобы определить, какие АктивныеШлюзы будут запускать расширение.
Выберите Следующий шаг.
Создание подключения
Настройте подключение к вашему экземпляру базы данных.
- Назовите подключение, чтобы вы могли идентифицировать его позже.
- Добавьте данные в разделе Настроить подключение.
- Укажите следующие данные подключения:
* Хост * Порт * Строка подключения
- Предоставьте учётные данные для аутентификации напрямую или используйте безопасные альтернативы.
* Базовые учётные данные: при базовой аутентификации данные, передаваемые в Ключ-АСТРОМ при активации конфигурации мониторинга, маскируются, чтобы предотвратить их извлечение. * Хранилище учётных данных: используйте учётные данные из хранилища для безопасного хранения и извлечения учётных данных базы данных.
- Выберите Далее.
Установка экземпляра
Добавьте ручные конфигурации на основе требований мониторинга.
Добавление конфигураций для сбора топовых медленных запросов
Это относится к набору функций top_queries, который извлекает данные из performance_schema.events_statements_summary_by_digest:
- Включите необходимые инструменты операторов — это указывает MariaDB отслеживать все операторы:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'statement/%';
- Включите потребителей — это указывает 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 удалённо через АктивныйШлюз для сбора метрик производительности, сведений о медленных запросах и логов в Ключ-АСТРОМ.