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 server の IP アドレスを指定します。 このガイドでは、Zabbix server と Zabbix エージェント 2 が同じマシンにインストールされている MySQL server を監視するために、"127.0.0.1"(localhost)を使用します。

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

3. Add をクリックしてホストを追加します。このホストは MySQL server を表します。
収集されたメトリックを表示する
おめでとうございます。これで、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 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 サーバーの監視に必要なすべてのユーザーパラメータを 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 エージェント" を入力または選択します。
- Macros の設定は不要です。
Zabbix Webインターフェースを設定したら、収集されたメトリクスを表示 し、問題アラートを設定 できます。
設定をテストするには、次の調整を加えたうえで、設定をテストする セクションの手順に従います。
- MySQL サーバーホストの設定の Inherited and host macros セクションで、{$MYSQL.PORT} マクロ値の横にある Change をクリックし、別のポート(例: "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 テンプレートに関する追加情報。