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

はじめに

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

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

このガイドの対象者

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

前提条件

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

お使いのOSの設定によっては、このガイドの手順が若干異なる場合があります。このガイドは以下の設定に基づいています。

  • Zabbixバージョン:Zabbix 7.0(パッケージからインストール)
  • OSディストリビューション:Ubuntu
  • OSバージョン:22.04(Jammy)
  • Zabbixコンポーネント:サーバー、フロントエンド、エージェント2
  • データベース:MySQL
  • Webサーバー:Apache

MySQL ユーザーの作成

MySQL サーバーを監視するには、Zabbix がサーバーとそのプロセスにアクセスする必要があります。 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 フロントエンドの設定

1. Zabbix フロントエンドにログインします。

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

  • ホスト名 フィールドにホスト名を入力します (例: "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エージェント2プラグイン設定ファイルの 名前付きセッションの接続文字列)を設定します。 このガイドでは、ZabbixサーバーおよびZabbixエージェント2と同じマシンにインストールされているMySQLサーバーを監視するために、デフォルトのデータソース"tcp://localhost:3306"を使用します。
  • {$MYSQL.PASSWORD} - 先ほど作成したMySQLユーザー"zbx_monitor"のパスワードを設定します。
  • {$MYSQL.USER} - 先ほど作成したMySQLユーザー"zbx_monitor"の名前を設定します。

  1. [追加] をクリックしてホストを追加します。このホストがMySQLサーバーになります。

収集されたメトリクスの表示

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

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

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

または、モニタリング → ホスト メニューセクションから、最新データ をクリックすると、収集された最新のメトリックがすべてリストに表示されます。 なお、MySQL: innodb_log_file_size の計算値の項目には、過去1時間のデータから計算されるため、データがないはずです。

問題アラートの設定

Zabbixは、様々な方法でインフラストラクチャの問題を通知できます。

このガイドでは、メールアラートを送信するための基本的な設定手順を説明します。

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

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

次回以降、Zabbixが問題を検出すると、メールでアラートが届くようになります。

設定のテスト

設定をテストするために、Zabbix フロントエンドでホスト設定を更新することで、実際の問題をシミュレートできます。

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

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

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

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

5. しばらくすると、Zabbix は MySQL サーバーに接続できないため、"MySQL: サービスがダウンしています"という問題を検出します。 この問題は 監視 → 問題 に表示されます。

アラートが設定済みの場合は、問題通知も受信します。

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

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

MySQL サーバーを Zabbix エージェント 2 で監視する代わりに、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 フロントエンド、および Zabbix エージェントを ダウンロードしてインストール する必要があります。

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

MySQL ユーザーを作成したら、Zabbix エージェントが MySQL サーバーに接続して監視できるように設定する必要があります。 これには、カスタムエージェントチェックを実行するための複数の ユーザーパラメータ の設定と、以前に作成した"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フロントエンドの設定とテスト

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.iniodbc.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 エージェント - MySQL by Zabbix エージェント テンプレートに関する追加情報
  • テンプレート MySQL by Zabbix エージェント 2 - MySQL by Zabbix エージェント 2 テンプレートに関する追加情報
  • テンプレート MySQL by ODBC - MySQL by ODBC テンプレートに関する追加情報