Мониторинг MySQL#

Attention

Эта статья — января 2021 года. Вероятно, ситуация поменялась, по состоянию на ноябрь 2022-го я не вижу в репозитории и документации плагина python.d для MySQL. Как и предполагал ранее, имеет смысл перейти на использование плагина MySQL на go.d.

Статью оставлю в текущем виде для понимания общего порядка действий (специфика для go.d может отличаться).

Note

Мы в настоящее время используем плагины python.d.

Есть также аналогичные плагины на go.d.

Мне не удалось найти информацию по сравнению производительности, стоит ли переключаться с плагинов python.d на плагины go.d.

Установка зависимостей#

sudo dnf install python3-mysql.x86_64

Note

Альтернатива: python3-PyMySQL.noarch — какой лучше, не знаю, но наличие python3-mysql в коде проверяется первым.

Доступ к базе MySQL#

sudo mysql

Выполняем запросы:

CREATE USER 'netdata'@'localhost';
GRANT USAGE on *.* to 'netdata'@'localhost';
FLUSH PRIVILEGES;

Конфигурация плагина (опционально)#

Скорее всего, должен работать дефолтный конфиг с автообнаружением подключения (если пользователь MySQL netdata@localhost — без пароля). Если хочется, например, запаролить доступ, то требуется внести изменения в конфиг.

Hint

В /etc/netdata/conf.d/[module] (по умолчанию) хранится дефолтная конфигурация. Менять её не следует (она будет перезаписана при обновлении).

Все изменения нужно хранить в /etc/netdata/[module], где module — название модуля или плагина Netdata.

Использование edit-config автоматизирует процесс хранения изменений конфигурации отдельно от конфигурации по умолчанию, но то же самое можно делать и вручную.

Официальный способ (если Netdata установлена скриптом с официального сайта, при установке из пакета в настоящее время не работает):

cd /etc/netdata
sudo ./edit-config python.d/mysql.conf

При установке из пакета в настоящее время edit-config не работает, делаем то же самое вручную:

# Нужно выполнить только один раз,
# при установке/настройке первого плагина python.d
sudo mkdir /etc/netdata/python.d

# Нужно выполнить только один раз,
# при первичной настройке плагина MySQL
# Не стоит перезаписывать, если файл уже существует!
sudo cp -nv /etc/netdata/conf.d/python.d/mysql.conf \
  /etc/netdata/python.d/mysql.conf

sudo vim /etc/netdata/python.d/mysql.conf

Пример подключения через unix socket, подключение к базе защищено паролем:

my_socket:
  name     : 'local'
  user     : 'netdata'
  pass     : 'h4q_tP5xB4(7&wW'
  socket   : '/var/lib/mysql/mysql.sock'

Обязательно перезапускаем Netdata, чтобы применить изменения:

sudo systemctl restart netdata.service

Дебаг плагина python.d/mysql#

/usr/libexec/netdata/plugins.d/python.d.plugin \
  mysql trace debug