В этой публикации я запишу себе основные шаги, которые мне пришлось выполнить, когда я конфигурировал мониторинг 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 работает корректно.