2025-07-17 17:42:40
сравнение версий **Prometheus mysqld_exporter** 0.14.0 и 0.17.2 на основе доступной информации, включая официальный CHANGELOG и другие источники. Поскольку точные детали для версии 0.14.0 частично отсутствуют в предоставленных данных, я опираюсь на общие сведения и предполагаемые улучшения, основанные на развитии проекта.
### Версия 0.14.0
Выпущена около декабря 2021 года. Это стабильная версия, которая поддерживает MySQL 5.1 и выше, но некоторые методы сбора метрик ограничены для версий MySQL ниже 5.6.
**Ключевые особенности и характеристики**:
1. **Поддерживаемые коллекторы**:
- Основные коллекторы: `global_status`, `global_variables`, `slave_status`, `info_schema.processlist`, `info_schema.innodb_metrics`, `auto_increment.columns`, `binlog_size`, `info_schema.tablestats`, `info_schema.query_response_time`, `info_schema.userstats`, `info_schema.tables`, `perf_schema.tablelocks`, `perf_schema.file_events`, `perf_schema.eventswaits`, `perf_schema.indexiowaits`, `perf_schema.tableiowaits`.
- Поддержка сбора метрик для InnoDB (`innodb_cmp`, `innodb_cmpmem`), heartbeat и других специфичных функций MySQL.
- Возможность фильтрации метрик через параметр `collect[]` в конфигурации Prometheus для выборочного сбора.
2. **Конфигурация**:
- Поддержка настройки через переменную окружения `DATA_SOURCE_NAME` (например, `user:password@(hostname:3306)/`) или файл конфигурации `.my.cnf`.
- Поддержка TLS и базовой аутентификации через параметр `--web.config.file`.
3. **Ограничения**:
- Не все методы сбора метрик поддерживаются для MySQL < 5.6.
- Ограниченная производительность при высоких нагрузках без настройки лимита соединений (`MAX_USER_CONNECTIONS`).
- Отсутствие поддержки некоторых новых коллекторов, появившихся в более поздних версиях.
4. **Производительность и стабильность**:
- Версия оптимизирована для базового мониторинга, но может быть неэффективной при большом количестве метрик или сложных конфигурациях.
- Требуется ручная настройка прав доступа для пользователя MySQL (например, `GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.*`).
**Пример конфигурации** (на основе systemd-сервиса):
```bash
[Service]
User=mysqld_exporter
Group=mysqld_exporter
Environment="DATA_SOURCE_NAME=mysqld_exporter:password@tcp(127.0.0.1:3306)/"
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/mysql_exporter/.my.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist
```
### Версия 0.17.2
Выпущена 26 февраля 2025 года. Это последняя версия на момент запроса, с улучшениями производительности и новыми функциями. Поддерживает MySQL 5.1 и выше, с улучшенной совместимостью для более новых версий.
**Ключевые особенности и изменения**:
1. **Новые и обновленные коллекторы**:
- Исправлен запрос в коллекторе `perf_schema.events_statements_summary_by_digest` (фикс бага #920), что улучшило сбор статистики производительности запросов.[](https://github.com/prometheus/mysqld_exporter/releases)
- Поддержка всех коллекторов из 0.14.0, но с оптимизациями для более эффективного сбора метрик.
- Улучшена совместимость с современными версиями MySQL (например, MySQL 8.x) и MariaDB.
2. **Изменения в конфигурации**:
- Удалена поддержка устаревшей переменной окружения `DATA_SOURCE_NAME`. Теперь рекомендуется использовать файл `.my.cnf` или аргументы командной строки (например, `--mysqld.address=localhost:3306`, `--mysqld.username=exporter`).[](https://github.com/prometheus/mysqld_exporter/releases)
- Файл конфигурации по умолчанию изменён на `.my.cnf` в рабочей директории процесса. Для использования старого пути `$HOME/.my.cnf` требуется указать флаг `--config.my-cnf="$HOME/.my.cnf"`.[](https://github.com/prometheus/mysqld_exporter/releases)
- Улучшена поддержка TLS и аутентификации, включая настройку CA-сертификатов и клиентских SSL-ключей.
3. **Исправления и оптимизации**:
- Удалены некоторые внутренние метрики скрейпинга для упрощения и повышения производительности.[](https://github.com/prometheus/mysqld_exporter/releases)
- Оптимизирована работа с большими базами данных, особенно при сборе метрик из `information_schema` и `performance_schema`.
- Добавлены новые параметры для управления таймаутами, такие как `--lock_wait_timeout` (по умолчанию 2 секунды), чтобы избежать длительной блокировки метаданных.
4. **Новые функции**:
- Улучшена поддержка мониторинга репликации, включая метрики для pt-heartbeat (`collect.heartbeat`) и более точное отслеживание задержек репликации.
- Добавлены новые параметры для настройки, такие как `--log_slow_filter` для исключения медленных запросов при скрейпинге (не поддерживается Oracle MySQL).
**Пример конфигурации** (Docker, версия 0.17.2):
```bash
docker run -d \
-p 9104:9104 \
-v /home/user/.my.cnf:/.my.cnf \
--network my-mysql-network \
prom/mysqld-exporter \
--mysqld.address=localhost:3306 \
--mysqld.username=exporter \
--collect.global_status \
--collect.info_schema.processlist
```
### Сравнение ключевых различий
| **Характеристика** | **0.14.0** | **0.17.2** |
|---------------------------------------|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| **Дата выпуска** | Декабрь 2021 | Февраль 2025 |
| **Поддержка `DATA_SOURCE_NAME`** | Поддерживается (например, `mysqld_exporter:password@tcp(127.0.0.1:3306)/`) | Удалена, требуется `.my.cnf` или аргументы командной строки (`--mysqld.address`) |
| **Конфигурация по умолчанию** | Требуется явное указание пути к `.my.cnf` | По умолчанию `.my.cnf` в рабочей директории, можно переопределить |
| **Коллекторы** | Базовый набор, включая `global_status`, `slave_status`, `innodb_metrics` | Те же + улучшения в `perf_schema.events_statements_summary_by_digest` |
| **Производительность** | Базовая, возможны проблемы при больших нагрузках | Оптимизирована, улучшена работа с большими БД и репликацией |
| **TLS/аутентификация** | Поддерживается через `--web.config.file` | Улучшена, с поддержкой CA-сертификатов и клиентских SSL-ключей |
| **Параметры таймаутов** | Ограниченная поддержка | Добавлен `--lock_wait_timeout` и другие параметры для управления блокировками |
| **Совместимость** | MySQL 5.1+, ограничения для < 5.6 | Улучшена совместимость с MySQL 8.x и MariaDB |
| **Удалённые метрики** | Все метрики экспонируются по умолчанию | Удалены некоторые внутренние метрики скрейпинга для оптимизации |
### Вывод
- **0.14.0** подходит для базового мониторинга MySQL с минимальными требованиями. Однако она менее производительна и имеет ограниченную гибкость конфигурации, особенно для современных версий MySQL. Использование `DATA_SOURCE_NAME` делает настройку проще, но устаревшей.
- **0.17.2** — более современная и оптимизированная версия с улучшенной производительностью, поддержкой новых параметров (например, `lock_wait_timeout`) и лучшей совместимостью с новыми версиями MySQL. Удаление `DATA_SOURCE_NAME` требует обновления конфигураций, но делает настройку более прозрачной и безопасной.
**Рекомендация**: Если вы используете 0.14.0, обновление до 0.17.2 рекомендуется для улучшения производительности и совместимости, особенно для MySQL 8.x или высоконагруженных систем. Однако будьте готовы обновить конфигурации, так как `DATA_SOURCE_NAME` больше не поддерживается. Для деталей обновления обратитесь к CHANGELOG на GitHub: https://github.com/prometheus/mysqld_exporter/blob/master/CHANGELOG.md.[](https://github.com/prometheus/mysqld_exporter/releases)
Back to list