Мониторинг MySQL/MariaDB с помощью Prometheus за пять минут |
Prometheus — ведущее решение для базы данных временных рядов и мониторинга.
Здесь мы рассмотрим, как настроить экспортеры Prometheus MySQL на
Это руководство будет состоять из трех основных шагов.
- Установка и настройка сервера Прометей
- Установка и настройка экспортера MySQL Prometheus на серверах баз данных
- Создание/импорт информационных панелей MySQL Grafana. Мы будем использовать готовые информационные панели Percona.
Шаг 1. Установите и настройте сервер Prometheus
Я написал подробное руководство по установке и настройке сервера Prometheus. Руководство было предназначено для Ubuntu и CentOS 7, но оно должно работать и для любого другого сервера systemd.
- Как установить сервер Prometheus на CentOS/Ubuntu
Следуйте инструкциям, и в конце у вас должен получиться работающий сервер Prometheus.
Шаг 2. Установите и настройте Prometheus MySQL Exporter
После установки сервера Prometheus вам необходимо
Добавьте пользователя и группу системы Prometheus:
sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Этот пользователь будет управлять службой экспортера.
Загрузите и установите Prometheus MySQL Exporter:
Это следует делать на серверах MySQL/MariaDB, как на подчиненных, так и на главных серверах. Возможно, вам придется проверить страницу выпусков экспортера Prometheus MySQL, чтобы найти последнюю версию, а затем экспортировать последнюю версию в переменную VER
, как показано ниже:
Загрузите последнюю версию экспортера MySQL:
curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
tar xvf mysqld_exporter*.tar.gz
sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/mysqld_exporter
Подтвердите установку, проверив версию mysqld_exporter:
$ mysqld_exporter --version
mysqld_exporter, version 0.14.0 (branch: HEAD, revision: ca1b9af82a471c849c529eb8aadb1aac73e7b68c)
build user: root@401d370ca42e
build date: 20220304-16:25:15
go version: go1.17.8
platform: linux/amd64
Создать пользователя базы данных экспортера Prometheus
Пользователь должен иметь права PROCESS, SELECT, REPLICATION CLIENT
:
CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'StrongPassword' WITH MAX_USER_CONNECTIONS 2;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';
FLUSH PRIVILEGES;
EXIT
Если у вас архитектура базы данных Master-Slave, создавайте пользователей только на главных серверах.
WITH MAX_USER_CONNECTIONS 2
используется для установки максимального лимита подключений для пользователя, чтобы избежать перегрузки сервера мониторингом сбоев при большой нагрузке.
Настройка учетных данных базы данных
Создайте файл учетных данных базы данных:
sudo vim /etc/.mysqld_exporter.cnf
Добавьте правильное имя пользователя и пароль для создания пользователя.
[client]
user=mysqld_exporter
password=StrongPassword
Установите права владения:
sudo chown root:prometheus /etc/.mysqld_exporter.cnf
Создайте файл модуля systemd (для систем Systemd)
Это для серверов systemd, для системы инициализации SysV используйте сценарий инициализации экспортера Prometheus MySQL для системы инициализации SysV.
Создайте новый служебный файл:
sudo vim /etc/systemd/system/mysql_exporter.service
Добавьте следующий контент
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=prometheus
Group=prometheus
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104
[Install]
WantedBy=multi-user.target
Если ваш сервер имеет общедоступную и частную сеть, вам может потребоваться заменить 0.0.0.0:9104
частным IP-адресом, например. 192.168.4.5:9104
По завершении перезагрузите systemd и запустите службу mysql_exporter
.
sudo systemctl daemon-reload
sudo systemctl enable mysql_exporter
sudo systemctl start mysql_exporter
Настройте конечную точку MySQL для очистки сервером Prometheus.
Войдите на свой сервер Prometheus и настройте конечную точку для очистки. Ниже приведен пример двух серверов баз данных MySQL.
scrape_configs:
- job_name: server1_db
static_configs:
- targets: ['10.10.1.10:9104']
labels:
alias: db1
- job_name: server2_db
static_configs:
- targets: ['10.10.1.11:9104']
labels:
alias: db2
Первый сервер имеет IP-адрес 10.10.1.10
, а второй — 10.10.1.11
. Добавьте другие цели, используя аналогичный формат. Имена заданий должны быть уникальными для каждой цели.
Примечание. Сервер Prometheus должен иметь возможность доступа к
Шаг 3. Создание/импорт информационных панелей MySQL Grafana
Теперь, когда у нас настроены цели и агенты для мониторинга,
- Установите Grafana и InfluxDB на CentOS 7.
- Как установить Grafana в Ubuntu и Debian
После установки войдите в панель администратора и добавьте источник данных, перейдя в раздел Конфигурация > Источники данных
.
Name: Prometheus
Type: Prometheus
URL: http://localhost:9090
Если сервер Prometheus не находится на том же хосте, что и Grafana, укажите IP-адрес сервера.
Создать/импортировать панель мониторинга Grafana для экспортера MySQL Prometheus
Если у вас нет времени на создание собственных информационных панелей, вы можете использовать созданную Percona, они с открытым исходным кодом.
Давайте загрузим панель MySQL_Overview
, которая дает хороший обзор производительности базы данных.
mkdir ~/grafana-dashboards
cd ~/grafana-dashboards
wget https://raw.githubusercontent.com/percona/grafana-dashboards/main/dashboards/MySQL/MySQL_Instances_Overview.json
Загрузите панели мониторинга Prometheus MySQL в графану.
Откройте Панели мониторинга > Импорт > Загрузить файл .json
.
Найдите каталог с файлом панели мониторинга и импортируйте его.
Собранные показатели должны начать отображаться.
Если вы хотите импортировать все информационные панели Percona для Prometheus, установите их на сервер Grafana.
git clone https://github.com/percona/grafana-dashboards.git
cp -r grafana-dashboards/dashboards /var/lib/grafana/
Вам необходимо перезапустить сервер Grafana, чтобы импортировать эти информационные панели.
sudo systemctl restart grafana-server
sudo service grafana-server restart
Затем вы можете начать использовать информационные панели в Grafana. Я сделаю руководство
- Мониторинг систем Linux с помощью Grafana, telegraf и InfluxDB.
- Мониторинг производительности Linux-сервера с помощью Prometheus и Grafana за 5 минут
- Мониторинг веб-сервера Apache с помощью Prometheus и Grafana за 5 минут