Поиск по сайту:

Мониторинг MySQL/MariaDB с помощью Prometheus за пять минут |


Prometheus — ведущее решение для базы данных временных рядов и мониторинга.

Здесь мы рассмотрим, как настроить экспортеры Prometheus MySQL на

Это руководство будет состоять из трех основных шагов.

  1. Установка и настройка сервера Прометей
  2. Установка и настройка экспортера MySQL Prometheus на серверах баз данных
  3. Создание/импорт информационных панелей 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 минут

Статьи по данной тематике: