Мониторинг производительности 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'ов.

Средняя зарплата в IT

110 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 8 851 анкеты, за 2-ое пол. 2020 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 12

    –1

    Так не бывает.

      0
      Не завелось «из коробки»
      при загрузке дашборда ошибка
      «Error 1146: Table 'performance_schema.global_status' doesn't exist»
      MariaDB Ver 15.1 Distrib 10.4.12-MariaDB, for Win64 (AMD64)

      performance_schema.global_status не было после установки MariaDB
        +1
          0
          Привет!
          Как и сказал, тут бывают «нюансы» с My2.
          Я сам, например, поднимал это хозяйство на MySql 5.6, а там немного другая схема сбора статистики. Ну т.е. она просто немного не подходит под заготовку.

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

          Попробуй заменить код

          С

          select concat('MySQL version: ',version(), '   Created at: ', date_format(min(create_time),'%Y-%m-%d %T') ,
            '  Started at: ', date_format(date_sub(now(), INTERVAL variable_value second),'%Y-%m-%d %T')) info
            from   information_schema.tables,performance_schema.global_status
           where variable_name='UPTIME'
           group by variable_value
          


          на

          select concat('MySQL version: ',version(), '   Created at: ', date_format(min(create_time),'%Y-%m-%d %T') ,
            '  Started at: ', date_format(date_sub(now(), INTERVAL variable_value second),'%Y-%m-%d %T')) info
            from   information_schema.tables,information_schema.SESSION_STATUS
           where variable_name='UPTIME'
           group by variable_value


          Либо, на крайний случай, можно вообще ее выключить. Ну или обновить MySql до 5.7

          +2
          Спасибо за статью, было интересно почитать. Однако неясно, чем такой способ мониторинга лучше стандартного через telegraf plugin mysql либо скажем через перконовский pmm.
          Если Вы сравнивали, было бы интересно услышать Ваше мнение.
            0
            Привет! Не буду спорить, что лучше, но эстетически мне больше нравится Grafana.
            Согласись, что если она уже установлена к примеру для просмотра логов на сервере, то прикрутить такую статистику весьма легко.
              0
              так графана она же во всех трех сценариях используется )
                0
                не знал! Теперь буду знать! Спасибо!
            +2
            Кто такие изичи?
              –2
              Изичи = изи от англ. easy. На изичах = легко.
              0
              Можно ли так мониторить несколько инстансов MySQL из одной инсталляции Grafana?
                0
                Привет!
                Можно — я так и делаю.
                Не обязательно, чтобы база была на той же машине. Кстати, Grafana есть, как приложение для MS Windows — может быть очень удобным решением, чтобы видеть все свои базы с одной машины(даже весьма слабой).

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

              Самое читаемое