[Из песочницы] Мониторинг производительности MySQL для Grafana на изичах за 20 минут
Привет, дорогой хабрянин и другой читающий сей рецепт вкусного и здорового мониторинга!
Мое имя — Михаил Андрианов и работаю я Тех.Директором в компании Emarsys уже целых 7 лет.
Мы часто работаем с клиентскими и своими базами данных, поэтому зачастую должны наблюдать за ними, чтобы наши клиенты и мы могли жить и работать спокойно.
Так и родилась у меня мысль поделиться с вами рецептом по развертыванию системы мониторинга довольно распространенной по свету MySQL.
Вот, как примерно, эта красота может выглядеть:
Все Дашборды уже включены в рецепт, и вам не придется их ваять. Фактически, требуется только правильно все настроить и окунуться с головой в мир шикарных графиков и таблиц.
Итак, для приготовления нам потребуется:
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 к базе с логами
Все стандартно.
Выбираем Источник данных (Data Source) MySQL
Далее…
URL, пользователь, пароль
**Можно увидеть, что пользователя, которого мы используем для сбора логов и ограничиваем только доступом для чтения performance.schema и записью в БД my2, мы используем так же и в Grafana. Так вы можете избежать компрометации своей базы, если утратите доступ к Grafana.
Этап третий
Настраиваем Дашборд
Я намеренно выбрал самый быстрый и удобный способ настройки, дабы не испытывать терпение.
Опять же обратимся к Meo.
Его дашборд называется 2MySQL Simple Dashboard
Самый удобный способ установки дашбордов в Grafana — это, разумеется, импорт JSON объекта настроек.
Для осуществления этого незамысловатого шага:
- Скачаем собственно сам JSON
- Перейдем в управление дашбордами Dashaboards → Manage
- Выберем Import и загрузим объект из загруженного файла
Теперь мы получили готовую красивую панель с очень дельными визуализациями данных.
Гибкость Grafana дает возможность удобно видоизменять каждую панель, а встроенные переменные в 2MySQL Simple Dashboard помогают сразу подстраивать панели под тех пользователей и процессы, которые более всего могут заинтересовать, например отслеживать на отдельных панелях или дашбордах конкретных пользователей базы.
Следующим этапом должна служить настройка alert’ов для созданного дашборда. Я опущу этот процесс, оставляя это на усмотрение каждого решившего пойти по описанному пути. Все оповещения настраиваются на уровне каждой конкретной панели.
Как и обещал, развертывание происходит довольно быстро и без танцев с бубном. Буду рад дополнениям к моему рецепту от опытных хабровцев, в особенности по части alert’ов.