4 Zabbixエージェント2でMySQLを監視する

はじめに

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

MySQLサーバーを監視するには、いくつかの方法があります: Zabbixエージェント、Zabbixエージェント 2、または Open Database Connectivity(ODBC)標準です。 このガイドでは、主に Zabbixエージェント 2 を使用して MySQLサーバーを監視する方法に焦点を当てています。これは、さまざまな構成においてシームレスに設定できるため、推奨される方法です。 ただし、このページではその他の方法についての手順も案内していますので、要件に最も適したものを自由に選択してください。

このガイドの対象者

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

前提条件

このガイドを進める前に、お使いのOS向けの手順に従って、Zabbixサーバー、Zabbix Webインターフェース、および Zabbixエージェント 2 をダウンロードしてインストールする必要があります。

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

MySQLユーザーの作成

MySQLサーバーを監視するには、Zabbixがそのサーバーおよびそのプロセスにアクセスできる必要があります。
MySQLのインストール環境には、必要なアクセスレベルを持つユーザー(Zabbixのインストール時に作成された「zabbix」ユーザー)がすでに存在しますが、
このユーザーには、単純な監視に必要な範囲を超える権限(データベースのDROP、テーブルからのエントリ削除など)が付与されています。
そのため、MySQLサーバーを監視専用とするMySQLユーザーを作成する必要があります。

1. MySQLクライアントに接続し、「zbx_monitor」ユーザーを作成します(「zbx_monitor」ユーザーの <password> は任意のパスワードに置き換えてください)。
その後、ユーザーに必要な権限を GRANT します。

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;

ユーザーの作成が完了したら、次の手順に進むことができます。

Zabbix Webインターフェースの設定

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

2. Zabbix Webインターフェースでホストを作成します。

  • Host name フィールドに、ホスト名(例: "MySQL server")を入力します。
  • Templates フィールドで、ホストにリンクするテンプレート "MySQL by Zabbix agent 2" を入力または選択します。
  • Host groups フィールドで、ホストグループ(例: "Databases")を入力または選択します。
  • Interfaces フィールドで、タイプ "Agent" のインターフェースを追加し、MySQLサーバーのIPアドレスを指定します。
    このガイドでは、ZabbixサーバーおよびZabbix agent 2と同じマシンにインストールされたMySQLサーバーを監視するために、"127.0.0.1"(localhost)を使用します。

  • Macros タブで、Inherited and host macros に切り替え、以下のマクロを探して、マクロ値の横にある Change をクリックして更新します。
    • {$MYSQL.DSN} - MySQLサーバーのデータソース(MySQL Zabbix agent 2プラグイン設定ファイル内の名前付きセッションの接続文字列)を設定します。
      このガイドでは、ZabbixサーバーおよびZabbix agent 2と同じマシンにインストールされたMySQLサーバーを監視するために、デフォルトのデータソース "tcp://localhost:3306" を使用します。
    • {$MYSQL.PASSWORD} - 以前に作成したMySQLユーザー "zbx_monitor" のパスワードを設定します。
    • {$MYSQL.USER} - 以前に作成したMySQLユーザー "zbx_monitor" の名前を設定します。

3. Add をクリックしてホストを追加します。このホストはMySQLサーバーを表します。

収集したメトリクスの表示

おめでとうございます。この時点で、Zabbix はすでに MySQL サーバーの監視を開始しています。

収集したメトリクスを表示するには、監視 → ホスト メニューセクションに移動し、ホストの横にある ダッシュボード をクリックします。

この操作により、MySQL サーバーから収集された最も重要なメトリクスが表示されるホストダッシュボード(テンプレートレベルで設定)に移動します。

または、監視 → ホスト メニューセクションから、最新データ をクリックして、最新の収集メトリクスを一覧で表示することもできます。
なお、アイテム MySQL: Calculated value of innodb_log_file_size にはデータがないことが想定されます。これは、この値が直近1時間のデータから計算されるためです。

問題アラートの設定

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

1. ユーザー設定 → プロファイルに移動し、メディアタブに切り替えて、メールアドレスを追加します。

2. 問題通知を受信するのガイドに従います。

次回Zabbixが問題を検出したときに、メールでアラートを受信できるようになります。

設定をテストする

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

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

2. マクロタブに切り替え、継承されたホストマクロとホストマクロを選択します。

3. たとえば、以前に設定した} マクロ値の横にある 変更 をクリックし、別のMySQLユーザー名を設定します。

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

