[comment]: # translation:outdated

[comment]: # ({a313f054-b4128477})
# 4 Zabbixエージェント2でMySQLを監視する

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

[comment]: # ({ad3dab41-2185307b})
#### はじめに

このページでは、MySQLサーバーの基本的な監視を開始するために必要な手順を説明します。

MySQLサーバーを監視するには、Zabbixエージェント、Zabbixエージェント2、またはOpen Database Connectivity（ODBC）標準など、いくつかのアプローチがあります。
このガイドの主な焦点は、Zabbixエージェント2を使用したMySQLサーバーの監視にあります。これは、さまざまなセットアップでシームレスに構成できるため、**推奨される**アプローチです。
ただし、このページでは[他のアプローチ](#other-approaches-to-monitor-mysql)についても説明しているので、ご自身の要件に最適なものを自由に選択してください。

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

[comment]: # ({0cf7feb5-831aae47})
**このガイドの対象者**

このガイドはZabbixの新規ユーザー向けに作成されており、MySQLサーバーの基本的な監視を有効にするために必要な最小限の手順が含まれています。
高度なカスタマイズやより詳細な設定が必要な場合は、Zabbixマニュアルの[設定](/manual/config)セクションを参照してください。

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

[comment]: # ({519621df-2fd1df9d})
**前提条件**

このガイドを進める前に、[ダウンロードとインストール](https://www.zabbix.com/download)の手順に従って、Zabbixサーバー、Zabbix Webインターフェース、Zabbixエージェント2をインストールする必要があります。

ご利用の環境によっては、このガイドの一部の手順が若干異なる場合があります。
このガイドはUbuntu環境を前提としています。

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

[comment]: # ({8ae78277-ae0ef261})
#### MySQLユーザーの作成

MySQLサーバーを監視するには、ZabbixがMySQLサーバーおよびそのプロセスにアクセスできる必要があります。
MySQLのインストール時にZabbixのインストール時に作成された「zabbix」ユーザーは、必要なレベルのアクセス権をすでに持っていますが、
このユーザーは単純な監視には不要な権限（データベースのDROP、テーブルからのDELETEなど）も持っています。
したがって、MySQLサーバーの*監視のみ*を目的としたMySQLユーザーを作成する必要があります。

1\. MySQLクライアントに接続し、「zbx_monitor」ユーザーを作成します（「zbx_monitor」ユーザーの*<password>*は任意のパスワードに置き換えてください）。
また、[GRANT](https://dev.mysql.com/doc/refman/8.0/en/grant.html)で必要な権限を付与します。

    mysql -u root -p
    # パスワードを入力:

    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]: # ({19ca60f6-e6607c21})
#### Zabbix Webインターフェースの設定

1\. Zabbix Webインターフェースにログインします。

2\. Zabbix Webインターフェースで[ホストを作成](/manual/config/hosts/host)します。

-   *ホスト名* フィールドに、ホスト名を入力します（例: "MySQL server"）。
-   *テンプレート* フィールドに、ホストに[リンク](/manual/config/templates/linking)するテンプレート "MySQL by Zabbix agent 2" を入力または選択します。
-   *ホストグループ* フィールドに、ホストグループを入力または選択します（例: "Databases"）。
-   *インターフェース* フィールドで、"Agent" タイプのインターフェースを追加し、MySQL サーバーの IP アドレスを指定します。
    このガイドでは、Zabbix サーバーと Zabbix エージェント 2 が同じマシンにインストールされている MySQL サーバーを監視するために "127.0.0.1"（localhost）を使用します。

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

-   *Macros* タブで *Inherited and host macros* に切り替え、次のマクロを探して、値を更新するにはマクロ値の横にある *Change* をクリックします。
    -   {$MYSQL.DSN} - MySQL サーバーのデータソースを設定します（MySQL Zabbix agent 2 プラグイン設定ファイルにある[名前付きセッションの接続文字列](/manual/concepts/agent2/agent2_params_plugin/mysql_plugin#parameters)）。
        このガイドでは、Zabbix サーバーと Zabbix エージェント 2 が同じマシンにインストールされている MySQL サーバーを監視するために、既定のデータソース "tcp://localhost:3306" を使用します。
    -   {$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 サーバーを表します。

[comment]: # ({/19ca60f6-e6607c21})

[comment]: # ({4a48827a-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* アイテムは、直近 1 時間のデータから値が計算されるため、データが表示されないことが想定されています。

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

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

[comment]: # ({12e704dc-91c440fc})
#### 問題アラートの設定

Zabbixは、さまざまな方法でインフラストラクチャの問題について通知できます。
このガイドでは、メールアラートを送信するための基本的な設定手順を説明します。

1\. [*ユーザー設定 → プロファイル*](/manual/web_interface/user_profile)に移動し、*メディア*タブに切り替えて[メールアドレスを追加](/manual/installation/quick_guides/basic_config/login#adding-user)します。

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

2\. [問題通知の受信](/manual/installation/quick_guides/basic_config/notification)のガイドに従ってください。

次回、Zabbixが問題を検出したときに、メールでアラートを受信できるはずです。

[comment]: # ({/12e704dc-91c440fc})

[comment]: # ({29aeaf6c-3e5fc0d5})
#### 設定をテストする

設定をテストするには、Zabbix Webインターフェースでホスト設定を更新し、実際の問題をシミュレートできます。

1\. Zabbixで MySQL サーバーのホスト設定を開きます。

2\. *Macros* タブに切り替え、*Inherited and host macros* を選択します。

3\. たとえば、[以前に設定した](#configure-zabbix-frontend) {$MYSQL.USER} マクロ値の横にある *Change* をクリックし、別の MySQL ユーザー名を設定します。

4\. *Update* をクリックしてホスト設定を更新します。

5\. しばらくすると、Zabbix は MySQL サーバーに接続できなくなるため、"MySQL: Service is down" という問題を検出します。
この問題は [*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]: # ({/29aeaf6c-3e5fc0d5})

[comment]: # ({599a98b0-69f193e9})
#### MySQLを監視する他のアプローチ

Zabbix agent 2でMySQLサーバーを監視する代わりに、Zabbix agentやOpen Database Connectivity（ODBC）標準を使用することもできます。
Zabbix agent 2の使用が推奨されていますが、Zabbix agent 2をサポートしていない、またはカスタムアプローチが必要なセットアップもあるかもしれません。

Zabbix agentとODBCの主な違いはデータ収集方法にあります。Zabbix agentはMySQLサーバーに直接インストールされ、組み込み機能を使用してデータを収集しますが、
ODBCはODBCドライバーを使用してMySQLサーバーへの接続を確立し、SQLクエリを使用してデータを取得します。

多くの設定手順はZabbix agent 2でMySQLサーバーを監視する場合と似ていますが、いくつか重要な違いがあります。MySQLサーバーを監視できるようにZabbix agentまたはODBCを設定する必要があります。
以下の手順では、これらの**違い**について説明します。

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

[comment]: # ({c3f2cc9e-c7da6279})
##### ZabbixエージェントでMySQLを監視する

ZabbixエージェントでMySQLサーバーを監視するには、OSの手順に従って[Zabbixサーバー、Zabbixフロントエンド、Zabbixエージェントをダウンロードしてインストール](https://www.zabbix.com/download)する必要があります。

必要なZabbixコンポーネントを正常にインストールしたら、[*MySQLユーザーの作成*](#create-mysql-user)セクションで説明されているようにMySQLユーザーを作成する必要があります。

MySQLユーザーを作成したら、ZabbixエージェントがMySQLサーバーへの接続を確立し、監視できるようにZabbixエージェントを設定する必要があります。
これには、カスタムエージェントチェックを実行するための複数の[ユーザーパラメータ](/manual/config/items/userparameters)の設定や、[前述の](#create-mysql-user)「zbx_monitor」ユーザーとしてMySQLサーバーに接続するために必要な認証情報をZabbixエージェントに提供することが含まれます。

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

[comment]: # ({9ca73806-81cd968b})
**Zabbix エージェントの設定**

1\. Zabbix エージェントの追加設定ディレクトリに移動します。

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

::: noteimportant
Zabbix エージェントの追加設定ディレクトリは、Zabbix エージェントの設定ファイル (*zabbix_agentd.conf*) と同じディレクトリに配置されている必要があります。
OS や Zabbix のインストール方法によっては、このディレクトリは本ガイドで示した場所とは異なる場合があります。
デフォルトの場所については、Zabbix エージェントの設定ファイル内の [`Include`](/manual/concepts/agent/agentd_params#include) パラメータを確認してください。
:::

MySQL サーバーの監視に必要なすべてのユーザーパラメータを Zabbix エージェントの設定ファイルで定義する代わりに、
これらのパラメータは追加設定ディレクトリ内の別ファイルで定義します。

2\. Zabbix エージェントの追加設定ディレクトリに *template_db_mysql.conf* ファイルを作成します。

    vi template_db_mysql.conf

3\. Zabbix リポジトリにある [*template_db_mysql.conf*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf) ファイルの内容を、作成した *template_db_mysql.conf* ファイルにコピーして保存します。

4\. 設定を更新するため、Zabbix エージェントを再起動します。

    systemctl restart zabbix-agent

Zabbix エージェントのユーザーパラメータを設定したら、次に Zabbix エージェントが MySQL サーバーへアクセスするための認証情報を設定します。

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

[comment]: # ({49d8d7e7-98d0d0b4})
5\. Zabbixエージェントのホームディレクトリに移動します（システムに存在しない場合は作成する必要があります。デフォルト：*/var/lib/zabbix*）。

    cd /var/lib/zabbix

6\. Zabbixエージェントのホームディレクトリに*.my.cnf*ファイルを作成します。

    vi .my.cnf

7\. 以下の内容を*.my.cnf*ファイルにコピーします（*<password>*は"zbx_monitor"ユーザーのパスワードに置き換えてください）。

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

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

[comment]: # ({c6aea30a-3d796e6b})
**Zabbix Webインターフェースを設定し、設定をテストする**

Zabbix Webインターフェースを設定するには、次の調整を加えたうえで、[*Zabbix Webインターフェースを設定する*](#configure-zabbix-frontend) セクションの手順に従います。

-   *Templates* フィールドで、ホストに [リンク](/manual/config/templates/linking) されるテンプレート "MySQL by Zabbix エージェント" を入力または選択します。
-   *Macros* の設定は不要です。

Zabbix Webインターフェースを設定したら、[収集されたメトリクスを表示](#view-collected-metrics) し、[問題アラートを設定](#set-up-problem-alerts) できます。

設定をテストするには、次の調整を加えたうえで、[*設定をテストする*](#test-your-configuration) セクションの手順に従います。

-   MySQL サーバーホストの設定の *Inherited and host macros* セクションで、{$MYSQL.PORT} マクロ値の横にある *Change* をクリックし、別のポート（例: "6033"）を設定します。

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

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

[comment]: # ({b2aad39e-876f1a94})
##### ODBCでMySQLを監視する

ODBCでMySQLサーバーを監視するには、[ZabbixサーバーとZabbixフロントエンドをダウンロードしてインストール](https://www.zabbix.com/download)する必要があります。

必要なZabbixコンポーネントを正常にインストールしたら、[*MySQLユーザーの作成*](#create-mysql-user)セクションで説明されているようにMySQLユーザーを作成する必要があります。

MySQLユーザーを作成したら、ODBCをセットアップする必要があります。
これには、最も一般的に使用されているオープンソースのODBC API実装の1つである[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\. MySQLデータベースの監視用にODBCドライバを設定するには、*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」ユーザーのパスワードに置き換えてください）。
このガイドでは、ODBCドライバと同じマシンにインストールされたMySQLサーバーを監視するために、MySQLサーバーアドレスとして「127.0.0.1」（localhost）を使用します。
データソース名（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)セクションの手順に従い、以下の調整を行ってください。

- *テンプレート*フィールドには、ホストに[リンク](/manual/config/templates/linking)されるテンプレート「MySQL by ODBC」を入力または選択します。
- *インターフェース*の設定は不要です。
- MySQLサーバーホストの設定の*継承されたホストマクロ*セクションの{$MYSQL.DSN}マクロ値は、*odbc.ini*ファイルのDSN名に設定する必要があります。

Zabbixフロントエンドの設定が完了したら、[収集されたメトリクスの表示](#view-collected-metrics)、[問題アラートの設定](#set-up-problem-alerts)、[設定のテスト](#test-your-configuration)ができます。

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

[comment]: # ({c2903286-123e0265})
#### こちらもご参照ください

-   [アイテムの作成](/manual/config/items/item) - 追加のメトリクスの監視を開始する方法。
-   [問題のエスカレーション](/manual/config/notifications/action/escalations) - 複数ステップのアラートシナリオを作成する方法
    (例: 最初にシステム管理者にメッセージを送信し、45分以内に問題が解決しない場合はデータセンターマネージャーにメッセージを送信する)。
-   [ODBC監視](/manual/config/items/itemtypes/odbc_checks) - 他のLinuxディストリビューションでODBCをセットアップする方法、およびODBCで追加のデータベース関連メトリクスの監視を開始する方法。
-   テンプレート[*MySQL by Zabbix agent*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent) - *MySQL by Zabbix agent* テンプレートに関する追加情報。
-   テンプレート[*MySQL by Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2) - *MySQL by Zabbix agent 2* テンプレートに関する追加情報。
-   テンプレート[*MySQL by ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc) - *MySQL by ODBC* テンプレートに関する追加情報。

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