Linuxoid.pro

Сообщество разработчиков программного обеспечения и IT-специалистов

Создание панели управления MySQL с Grafana и Prometheus

Независимо от того, являетесь ли вы системным администратором или администратором базы данных, мониторинг вашего сервера MySQL является важным шагом на пути к диагностике проблем.

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

Вы также хотите отслеживать активных пользователей , то, что они запускают, а также среднее время запросов .

Чтобы отслеживать эти показатели, мы собираемся создать полную панель управления MySQL с использованием современных инструментов, таких как Grafana и Prometheus .

Следуя этому руководству, вы создадите эту информационную панель, и вам будет представлен набор из более чем 10 информационных панелей MySQL, созданных Percona. Можете поспорить, что для ваших нужд будет дашборд!

I — Что вы узнаете

Если вы будете следовать этому руководству до конца, вы узнаете следующие моменты:

  • Как установить и настроить сервер Prometheus на вашем Linux-компьютере;
  • Как настроить экспортер сервера MySQL и как привязать его к Prometheus;
  • Как выглядит базовая архитектура мониторинга Prometheus;
  • Как настроить Grafana для импорта информационных панелей MySQL Percona за считанные минуты.

Готовы?

II — Архитектура MySQL, Grafana и Prometheus

Прежде чем начать, важно иметь четкое представление о том, как выглядит архитектура мониторинга Prometheus.

Если вы следовали моему подробному руководству по Prometheus, вы уже знаете, что Prometheus работает с экспортерами . Экспортеры предназначены для привязки к существующим источникам данных для извлечения из них показателей.

Примерами экспортеров могут быть экспортер MongoDB, экспортер ElasticSearch или, в нашем случае, экспортер MySQL.

Экспортеры представлены как образы Docker или как отдельные двоичные файлы, которые можно запускать как фоновые задачи или службы.

В нашем случае мы собираемся использовать экспортер MySQL, который доступен на официальной странице Prometheus на github.

Экспортер MySQL привязывается к нашему экземпляру MySQL и предоставляет метрики непосредственно для использования Prometheus.

В рамках своей конфигурации Prometheus собирается привязаться к нему и извлекать из него метрики. Оттуда они будут видны на Графане.

Довольно просто, правда?

Теперь, когда вы лучше понимаете, как мы собираемся его построить, давайте установим все инструменты, необходимые для создания панели управления MySQL с помощью Grafana.

III — Установка различных инструментов

а — Установка Prometheus

Для тех, кто плохо знаком с Prometheus, мы рассмотрели установку Prometheus в нашем предыдущем руководстве.

С этого момента ваш экземпляр Prometheus должен быть запущен и работать с вашими файлами конфигурации в /etc/prometheus/prometheus.yml.

Чтобы проверить это, перейдите по адресу http: // localhost: 9090 . Вы должны увидеть запущенный веб-интерфейс Prometheus. Если нет, то в вашей установке определенно что-то не так.

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

Этим мы и займемся дальше.

б — Установка экспортера MySQL

Как подробно описано ранее, экспортер MySQL доступен здесь. Фактически это официальный экспортер, созданный самим Prometheus.

MySQL экспортер поставляется как автономный двоичный файл, но мы будем настраивать его в качестве службы.

Сначала создайте пользователя Prometheus на своем экземпляре, если он еще не существует.

> sudo useradd -rs /bin/false prometheus

Напоминаем, что с помощью этой команды вы создадите системного ( -r ) пользователя с именем prometheus без доступа ( -s ) к оболочке. Это пользователь, которого вы будете использовать для создания службы экспорта MySQL .

Сначала загрузите на свой экземпляр последние двоичные файлы экспортера MySQL.

Все дистрибутивы доступны здесь. Найдите тот, который вам подходит, и запустите:

> wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz

Теперь, когда ваши двоичные файлы загружены, извлеките их в текущую папку.

> tar xvzf mysqld_exporter-0.11.0.linux-amd64.tar.gz

Переместите двоичные файлы в папку / usr / local / bin, из которой мы собираемся построить службу. Для выполнения этой операции вам потребуются права sudo.

> cd mysqld_exporter-0.11.0.linux-amd64/
> sudo mv mysqld_exporter /usr/local/bin/

Оттуда вы сможете создать пользователя для экспортера в своей базе данных MySQL.

Запустите оболочку mysql и настройте свою базу данных следующим образом (у вас должны быть права на предоставление разрешений для вашей базы данных ).

> sudo mysql
> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

Выполнив эти команды, вы создадите пользователя-экспортера с паролем «пароль» в mysql. Теперь вы собираетесь установить эти переменные в файле конфигурации.

В папке / etc создайте новый файл конфигурации с именем .exporter.cnf и запишите в него следующие учетные данные.

> cd / etc 
> sudo vi .exporter.cnf

Задайте учетные данные в файле конфигурации следующим образом:

[client]
user=exporter
password=password

(Если на предыдущем шаге вы установили других пользователей или пароли, вам необходимо отразить изменения в файле конфигурации.)

c — Создание службы экспорта MySQL

