[comment]: # ({a313f054-b4128477})
# 4 Мониторинг MySQL с помощью агента Zabbix 2

[comment]: # ({/a313f054-b4128477})

[comment]: # ({ad3dab41-2185307b})
#### Введение

На этой странице вы пройдете через шаги, необходимые для начала базового мониторинга сервера MySQL.

Для мониторинга сервера MySQL существует несколько подходов: Zabbix agent, Zabbix agent 2 или стандарт Open Database Connectivity (ODBC).
Основное внимание в этом руководстве уделено мониторингу сервера MySQL с помощью Zabbix agent 2, который является **рекомендуемым** подходом благодаря простой настройке в различных конфигурациях.
Однако на этой странице также приведены инструкции для [других подходов](#other-approaches-to-monitor-mysql), поэтому вы можете выбрать тот, который лучше всего соответствует вашим требованиям.

[comment]: # ({/ad3dab41-2185307b})

[comment]: # ({0cf7feb5-831aae47})
**Для кого предназначено это руководство**

Это руководство предназначено для новых пользователей Zabbix и содержит минимальный набор шагов, необходимых для включения базового мониторинга сервера MySQL.
Если вам нужны возможности глубокой настройки или более расширенная конфигурация, см. раздел [Configuration](/manual/config) руководства Zabbix.

[comment]: # ({/0cf7feb5-831aae47})

[comment]: # ({519621df-2fd1df9d})
**Prerequisites**

Before proceeding with this guide, you need to [download and install](https://www.zabbix.com/download) Zabbix server, Zabbix frontend and Zabbix agent 2 according to the instructions for your OS.

Depending on your environment, some steps in this guide may slightly differ.
This guide is based on an environment running Ubuntu.

[comment]: # ({/519621df-2fd1df9d})

[comment]: # ({8ae78277-ae0ef261})
#### Создание пользователя MySQL

Для мониторинга сервера MySQL Zabbix требуется доступ к нему и его процессам.
В вашей установке MySQL уже есть пользователь с необходимым уровнем доступа (пользователь "zabbix", который был создан при установке Zabbix),
однако у этого пользователя больше привилегий, чем необходимо для простого мониторинга (привилегии на DROP баз данных, DELETE записей из таблиц и т. д.).
Поэтому для *только* мониторинга сервера MySQL необходимо создать отдельного пользователя MySQL.

1\. Подключитесь к клиенту MySQL, создайте пользователя "zbx_monitor" (замените *<password>* для пользователя "zbx_monitor" на пароль по вашему выбору)
и [GRANT](https://dev.mysql.com/doc/refman/8.0/en/grant.html) необходимые привилегии этому пользователю:

    mysql -u root -p
    # Enter password:

    mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
    mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
    mysql> quit;

После создания пользователя можно переходить к следующему шагу.

[comment]: # ({/8ae78277-ae0ef261})

[comment]: # ({7d9d17aa-e6607c21})
#### Настройка веб-интерфейса Zabbix

1\. Войдите в веб-интерфейс Zabbix.

2\. [Создайте узел сети](/manual/config/hosts/host) в веб-интерфейсе Zabbix:

-   В поле *Host name* введите имя узла сети (например, "MySQL server").
-   В поле *Templates* введите или выберите шаблон "MySQL by Zabbix agent 2", который будет [связан](/manual/config/templates/linking) с узлом сети.
-   В поле *Host groups* введите или выберите группу узлов сети (например, "Databases").
-   В поле *Interfaces* добавьте интерфейс типа "Agent" и укажите IP-адрес вашего MySQL server.
    В этом руководстве используется "127.0.0.1" (localhost) для мониторинга MySQL server, установленного на той же машине, что и сервер Zabbix и Zabbix agent 2.

![](../../../assets/en/manual/guides/mysql_host.png){width="600"}

-   На вкладке *Macros* переключитесь на *Inherited and host macros*, найдите следующие макросы и нажмите *Change* рядом со значением макроса, чтобы обновить его:
    -   {$MYSQL.DSN} - задайте источник данных MySQL server ( [строку подключения именованной сессии](/manual/appendix/config/zabbix_agent2_plugins/mysql_plugin#parameters) из файла конфигурации плагина MySQL Zabbix agent 2).
        В этом руководстве используется источник данных по умолчанию "tcp://localhost:3306" для мониторинга MySQL server, установленного на той же машине, что и сервер Zabbix и Zabbix agent 2.
    -   {$MYSQL.PASSWORD} - задайте пароль ранее [созданного пользователя MySQL](#create-mysql-user) "zbx_monitor".
    -   {$MYSQL.USER} - задайте имя ранее [созданного пользователя MySQL](#create-mysql-user) "zbx_monitor".

![](../../../assets/en/manual/guides/mysql_macros.png){width="600"}

3\. Нажмите *Add*, чтобы добавить узел сети. Этот узел сети будет представлять ваш MySQL server.

[comment]: # ({/7d9d17aa-e6607c21})

[comment]: # ({bdcc4c70-339fa505})
#### Просмотр собранных метрик

Поздравляем! На этом этапе Zabbix уже выполняет мониторинг вашего сервера MySQL.

Чтобы просмотреть собранные метрики, перейдите в раздел меню [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) и нажмите *Dashboards* рядом с узлом сети.

![](../../../assets/en/manual/guides/mysql_hosts.png){width="600"}

Это действие откроет панель узла сети (настроенную на уровне шаблона) с наиболее важными метриками, собранными с сервера MySQL.

![](../../../assets/en/manual/guides/mysql_dashboard.png){width="600"}

Кроме того, в разделе меню [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) можно нажать [*Latest data*](/manual/web_interface/frontend_sections/monitoring/latest_data), чтобы просмотреть все последние собранные метрики в виде списка.
Обратите внимание, что для элемента данных *MySQL: Calculated value of innodb_log_file_size* отсутствие данных является ожидаемым, поскольку значение будет вычислено на основе данных за последний час.

![](../../../assets/en/manual/guides/mysql_latestdata.png){width="600"}

[comment]: # ({/bdcc4c70-339fa505})

[comment]: # ({4cead10e-91c440fc})
#### Настройка оповещений о проблемах

Zabbix может уведомлять вас о проблемах в вашей инфраструктуре с помощью различных методов.
Это руководство содержит базовые шаги настройки для отправки оповещений по электронной почте.

1\. Перейдите в [*Настройки пользователя → Профиль*](/manual/web_interface/user_profile), откройте вкладку *Media* и [добавьте свой email](/manual/quickstart/login#adding-user).

![](../../../assets/en/manual/quickstart/new_media.png){width="600"}

2\. Следуйте руководству по [получению уведомления о проблеме](/manual/quickstart/notification).

В следующий раз, когда Zabbix обнаружит проблему, вы должны получить оповещение по электронной почте.

[comment]: # ({/4cead10e-91c440fc})

[comment]: # ({77c86049-3e5fc0d5})
#### Проверьте вашу конфигурацию

Чтобы проверить вашу конфигурацию, мы можем имитировать реальную проблему, обновив конфигурацию узла сети в веб-интерфейсе Zabbix.

1\. Откройте конфигурацию узла сети вашего сервера MySQL в Zabbix.

2\. Перейдите на вкладку *Macros* и выберите *Inherited and host macros*.

3\. Нажмите *Change* рядом, например, со [ранее настроенным](#configure-zabbix-frontend) значением макроса {$MYSQL.USER} и задайте другое имя пользователя MySQL.

4\. Нажмите *Update*, чтобы обновить конфигурацию узла сети.

5\. Через несколько мгновений Zabbix обнаружит проблему "MySQL: Service is down", поскольку не сможет подключиться к серверу MySQL.
Проблема появится в [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

![](../../../assets/en/manual/guides/mysql_problem.png){width="600"}

Если оповещения [настроены](#set-up-problem-alerts), вы также получите уведомление о проблеме.

6\. Верните значение макроса к предыдущему значению, чтобы устранить проблему и продолжить мониторинг сервера MySQL.

[comment]: # ({/77c86049-3e5fc0d5})

[comment]: # ({599a98b0-69f193e9})
#### Другие способы мониторинга MySQL

Вместо мониторинга сервера MySQL с помощью агента Zabbix 2 вы также можете использовать агент Zabbix или стандарт Open Database Connectivity (ODBC).
Хотя рекомендуется использовать агент Zabbix 2, могут существовать некоторые варианты настройки, которые не поддерживают агент Zabbix 2 или требуют нестандартного подхода.

Ключевое различие между агентом Zabbix и ODBC заключается в методе сбора данных: агент Zabbix устанавливается непосредственно на сервер MySQL и собирает данные с помощью встроенных функций,
тогда как ODBC использует драйвер ODBC для установления соединения с сервером MySQL и получения данных с помощью SQL-запросов.

Хотя многие шаги настройки похожи на мониторинг сервера MySQL с помощью агента Zabbix 2, есть и некоторые существенные различия — для мониторинга сервера MySQL необходимо настроить агент Zabbix или ODBC.
Следующие инструкции проведут вас через эти **различия**.

[comment]: # ({/599a98b0-69f193e9})

[comment]: # ({c3f2cc9e-c7da6279})
##### Мониторинг MySQL с помощью агента Zabbix

Чтобы отслеживать сервер MySQL с помощью агента Zabbix, необходимо [скачать и установить](https://www.zabbix.com/download) сервер Zabbix, веб-интерфейс Zabbix и агент Zabbix в соответствии с инструкциями для вашей ОС.

После успешной установки необходимых компонентов Zabbix нужно создать пользователя MySQL, как описано в разделе [*Создание пользователя MySQL*](#create-mysql-user).

После создания пользователя MySQL необходимо настроить агент Zabbix так, чтобы он мог устанавливать соединение с сервером MySQL и отслеживать его.
Это включает настройку нескольких [пользовательских параметров](/manual/config/items/userparameters) для выполнения пользовательских проверок агента,
а также предоставление агенту Zabbix необходимых учетных данных для подключения к серверу MySQL от имени [ранее созданного](#create-mysql-user) пользователя "zbx_monitor".

[comment]: # ({/c3f2cc9e-c7da6279})

[comment]: # ({ec14664c-81cd968b})
**Настройка агента Zabbix**

1\. Перейдите в каталог дополнительных конфигураций агента Zabbix.

    cd /usr/local/etc/zabbix/zabbix_agentd.d

::: noteimportant
Каталог дополнительных конфигураций агента Zabbix должен находиться в том же каталоге, что и файл конфигурации вашего агента Zabbix (*zabbix_agentd.conf*).
В зависимости от вашей ОС и установки Zabbix этот каталог может располагаться в другом месте, чем указано в этом руководстве.
Для значений по умолчанию проверьте параметр [`Include`](/manual/appendix/config/zabbix_agentd#include) в файле конфигурации агента Zabbix.
:::

Вместо того чтобы определять все необходимые пользовательские параметры для мониторинга сервера MySQL в файле конфигурации агента Zabbix,
эти параметры будут определены в отдельном файле в каталоге дополнительных конфигураций.

2\. Создайте файл *template_db_mysql.conf* в каталоге дополнительных конфигураций агента Zabbix.

    vi template_db_mysql.conf

3\. Скопируйте содержимое файла [*template_db_mysql.conf*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf?at=refs%2Fheads%2Frelease%2F7.4) (расположенного в репозитории Zabbix) в созданный вами файл *template_db_mysql.conf* и сохраните его.

4\. Перезапустите агент Zabbix, чтобы обновить его конфигурацию.

    systemctl restart zabbix-agent

После того как вы настроите пользовательские параметры агента Zabbix, можно перейти к настройке учетных данных, которые позволят агенту Zabbix получить доступ к серверу MySQL.

[comment]: # ({/ec14664c-81cd968b})

[comment]: # ({49d8d7e7-98d0d0b4})
5\. Перейдите в домашний каталог агента Zabbix (если он не существует в вашей системе, его нужно создать; по умолчанию: */var/lib/zabbix*).

    cd /var/lib/zabbix

6\. Создайте файл *.my.cnf* в домашнем каталоге агента Zabbix.

    vi .my.cnf

7\. Скопируйте следующий содержимое в файл *.my.cnf* (замените *<password>* на пароль пользователя "zbx_monitor").

    [client]
    user='zbx_monitor'
    password='<password>'

[comment]: # ({/49d8d7e7-98d0d0b4})

[comment]: # ({e1d7b01f-3d796e6b})
**Настройте веб-интерфейс Zabbix и проверьте вашу конфигурацию**

Чтобы настроить веб-интерфейс Zabbix, следуйте инструкциям в разделе [*Настройте веб-интерфейс Zabbix*](#configure-zabbix-frontend) со следующими изменениями:

-   В поле *Шаблоны* введите или выберите шаблон "MySQL by Zabbix agent", который будет [связан](/manual/config/templates/linking) с узлом сети.
-   Настройка *Макросов* не требуется.

После настройки веб-интерфейса Zabbix вы можете [просмотреть собранные метрики](#view-collected-metrics) и [настроить оповещения о проблемах](#set-up-problem-alerts).

Чтобы проверить вашу конфигурацию, следуйте инструкциям в разделе [*Проверьте вашу конфигурацию*](#test-your-configuration) со следующими изменениями:

-   В разделе *Унаследованные и макросы узла сети* конфигурации узла сети MySQL server нажмите *Изменить* рядом со значением макроса {$MYSQL.PORT} и задайте другой порт (например, "6033").

![](../../../assets/en/manual/guides/mysql_port.png){width="600"}

[comment]: # ({/e1d7b01f-3d796e6b})

[comment]: # ({b2aad39e-876f1a94})
##### Мониторинг MySQL с помощью ODBC

Чтобы отслеживать сервер MySQL с помощью ODBC, необходимо [скачать и установить](https://www.zabbix.com/download) сервер Zabbix и веб-интерфейс Zabbix.

После успешной установки необходимых компонентов Zabbix нужно создать пользователя MySQL, как описано в разделе [*Создание пользователя MySQL*](#create-mysql-user).

После создания пользователя MySQL необходимо настроить ODBC.
Это включает установку одной из наиболее часто используемых реализаций API ODBC с открытым исходным кодом - [unixODBC](https://www.unixodbc.org/) - и драйвера unixODBC, а также редактирование файла конфигурации драйвера ODBC.

[comment]: # ({/b2aad39e-876f1a94})

[comment]: # ({f1ebeea4-445fc52a})
**Настройка ODBC**

1\. Установите unixODBC. Рекомендуемый способ установки unixODBC — использовать стандартные репозитории пакетов операционной системы Linux.

    apt install unixodbc

2\. Установите драйвер базы данных MariaDB unixODBC. Хотя у вас база данных MySQL, для обеспечения совместимости используется драйвер MariaDB unixODBC.

    apt install odbc-mariadb

3\. Проверьте расположение файлов конфигурации ODBC *odbcinst.ini* и *odbc.ini*.

    odbcinst -j

Результат выполнения этой команды должен быть похож на следующий.

    unixODBC 2.3.9
    DRIVERS............: /etc/odbcinst.ini
    SYSTEM DATA SOURCES: /etc/odbc.ini
    FILE DATA SOURCES..: /etc/ODBCDataSources
    ...

4\. Чтобы настроить драйвер ODBC для мониторинга базы данных MySQL, вам потребуется имя драйвера, которое находится в файле *odbcinst.ini*.
В следующем примере файла *odbcinst.ini* имя драйвера — "MariaDB Unicode".

    [MariaDB Unicode]
    Driver=libmaodbc.so
    Description=MariaDB Connector/ODBC(Unicode)
    Threading=0
    UsageCount=1

5\. Скопируйте следующее содержимое в файл *odbc.ini* (замените *<password>* на пароль пользователя "zbx_monitor").
В этом руководстве в качестве адреса сервера MySQL используется "127.0.0.1" (localhost) для мониторинга сервера MySQL, установленного на той же машине, что и драйвер ODBC.
Обратите внимание на имя источника данных (DSN) "test", которое потребуется при [настройке веб-интерфейса Zabbix](#configure-zabbix-frontend).

    [test]
    Driver=MariaDB Unicode
    Server=127.0.0.1
    User=zbx_monitor
    Password=<password>
    Port=3306
    Database=zabbix

[comment]: # ({/f1ebeea4-445fc52a})

[comment]: # ({f773e20d-062f32d6})
**Настройте веб-интерфейс Zabbix и проверьте вашу конфигурацию**

Чтобы настроить веб-интерфейс Zabbix, следуйте инструкциям в разделе [*Настройка веб-интерфейса Zabbix*](#configure-zabbix-frontend) с учетом следующих изменений:

-   В поле *Шаблоны* введите или выберите шаблон "MySQL by ODBC", который будет [связан](/manual/config/templates/linking) с узлом сети.
-   Настраивать *Интерфейсы* не требуется.
-   Значение макроса {$MYSQL.DSN} в разделе *Унаследованные и макросы узла сети* в конфигурации узла сети MySQL server должно быть установлено в имя DSN из файла *odbc.ini*.

После настройки веб-интерфейса Zabbix вы можете [просмотреть собранные метрики](#view-collected-metrics), [настроить оповещения о проблемах](#set-up-problem-alerts) и [проверить вашу конфигурацию](#test-your-configuration).

[comment]: # ({/f773e20d-062f32d6})

[comment]: # ({0ad07481-123e0265})
#### См. также

-   [Создание элемента данных](/manual/config/items/item) - как начать мониторинг дополнительных метрик.
-   [Эскалации проблем](/manual/config/notifications/action/escalations) - как создавать многошаговые сценарии оповещений
    (например, сначала отправить сообщение системному администратору, а затем, если проблема не будет решена в течение 45 минут, отправить сообщение менеджеру центра обработки данных).
-   [Мониторинг ODBC](/manual/config/items/itemtypes/odbc_checks) - как настроить ODBC в других дистрибутивах Linux и как начать мониторинг дополнительных метрик, связанных с базой данных, с помощью ODBC.
-   Шаблон [*MySQL by Zabbix agent*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent?at=refs%2Fheads%2Frelease%2F7.4) - дополнительная информация о шаблоне *MySQL by Zabbix agent*.
-   Шаблон [*MySQL by Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2?at=refs%2Fheads%2Frelease%2F7.4) - дополнительная информация о шаблоне *MySQL by Zabbix agent 2*.
-   Шаблон [*MySQL by ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc?at=refs%2Fheads%2Frelease%2F7.4) - дополнительная информация о шаблоне *MySQL by ODBC*.

[comment]: # ({/0ad07481-123e0265})
