4 Zabbixエージェント2でMySQLを監視する
はじめに
このページでは、MySQLサーバーの基本的な監視を開始するために必要な手順を説明します。
MySQLサーバーを監視するには、Zabbixエージェント、Zabbixエージェント2、またはOpen Database Connectivity(ODBC)標準など、いくつかのアプローチがあります。 このガイドの主な焦点は、Zabbixエージェント2を使用したMySQLサーバーの監視にあります。これは、さまざまなセットアップでシームレスに構成できるため、推奨されるアプローチです。 ただし、このページでは他のアプローチについても説明しているので、ご自身の要件に最適なものを自由に選択してください。
このガイドの対象者
このガイドはZabbixの新規ユーザー向けに作成されており、MySQLサーバーの基本的な監視を有効にするために必要な最小限の手順が含まれています。 高度なカスタマイズやより詳細な設定が必要な場合は、Zabbixマニュアルの設定セクションを参照してください。
前提条件
このガイドを進める前に、ダウンロードとインストールの手順に従って、Zabbixサーバー、Zabbix Webインターフェース、Zabbixエージェント2をインストールする必要があります。
ご利用の環境によっては、このガイドの一部の手順が若干異なる場合があります。 このガイドはUbuntu環境を前提としています。
MySQLユーザーの作成
MySQLサーバーを監視するには、ZabbixがMySQLサーバーおよびそのプロセスにアクセスできる必要があります。 MySQLのインストール時にZabbixのインストール時に作成された「zabbix」ユーザーは、必要なレベルのアクセス権をすでに持っていますが、 このユーザーは単純な監視には不要な権限(データベースのDROP、テーブルからのDELETEなど)も持っています。 したがって、MySQLサーバーの監視のみを目的としたMySQLユーザーを作成する必要があります。
1. MySQLクライアントに接続し、「zbx_monitor」ユーザーを作成します(「zbx_monitor」ユーザーの<password>は任意のパスワードに置き換えてください)。 また、GRANTで必要な権限を付与します。
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;
ユーザーが作成できたら、次のステップに進みます。
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)を使用します。

- Macros タブで Inherited and host macros に切り替え、次のマクロを探して、更新するにはマクロ値の横にある Change をクリックします。
- {$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. Add をクリックしてホストを追加します。このホストが MySQL サーバーを表します。
収集されたメトリクスの表示
おめでとうございます!この時点で、ZabbixはすでにMySQLサーバーの監視を開始しています。
収集されたメトリクスを表示するには、監視 → ホストメニューセクションに移動し、ホストの横にあるダッシュボードをクリックします。

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

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

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

2. 障害通知の受信 のガイドに従います。
次回 Zabbix が障害を検出したときに、メールでアラートを受け取れるはずです。
設定をテストする
設定をテストするには、Zabbixフロントエンドでホスト設定を更新して実際の問題をシミュレートできます。
1. ZabbixでMySQLサーバーホストの設定を開きます。
2. マクロタブに切り替え、継承およびホストマクロを選択します。
3. 例えば、前に設定した}マクロ値の横にある変更をクリックし、別のMySQLユーザー名を設定します。
4. 更新をクリックしてホスト設定を更新します。
5. しばらくすると、Zabbixは"MySQL: Service is down"という問題を検出します。これは、MySQLサーバーに接続できなくなるためです。 問題は監視 → 問題に表示されます。

アラートが設定されている場合は、問題の通知も受け取ります。
6. マクロ値を元の値に戻して問題を解決し、MySQLサーバーの監視を続けてください。
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を設定する必要があります。 以下の手順では、これらの違いについて説明します。
ZabbixエージェントでMySQLを監視する
ZabbixエージェントでMySQLサーバーを監視するには、OSの手順に従ってZabbixサーバー、Zabbixフロントエンド、Zabbixエージェントをダウンロードしてインストールする必要があります。
必要なZabbixコンポーネントを正常にインストールしたら、MySQLユーザーの作成セクションで説明されているようにMySQLユーザーを作成する必要があります。
MySQLユーザーを作成したら、ZabbixエージェントがMySQLサーバーへの接続を確立し、監視できるようにZabbixエージェントを設定する必要があります。 これには、カスタムエージェントチェックを実行するための複数のユーザーパラメータの設定や、前述の「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 parameter を 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 parameter を設定したら、次に 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フロントエンドの設定と設定のテスト
Zabbixフロントエンドを設定するには、Zabbixフロントエンドの設定セクションの手順に従い、以下の調整を行ってください。
- テンプレートフィールドで、ホストにリンクされるテンプレート「MySQL by Zabbix agent」を入力または選択します。
- マクロの設定は不要です。
Zabbixフロントエンドの設定が完了したら、収集されたメトリクスの表示や問題アラートの設定ができます。
設定をテストするには、設定のテストセクションの手順に従い、以下の調整を行ってください。
- MySQLサーバーホストの設定の継承されたホストマクロセクションで、{$MYSQL.PORT}マクロ値の横にある変更をクリックし、別のポート(例:「6033」)を設定します。

ODBCでMySQLを監視する
ODBCでMySQLサーバーを監視するには、ZabbixサーバーとZabbixフロントエンドをダウンロードしてインストールする必要があります。
必要な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フロントエンドの設定時に必要になります。
[test]
Driver=MariaDB Unicode
Server=127.0.0.1
User=zbx_monitor
Password=<password>
Port=3306
Database=zabbix
Zabbixフロントエンドの設定と設定のテスト
Zabbixフロントエンドを設定するには、Zabbixフロントエンドの設定セクションの手順に従い、以下の調整を行ってください。
- テンプレートフィールドには、ホストにリンクされるテンプレート「MySQL by ODBC」を入力または選択します。
- インターフェースの設定は不要です。
- MySQLサーバーホストの設定の継承されたホストマクロセクションの{$MYSQL.DSN}マクロ値は、odbc.iniファイルのDSN名に設定する必要があります。
Zabbixフロントエンドの設定が完了したら、収集されたメトリクスの表示、問題アラートの設定、設定のテストができます。
関連項目
- アイテムの作成 - 追加のメトリクスの監視を開始する方法。
- 障害エスカレーション - 複数段階のアラートシナリオを作成する方法 (例: まずシステム管理者にメッセージを送信し、次に、障害が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 テンプレートに関する追加情報。