Мониторинг MySQL сервера через Zabbix

В этой публикации я запишу себе основные шаги, которые мне пришлось выполнить, когда я конфигурировал мониторинг MySQL сервера через Zabbix. На момент подготовки публикации этот метод поддерживал следующие БД:

  • MySQL 5.7, 8.0.
  • Percona 8.0.
  • MariaDB 10.4, 10.6.8.

В качестве опорного материала я использовал официальное руководство.

Предварительная подготовка сервера MySQL

Сначала подготовим хост с сервером MySQL. В моем случае – это сервер под управлением ОС Ubuntu Server 22.04.

1. Самый первый шаг – это установка агента Zabbix:

sudo apt install -y zabbix-agent

2. Теперь сконфигурируем автозапуск агента и запустим его:

sudo systemctl enable zabbix-agent
sudo systemctl start zabbix-agent

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

sudo nano /etc/zabbix/zabbix_agentd.conf
Server=10.10.10.71

Сохраняем внесенные изменения и перезапускаем агента:

sudo systemctl restart zabbix-agent

4. Далее необходимо скопировать содержимое файла template_db_mysql.conf в директорию с конфигурационными файлами агента.

sudo nano /etc/zabbix/zabbix_agentd.conf.d/template_db_mysql.conf

Содержимое файла:

#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 4.2
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default) 
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user='zbx_monitor'
#password='<password>'
#
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

Сохраняем файл и перезапускаем агента Zabbix:

sudo systemctl restart zabbix-agent

5. Теперь создадим отдельного пользователя, от имени которого Zabbix будет подключаться для сбора метрик с сервера MySQL:

mysql -u root
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'Qwerty123';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
root@nextcloud:/home/roman# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 94
Server version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'Qwerty123';
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> 

6. Создадим директорию, в которую мы складируем конфигурационный файл с настройками клиента MySQL:

sudo mkdir /var/lib/zabbix

7. Создадим конфигурационный файл с настройками клиентам MySQL и укажем необходимые параметры:

sudo nano /var/lib/zabbix/.my.cnf

Содержимое файла:

[client]
user='zbx_monitor'
password='Qwerty123'

Сохраняем внесенные изменения.

8. В процессе установки агента Zabbix создается одноименный пользователь. Только у него не указана домашняя директория. Проблема в том, что конфигурационный файл .my.cnf в таком случае не может быть найден и на сервере Zabbix вы увидите ошибки подключения к серверу MySQL. Скорректируем адрес домашней директории в настройках профиля пользователя:

sudo systemctl stop zabbix-agent
sudo usermod --home /var/lib/zabbix zabbix
sudo systemctl start zabbix-agent

9. В заключении проверим статус агента zabbix:

sudo systemctl status zabbix-agent

Настройка Zabbix

Теперь перейдем к конфигурации на стороне сервера Zabbix.

1. Нужно зайти в веб панель администрирования в раздел добавления нового хоста.

2. Указываем параметры подключения к серверу и обязательно выбираем шаблон “MySQL by Zabbix agent”. Опционально можно выбрать и дополнительные шаблоны. Например, “Linux by Zabbix agent”.

3. Если ваш MySQL сервер не прослушивает клиентские подключения на адресе 127.0.0.1 или вы используете нестандартный порт для подключения, то скорректируйте соответствующие макросы:

4. Сохраняем внесенные изменения, нажав на кнопку “Add”.

Проверка мониторинга MySQL

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

Например, посмотрим те счетчики, которые мы собираем для InnoDB:

Как видно из скриншота, сервер Zabbix получает данные с сервера MySQL. А это говорит о том, что все настройки были выполнены верно и мониторинг MySQL сервера через Zabbix работает корректно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *