[comment]: # ({a313f054-b4128477})
# 4. Monitor MySQL with Zabbix agent 2

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

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

Ta strona przeprowadzi Cię przez kroki wymagane do rozpoczęcia podstawowego monitorowania serwera MySQL.

Aby monitorować serwer MySQL, dostępnych jest kilka podejść: Zabbix agent, Zabbix agent 2 lub standard Open Database Connectivity (ODBC).
Głównym celem tego przewodnika jest monitorowanie serwera MySQL za pomocą Zabbix agent 2, co jest podejściem **zalecanym** ze względu na jego bezproblemową konfigurację w różnych środowiskach.
Jednak ta strona zawiera również instrukcje dotyczące [innych podejść](#other-approaches-to-monitor-mysql), więc możesz wybrać to, które najlepiej odpowiada Twoim wymaganiom.

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

[comment]: # ({0cf7feb5-831aae47})
**Dla kogo jest ten przewodnik**

Ten przewodnik jest przeznaczony dla nowych użytkowników Zabbix i zawiera minimalny zestaw kroków wymaganych do włączenia podstawowego monitorowania serwera MySQL.
Jeśli szukasz opcji zaawansowanego dostosowywania lub potrzebujesz bardziej zaawansowanej konfiguracji, zobacz sekcję [Konfiguracja](/manual/config) w podręczniku Zabbix.

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

[comment]: # ({519621df-2fd1df9d})
**Wymagania wstępne**

Przed przystąpieniem do tego przewodnika należy [pobrać i zainstalować](https://www.zabbix.com/download) serwer Zabbix, frontend Zabbix oraz agent Zabbix 2 zgodnie z instrukcjami dla używanego systemu operacyjnego.

W zależności od środowiska niektóre kroki opisane w tym przewodniku mogą się nieznacznie różnić.
Ten przewodnik opiera się na środowisku działającym pod kontrolą Ubuntu.

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

[comment]: # ({8ae78277-ae0ef261})
#### Utwórz użytkownika MySQL

Aby monitorować serwer MySQL, Zabbix wymaga dostępu do niego oraz do jego procesów.
Twoja instalacja MySQL ma już użytkownika z wymaganym poziomem dostępu (użytkownika „zabbix”, który został utworzony podczas instalacji Zabbix),
jednak ten użytkownik ma więcej uprawnień, niż jest to konieczne do prostego monitorowania (uprawnienia do DROP baz danych, DELETE wpisów z tabel itp.).
Dlatego należy utworzyć użytkownika MySQL przeznaczonego *wyłącznie* do monitorowania serwera MySQL.

1\. Połącz się z klientem MySQL, utwórz użytkownika „zbx_monitor” (zastąp *<password>* dla użytkownika „zbx_monitor” wybranym przez siebie hasłem)
i przyznaj użytkownikowi niezbędne uprawnienia za pomocą [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;

Po utworzeniu użytkownika możesz przejść do następnego kroku.

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

[comment]: # ({7d9d17aa-e6607c21})
#### Skonfiguruj frontend Zabbix

1\. Zaloguj się do frontend Zabbix.

2\. [Utwórz host](/manual/config/hosts/host) w interfejsie web Zabbix:

-   W polu *Host name* wpisz nazwę hosta (np. "MySQL server").
-   W polu *Templates* wpisz lub wybierz szablon "MySQL by Zabbix agent 2", który zostanie [powiązany](/manual/config/templates/linking) z hostem.
-   W polu *Host groups* wpisz lub wybierz grupę hostów (np. "Databases").
-   W polu *Interfaces* dodaj interfejs typu "Agent" i podaj adres IP serwera MySQL.
    W tym przewodniku użyto "127.0.0.1" (localhost) do monitorowania serwera MySQL, który jest zainstalowany na tym samym komputerze co serwer Zabbix i agent Zabbix agent 2.

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

-   Na karcie *Macros* przejdź do *Inherited and host macros*, znajdź następujące makra i kliknij *Change* obok wartości makra, aby ją zaktualizować:
    -   {$MYSQL.DSN} - ustaw źródło danych serwera MySQL (ciąg połączenia nazwanej sesji](/manual/appendix/config/zabbix_agent2_plugins/mysql_plugin#parameters) z pliku konfiguracyjnego wtyczki MySQL dla Zabbix agent 2).
        W tym przewodniku użyto domyślnego źródła danych "tcp://localhost:3306" do monitorowania serwera MySQL, który jest zainstalowany na tym samym komputerze co serwer Zabbix i agent Zabbix agent 2.
    -   {$MYSQL.PASSWORD} - ustaw hasło wcześniej [utworzonego użytkownika MySQL](#create-mysql-user) "zbx_monitor".
    -   {$MYSQL.USER} - ustaw nazwę wcześniej [utworzonego użytkownika MySQL](#create-mysql-user) "zbx_monitor".

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

3\. Kliknij *Add*, aby dodać host. Ten host będzie reprezentował serwer MySQL.

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

[comment]: # ({bdcc4c70-339fa505})
#### Wyświetlanie zebranych metryk

Gratulacje! Na tym etapie Zabbix monitoruje już Twój serwer MySQL.

Aby wyświetlić zebrane metryki, przejdź do sekcji menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) i kliknij *Dashboards* obok hosta.

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

Ta czynność przeniesie Cię do pulpitu hosta (skonfigurowanego na poziomie szablonu) z najważniejszymi metrykami zebranymi z serwera MySQL.

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

Alternatywnie, w sekcji menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) możesz kliknąć [*Latest data*](/manual/web_interface/frontend_sections/monitoring/latest_data), aby wyświetlić wszystkie najnowsze zebrane metryki w formie listy.
Zwróć uwagę, że pozycja *MySQL: Calculated value of innodb_log_file_size* zgodnie z oczekiwaniami nie będzie miała danych, ponieważ wartość zostanie obliczona na podstawie danych z ostatniej godziny.

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

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

[comment]: # ({4cead10e-91c440fc})
#### Skonfiguruj alerty o problemach

Zabbix może powiadamiać o problemach z infrastrukturą za pomocą różnych metod.
Ten przewodnik zawiera podstawowe kroki konfiguracji wysyłania alertów e-mail.

1\. Przejdź do [*Ustawienia użytkownika → Profil*](/manual/web_interface/user_profile), przełącz się na kartę *Media* i [dodaj swój adres e-mail](/manual/quickstart/login#adding-user).

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

2\. Postępuj zgodnie z instrukcjami w sekcji [Odbieranie powiadomienia o problemie](/manual/quickstart/notification).

Następnym razem, gdy Zabbix wykryje problem, powinieneś otrzymać alert e-mail.

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

[comment]: # ({77c86049-3e5fc0d5})
#### Przetestuj swoją konfigurację

Aby przetestować swoją konfigurację, możemy zasymulować rzeczywisty problem, aktualizując konfigurację hosta w Zabbix frontend.

1\. Otwórz konfigurację swojego hosta serwera MySQL w Zabbix.

2\. Przejdź do zakładki *Macros* i wybierz *Inherited and host macros*.

3\. Kliknij *Change* obok, na przykład, wcześniej [skonfigurowanej](#configure-zabbix-frontend) wartości makra {$MYSQL.USER} i ustaw inną nazwę użytkownika MySQL.

4\. Kliknij *Update*, aby zaktualizować konfigurację hosta.

5\. Za kilka chwil Zabbix wykryje problem „MySQL: Service is down”, ponieważ nie będzie mógł połączyć się z serwerem MySQL.
Problem pojawi się w [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

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

Jeśli alerty są [skonfigurowane](#set-up-problem-alerts), otrzymasz również powiadomienie o problemie.

6\. Zmień wartość makra z powrotem na poprzednią, aby rozwiązać problem i kontynuować monitorowanie serwera MySQL.

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

[comment]: # ({599a98b0-69f193e9})
#### Inne podejścia do monitorowania MySQL

Zamiast monitorować serwer MySQL za pomocą Zabbix agent 2, można również użyć Zabbix agent lub standardu Open Database Connectivity (ODBC).
Chociaż zalecane jest używanie Zabbix agent 2, mogą istnieć środowiska, które nie obsługują Zabbix agent 2 lub wymagają niestandardowego podejścia.

Kluczowa różnica między Zabbix agent a ODBC polega na metodzie zbierania danych — Zabbix agent jest instalowany bezpośrednio na serwerze MySQL i zbiera dane przy użyciu wbudowanej funkcjonalności,
natomiast ODBC opiera się na sterowniku ODBC, aby nawiązać połączenie z serwerem MySQL i pobierać dane za pomocą zapytań SQL.

Chociaż wiele kroków konfiguracji jest podobnych do monitorowania serwera MySQL za pomocą Zabbix agent 2, istnieją pewne istotne różnice — należy skonfigurować Zabbix agent lub ODBC, aby możliwe było monitorowanie serwera MySQL.
Poniższe instrukcje przeprowadzą Cię przez te **różnice**.

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

[comment]: # ({c3f2cc9e-c7da6279})
##### Monitorowanie MySQL za pomocą agent Zabbix

Aby monitorować serwer MySQL za pomocą agent Zabbix, należy [pobrać i zainstalować](https://www.zabbix.com/download) serwer Zabbix, frontend Zabbix oraz agent Zabbix zgodnie z instrukcjami dla używanego systemu operacyjnego.

Po pomyślnym zainstalowaniu wymaganych komponentów Zabbix należy utworzyć użytkownika MySQL zgodnie z opisem w sekcji [*Tworzenie użytkownika MySQL*](#create-mysql-user).

Po utworzeniu użytkownika MySQL należy skonfigurować agent Zabbix tak, aby mógł nawiązać połączenie z serwerem MySQL i go monitorować.
Obejmuje to skonfigurowanie wielu [parametrów użytkownika](/manual/config/items/userparameters) do wykonywania niestandardowych kontroli agent,
a także dostarczenie agent Zabbix niezbędnych poświadczeń do łączenia się z serwerem MySQL jako wcześniej utworzony użytkownik „zbx_monitor”.

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

[comment]: # ({ec14664c-81cd968b})
**Konfiguracja Zabbix agent**

1\. Przejdź do katalogu dodatkowych konfiguracji Zabbix agent.

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

::: noteimportant
Katalog dodatkowych konfiguracji Zabbix agent powinien znajdować się w tym samym katalogu co plik konfiguracji Zabbix agent (*zabbix_agentd.conf*).
W zależności od systemu operacyjnego i instalacji Zabbix, katalog ten może znajdować się w innym miejscu niż podano w tym przewodniku.
Aby sprawdzić domyślne lokalizacje, zobacz parametr [`Include`](/manual/appendix/config/zabbix_agentd#include) w pliku konfiguracji Zabbix agent.
:::

Zamiast definiować w pliku konfiguracji Zabbix agent wszystkie niezbędne parametry użytkownika do monitorowania serwera MySQL,
parametry te zostaną zdefiniowane w osobnym pliku w katalogu dodatkowych konfiguracji.

2\. Utwórz plik *template_db_mysql.conf* w katalogu dodatkowych konfiguracji Zabbix agent.

    vi template_db_mysql.conf

3\. Skopiuj zawartość pliku [*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) (znajdującego się w repozytorium Zabbix) do utworzonego pliku *template_db_mysql.conf* i zapisz go.

4\. Uruchom ponownie Zabbix agent, aby zaktualizować jego konfigurację.

    systemctl restart zabbix-agent

Po skonfigurowaniu parametrów użytkownika Zabbix agent możesz przejść do konfiguracji poświadczeń, które umożliwią Zabbix agentowi dostęp do serwera MySQL.

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

[comment]: # ({49d8d7e7-98d0d0b4})
5\. Przejdź do katalogu domowego agenta Zabbix (jeśli nie istnieje w systemie, należy go utworzyć; domyślnie: */var/lib/zabbix*).

    cd /var/lib/zabbix

6\. Utwórz plik *.my.cnf* w katalogu domowym agenta Zabbix.

    vi .my.cnf

7\. Skopiuj poniższą zawartość do pliku *.my.cnf* (zastąp *<password>* hasłem użytkownika „zbx_monitor”).

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

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

[comment]: # ({e1d7b01f-3d796e6b})
**Skonfiguruj frontend Zabbix i przetestuj swoją konfigurację**

Aby skonfigurować frontend Zabbix, postępuj zgodnie z instrukcjami w sekcji [*Skonfiguruj frontend Zabbix*](#configure-zabbix-frontend), wprowadzając następujące zmiany:

-   W polu *Templates* wpisz lub wybierz szablon „MySQL by Zabbix agent”, który zostanie [podlinkowany](/manual/config/templates/linking) do hosta.
-   Konfiguracja *Macros* nie jest wymagana.

Po skonfigurowaniu frontendu Zabbix możesz [wyświetlić zebrane metryki](#view-collected-metrics) i [skonfigurować alerty problemów](#set-up-problem-alerts).

Aby przetestować swoją konfigurację, postępuj zgodnie z instrukcjami w sekcji [*Przetestuj swoją konfigurację*](#test-your-configuration), wprowadzając następujące zmiany:

-   W sekcji *Inherited and host macros* konfiguracji hosta serwera MySQL kliknij *Change* obok wartości makra {$MYSQL.PORT} i ustaw inny port (np. „6033”).

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

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

[comment]: # ({b2aad39e-876f1a94})
##### Monitorowanie MySQL za pomocą ODBC

Aby monitorować serwer MySQL za pomocą ODBC, należy [pobrać i zainstalować](https://www.zabbix.com/download) serwer Zabbix oraz frontend Zabbix.

Po pomyślnym zainstalowaniu wymaganych komponentów Zabbix należy utworzyć użytkownika MySQL zgodnie z opisem w sekcji [*Tworzenie użytkownika MySQL*](#create-mysql-user).

Po utworzeniu użytkownika MySQL należy skonfigurować ODBC.
Obejmuje to instalację jednej z najczęściej używanych implementacji API ODBC typu open source — [unixODBC](https://www.unixodbc.org/) — oraz sterownika unixODBC, a także edycję pliku konfiguracyjnego sterownika ODBC.

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

[comment]: # ({f1ebeea4-445fc52a})
**Konfiguracja ODBC**

1\. Zainstaluj unixODBC. Zalecanym sposobem instalacji unixODBC jest użycie domyślnych repozytoriów pakietów systemu operacyjnego Linux.

    apt install unixodbc

2\. Zainstaluj sterownik bazy danych MariaDB unixODBC. Mimo że używasz bazy danych MySQL, sterownik MariaDB unixODBC jest używany ze względu na kwestie kompatybilności.

    apt install odbc-mariadb

3\. Sprawdź lokalizację plików konfiguracyjnych ODBC *odbcinst.ini* i *odbc.ini*.

    odbcinst -j

Wynik wykonania tego polecenia powinien być podobny do poniższego.

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

4\. Aby skonfigurować sterownik ODBC do monitorowania bazy danych MySQL, potrzebujesz nazwy sterownika, która znajduje się w pliku *odbcinst.ini*.
W poniższym przykładzie pliku *odbcinst.ini* nazwa sterownika to "MariaDB Unicode".

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

5\. Skopiuj poniższą zawartość do pliku *odbc.ini* (zastąp *<password>* hasłem użytkownika "zbx_monitor").
Ten przewodnik używa adresu "127.0.0.1" (localhost) jako adresu serwera MySQL do monitorowania serwera MySQL zainstalowanego na tej samej maszynie co sterownik ODBC.
Zwróć uwagę na nazwę źródła danych (DSN) "test", która będzie wymagana podczas [konfiguracji frontend 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})
**Skonfiguruj frontend Zabbix i przetestuj swoją konfigurację**

Aby skonfigurować frontend Zabbix, postępuj zgodnie z instrukcjami w sekcji [*Skonfiguruj frontend Zabbix*](#configure-zabbix-frontend), wprowadzając następujące zmiany:

-   W polu *Templates* wpisz lub wybierz szablon „MySQL by ODBC”, który zostanie [podłączony](/manual/config/templates/linking) do hosta.
-   Konfigurowanie *Interfaces* nie jest wymagane.
-   Wartość makra {$MYSQL.DSN} w sekcji *Inherited and host macros* konfiguracji hosta serwera MySQL powinna być ustawiona na nazwę DSN z pliku *odbc.ini*.

Po skonfigurowaniu frontend Zabbix możesz [wyświetlić zebrane metryki](#view-collected-metrics), [skonfigurować alerty problemów](#set-up-problem-alerts) oraz [przetestować swoją konfigurację](#test-your-configuration).

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

[comment]: # ({0ad07481-123e0265})
#### Zobacz także

-   [Tworzenie pozycji](/manual/config/items/item) - jak rozpocząć monitorowanie dodatkowych metryk.
-   [Eskalacje problemów](/manual/config/notifications/action/escalations) - jak tworzyć wieloetapowe scenariusze alertów
    (np. najpierw wysłać wiadomość do administratora systemu, a następnie, jeśli problem nie zostanie rozwiązany w ciągu 45 minut, wysłać wiadomość do kierownika centrum danych).
-   [Monitorowanie ODBC](/manual/config/items/itemtypes/odbc_checks) - jak skonfigurować ODBC w innych dystrybucjach Linuksa oraz jak rozpocząć monitorowanie dodatkowych metryk związanych z bazą danych za pomocą ODBC.
-   Szablon [*MySQL by Zabbix agent*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent?at=refs%2Fheads%2Frelease%2F7.4) - dodatkowe informacje o szablonie *MySQL by Zabbix agent*.
-   Szablon [*MySQL by Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2?at=refs%2Fheads%2Frelease%2F7.4) - dodatkowe informacje o szablonie *MySQL by Zabbix agent 2*.
-   Szablon [*MySQL by ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc?at=refs%2Fheads%2Frelease%2F7.4) - dodatkowe informacje o szablonie *MySQL by ODBC*.

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