Теперь, когда все готово, пора создать службу для вашего экспортера MySQL . Перейдите в / lib / systemd / system и создайте новый служебный файл.

> sudo vi /lib/systemd/system/mysql_exporter.service

Вставьте в него следующую конфигурацию:

[Unit]
Description=MySQL Exporter
User=prometheus

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.exporter.cnf \
--collect.auto_increment.columns \
--collect.binlog_size \
--collect.engine_innodb_status \
--collect.engine_tokudb_status \
--collect.global_status \
--web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

Перезагрузите системный демон и запустите службу.

> sudo systemctl daemon-reload
> sudo systemctl status mysql _exporter.service

Убедитесь, что ваша служба запущена, выполнив следующую команду:

> sudo systemctl status mysql_exporter
● mysql_exporter.service - MySQL Exporter
Loaded: loaded (/lib/systemd/system/mysql_exporter.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2019-06-08 15:11:12 UTC; 5min ago
Main PID: 3136 (mysqld_exporter)
Tasks: 8 (limit: 4704)
CGroup: /system.slice/mysql_exporter.service
└─3136 /usr/local/bin/mysqld_exporter --config.my-cnf /etc/.exporter.cnf

Поздравляю!

Ваш экспортер MySQL готов . Теперь пришло время настроить Prometheus, чтобы очистить его.

Краткое примечание : ваш экспортер MySQL работает на порту 9104, а MySQL работает на порту 3306 по умолчанию.

г — Настройка Prometheus

Prometheus очищает цели через свой файл конфигурации. Поскольку мы добавили новый экспортер, давайте добавим его в конфигурацию Prometheus.

Перейдите в папку с файлом конфигурации Prometheus и отредактируйте его следующим образом:

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090', 'localhost:9104']

Перезапустите Prometheus и перейдите в веб-интерфейс Prometheus (http: // localhost: 9090).

Перейдите на вкладку целей и убедитесь, что Prometheus правильно удаляет цель экспортера MySQL.

Вернитесь на вкладку «график» в текстовом поле выражения введите « mysql_exporter_scrapes_total ». Если вы видите результат там, это означает, что ваш экземпляр Prometheus правильно настроен для извлечения метрик из экспортера.

Поздравляю! Теперь вся конфигурация готова!

д — Установка Grafana

Графана будет использоваться для отображения наших показателей. Шаги по установке Grafana уже были подробно описаны в одной из наших статей, обязательно прочтите ее, прежде чем продолжить.

Если вы ищете руководство по установке на Ubuntu 18.04, я написал подробное руководство по установке Grafana для пользователей Ubuntu.

IV — Создание панели управления MySQL с помощью Grafana

В этом случае у вас есть два основных варианта:

  • Создайте свою собственную настраиваемую панель управления Grafana : в соответствии с вашими потребностями вы можете выбрать, какие показатели вы хотите отображать и как вы хотите их отображать.
  • Используйте существующие панели инструментов сообщества и сэкономьте время .

В этом уроке мы рассмотрим второй вариант. Мы собираемся использовать потрясающие панели управления Percona MySQL и импортировать их прямо в нашу Grafana.

a — Настройка источника данных Prometheus

Перед тем, как начать, и если вы еще этого не сделали, вам необходимо настроить Prometheus в качестве источника данных Grafana.

Создайте новый источник данных и настройте его следующим образом:

Если ваш экземпляр Prometheus по умолчанию не работает на порту 9090, обязательно укажите правильный порт в конфигурации.

Теперь, когда Prometheus настроен, мы можем просматривать существующие панели мониторинга Percona и импортировать одну из существующих панелей мониторинга MySQL в Grafana.

Панели управления Percona доступны здесь. Вы также можете поиграть с существующими панелями управления на собственном экземпляре Grafana Percona здесь.

В папке дашбордов на гитхабе Percona загрузите интересующий вас файл json.

> wget https://github.com/percona/grafana-dashboards/blob/master/dashboards/MySQL_Overview.json

Теперь, когда ваша панель мониторинга загружена, в Grafana перейдите в Dashboards> Import> Upload .json file.

Если вы нажмете «Импорт», вся ваша панель управления MySQL будет создана автоматически, и она сразу же начнет отображать данные!

Это обзорная информационная панель MySQL, но вы можете выбрать из более чем 20+ информационных панелей.

Вот полный список дашбордов, созданных Percona:

V — Идем дальше с MySQL и Grafana

Если вы хотите немного углубиться в тему, есть много видеороликов, которые могут помочь вам получить глубокое понимание того, как компании создают информационные панели, особенно панели управления MySQL с помощью Grafana.

Совсем недавно, Петр Зайцев (генеральный директор Percona) очень много говорил об этом. Вся бизнес-модель Percona построена на масштабном мониторинге MySQL, MongoDB и MariaDB.

Второй вариант использования — Verizon, использующий Grafana и MySQL, продемонстрировавший, как он может оптимизировать автоматизацию и самообслуживание на практике.

Надеюсь, сегодня вы узнали что-то новое. Если да, обязательно оставьте нам комментарий о том, как вы планируете использовать эти знания для своих конкретных нужд.