5. しばらくすると、ZabbixはMySQLサーバーに接続できなくなるため、「MySQL: Service is down」という問題を検出します。
この問題は監視 → 障害に表示されます。

アラートが設定されている場合は、問題通知も受信します。

6. 問題を解決してMySQLサーバーの監視を継続するには、マクロ値を元の値に戻します。

MySQLを監視するその他の方法

Zabbix agent 2でMySQLサーバーを監視する代わりに、ZabbixエージェントまたはOpen Database Connectivity(ODBC)標準を使用することもできます。 Zabbix agent 2の使用が推奨されますが、環境によってはZabbix agent 2をサポートしていない場合や、カスタムの方法が必要になる場合があります。

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

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

ZabbixエージェントでMySQLを監視する

ZabbixエージェントでMySQLサーバーを監視するには、お使いのOS向けの手順に従って、Zabbixサーバー、Zabbix Webインターフェース、およびZabbixエージェントをダウンロードしてインストールする必要があります。

必要なZabbixコンポーネントのインストールが正常に完了したら、MySQLユーザーの作成セクションで説明されているように、MySQLユーザーを作成する必要があります。

MySQLユーザーを作成した後は、MySQLサーバーへの接続を確立して監視できるように、Zabbixエージェントを設定する必要があります。
これには、カスタムエージェントチェックを実行するための複数のuser parametersの設定と、前の手順で作成した「zbx_monitor」ユーザーとしてMySQLサーバーに接続するために必要な認証情報をZabbixエージェントに提供することが含まれます。

Zabbixエージェントの設定

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

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

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

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

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

vi template_db_mysql.conf

3. Zabbixリポジトリにあるtemplate_db_mysql.confファイルの内容を、作成した template_db_mysql.conf ファイルにコピーして保存します。

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

systemctl restart zabbix-agent

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

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>'

Zabbix Webインターフェースを設定し、設定をテストする

Zabbix Webインターフェースを設定するには、Zabbix Webインターフェースを設定する セクションの手順に従い、以下の調整を行ってください。

  • Templates フィールドで、ホストにリンクされるテンプレート「MySQL by Zabbix agent」を入力または選択します。
  • Macros の設定は不要です。

Zabbix Webインターフェースの設定が完了したら、収集されたメトリクスを表示し、障害アラートを設定できます。

設定をテストするには、設定をテストする セクションの手順に従い、以下の調整を行ってください。

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

ODBCでMySQLを監視する

ODBCを使用してMySQLサーバーを監視するには、ZabbixサーバーとZabbix Webインターフェースをダウンロードしてインストールする必要があります。

必要なZabbixコンポーネントのインストールが正常に完了したら、MySQLユーザーの作成セクションで説明されているように、MySQLユーザーを作成する必要があります。

MySQLユーザーを作成した後は、ODBCを設定する必要があります。
これには、最も一般的に使用されているオープンソースのODBC API実装の1つであるunixODBCとunixODBCドライバーのインストール、およびODBCドライバー設定ファイルの編集が含まれます。

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 Webインターフェースを設定 する際に必要になります。

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

Zabbix Webインターフェースを設定し、設定をテストする

Zabbix Webインターフェースを設定するには、Zabbix Webインターフェースの設定 セクションの手順に従い、以下の調整を行ってください。

  • Templates フィールドで、ホストにリンクされるテンプレート「MySQL by ODBC」を入力または選択します。
  • Interfaces の設定は不要です。
  • MySQLサーバーホスト設定の Inherited and host macros セクションにある {$MYSQL.DSN} マクロの値は、odbc.ini ファイルのDSN名に設定する必要があります。

Zabbix Webインターフェースの設定が完了したら、収集されたメトリクスを表示したり、障害アラートを設定したり、設定をテストしたりできます。

関連項目

  • アイテムの作成 - 追加のメトリクスの監視を開始する方法。
  • 障害のエスカレーション - 複数段階のアラートシナリオを作成する方法 (例: 最初にシステム管理者にメッセージを送信し、その後、障害が45分以内に解決されない場合は、データセンターマネージャーにメッセージを送信します)。
  • ODBC監視 - 他のLinuxディストリビューションでODBCを設定する方法、およびODBCを使用して追加のデータベース関連メトリクスの監視を開始する方法。
  • テンプレート MySQL by Zabbix agent - MySQL by Zabbix agent テンプレートに関する追加情報。
  • テンプレート MySQL by Zabbix agent 2 - MySQL by Zabbix agent 2 テンプレートに関する追加情報。
  • テンプレート MySQL by ODBC - MySQL by ODBC テンプレートに関する追加情報。