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、テーブルからのDELETEなどの権限)。
そのため、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インターフェースでホストを作成します。
- ホスト名 フィールドに、ホスト名を入力します(例: "MySQL server")。
- テンプレート フィールドで、ホストにリンクするテンプレート "MySQL by Zabbix agent 2" を入力または選択します。
- ホストグループ フィールドで、ホストグループを入力または選択します(例: "Databases")。
- インターフェース フィールドで、"Agent" タイプのインターフェースを追加し、MySQL サーバーの IP アドレスを指定します。 このガイドでは、Zabbix サーバーおよび Zabbix エージェント 2 と同じマシンにインストールされた MySQL サーバーを監視するために "127.0.0.1"(localhost)を使用します。

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

3. 追加 をクリックしてホストを追加します。このホストは MySQL サーバーを表します。
収集されたメトリックを表示する
おめでとうございます。ここまでで、Zabbix はすでに MySQL サーバーを監視しています。
収集されたメトリックを表示するには、Monitoring → Hosts メニューセクションに移動し、ホストの横にある Dashboards をクリックします。

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

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

障害アラートの設定
Zabbix は、さまざまな方法を使用してインフラストラクチャの障害を通知できます。
このガイドでは、メールアラートを送信するための基本的な設定手順を説明します。
1. ユーザー設定 → プロファイル に移動し、メディア タブに切り替えて、メールアドレスを追加します。

2. 障害通知の受信 のガイドに従います。
次回、Zabbix が障害を検出すると、メールでアラートを受け取るはずです。
設定をテストする
設定をテストするには、Zabbix Webインターフェースでホスト設定を更新し、実際の障害をシミュレートできます。
1. Zabbixで MySQL サーバーホストの設定を開きます。
2. Macros タブに切り替え、Inherited and host macros を選択します。
3. たとえば、以前に設定した} マクロ値の横にある Change をクリックし、別の MySQL ユーザー名を設定します。
4. Update をクリックしてホスト設定を更新します。
5. 数分後、Zabbix は MySQL サーバーに接続できなくなるため、障害 "MySQL: Service is down" を検出します。 この障害は Monitoring → Problems に表示されます。

アラートが 設定されている 場合は、障害通知も受信します。
6. 障害を解消して MySQL サーバーの監視を続けるには、マクロ値を元の値に戻します。
MySQLを監視するその他の方法
Zabbix エージェント 2 を使用して MySQL サーバーを監視する代わりに、Zabbix エージェントまたは Open Database Connectivity (ODBC) 標準を使用することもできます。 Zabbix エージェント 2 の使用が推奨されますが、Zabbix エージェント 2 をサポートしない構成や、独自の方法が必要な構成もあります。
Zabbix エージェントと ODBC の主な違いはデータ収集方法にあります。Zabbix エージェントは MySQL サーバーに直接インストールされ、組み込み機能を使用してデータを収集します。 一方、ODBC は ODBC ドライバーに依存して MySQL サーバーへの接続を確立し、SQL クエリを使用してデータを取得します。
多くの設定手順は Zabbix エージェント 2 を使用して MySQL サーバーを監視する場合と似ていますが、いくつか重要な違いがあります。MySQL サーバーを監視できるようにするには、Zabbix エージェントまたは ODBC を設定する必要があります。 以下の手順では、これらの違いについて説明します。
Zabbix エージェントで MySQL を監視する
Zabbix エージェントで MySQL サーバーを監視するには、OS の手順に従って ダウンロードしてインストール し、Zabbix サーバー、Zabbix Webインターフェース、および Zabbix エージェントを導入する必要があります。
必要な Zabbix コンポーネントのインストールが正常に完了したら、MySQL ユーザーの作成 セクションで説明されているとおりに MySQL ユーザーを作成する必要があります。
MySQL ユーザーを作成したら、Zabbix エージェントが MySQL サーバーと接続を確立し、監視できるように設定する必要があります。 これには、カスタムのエージェントチェックを実行するための複数の 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 サーバーの監視に必要なすべての user parameters を 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 エージェントの user parameters を設定したら、次に 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サーバーを監視するために、"127.0.0.1"(localhost)をMySQLサーバーアドレスとして使用します。 データソース名(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 テンプレートに関する追加情報。