[Из песочницы] Мониторинг производительности MySQL для Grafana на изичах за 20 минут

Привет, дорогой хабрянин и другой читающий сей рецепт вкусного и здорового мониторинга!

Мое имя — Михаил Андрианов и работаю я Тех.Директором в компании Emarsys уже целых 7 лет.

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

Вот, как примерно, эта красота может выглядеть:

image

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

Итак, для приготовления нам потребуется:

Mysql > 5.6 (можно и младше, но придется кое-что подправить в запросах)
Grafana > 6.7.1
Ubuntu/ MS Windows по вкусу


Этап первый


Настраиваем базу хранения логов

В основу сервисной базы я включил удобный и легкий в приготовлении my2Collector от мастера итальянской MySql кухни Meo

mysql --user=root -pXXX < my2.sql


* Буду использовать команды любимой Ubuntu 16

Нельзя давать пользователю my2 админские права — дальше будет видно, что это может выйти вам боком

Когда база из дампа встала, рекомендую ознакомится с процедурами, которые обновляют в ней данные. В особенности процедуру

 `collect_stats`()


Желательно, повысить частотность запроса до 5 минут. Так у вас будут более актуальные данные по состоянию БД.

Теперь, когда механизм сбора статистики запущен можно переходить к подключению этого источника к Grafana.

Этап второй


Подключаем Grafana к базе с логами

image

Все стандартно.

Выбираем Источник данных (Data Source) MySQL
Далее…
URL, пользователь, пароль

**Можно увидеть, что пользователя, которого мы используем для сбора логов и ограничиваем только доступом для чтения performance.schema и записью в БД my2, мы используем так же и в Grafana. Так вы можете избежать компрометации своей базы, если утратите доступ к Grafana.


Этап третий


Настраиваем Дашборд

Я намеренно выбрал самый быстрый и удобный способ настройки, дабы не испытывать терпение.

Опять же обратимся к Meo.

Его дашборд называется 2MySQL Simple Dashboard

Самый удобный способ установки дашбордов в Grafana — это, разумеется, импорт JSON объекта настроек.

Для осуществления этого незамысловатого шага:

  1. Скачаем собственно сам JSON
  2. Перейдем в управление дашбордами Dashaboards → Manage
  3. Выберем Import и загрузим объект из загруженного файла


image

image

Теперь мы получили готовую красивую панель с очень дельными визуализациями данных.


Гибкость Grafana дает возможность удобно видоизменять каждую панель, а встроенные переменные в 2MySQL Simple Dashboard помогают сразу подстраивать панели под тех пользователей и процессы, которые более всего могут заинтересовать, например отслеживать на отдельных панелях или дашбордах конкретных пользователей базы.

image

Следующим этапом должна служить настройка alert’ов для созданного дашборда. Я опущу этот процесс, оставляя это на усмотрение каждого решившего пойти по описанному пути. Все оповещения настраиваются на уровне каждой конкретной панели.

image

Как и обещал, развертывание происходит довольно быстро и без танцев с бубном. Буду рад дополнениям к моему рецепту от опытных хабровцев, в особенности по части alert’ов.

© Habrahabr.ru