1 Zabbixエージェントの拡張

このセクションでは、ユーザーパラメータを使用してZabbixエージェントの機能を拡張する手順を説明します。

以下の例では、MySQLサーバーによって実行されたステートメント数を取得します。 この手順は、ZabbixエージェントとZabbixエージェント2の両方に適用されます。

この例では、ユーザーパラメータの動作を説明します。 本番環境でMySQLを監視する場合は、ユーザーパラメータを必要としない、あらかじめ定義されたMySQLテンプレートの使用を検討してください。

ステップ1: MySQLへのアクセスを準備する

エージェントは、オペレーティングシステムの zabbix ユーザーとして実行されます。 MySQLの root アカウントは使用しないでください。ソケットベースの認証が使用されている場合があり、エージェントが接続できなくなる可能性があります。 代わりに、専用のMySQLユーザーを作成します。

CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';

認証情報は、zabbix ユーザーだけが読み取れるファイルに保存します。たとえば、/etc/zabbix/mysql_monitor.cnf です(パスはオペレーティングシステムとZabbixのインストール方法によって異なります)。

[client]
user=zbx_monitor
password=<strong password>

ファイルの所有者と権限を設定します。

sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf

~/.my.cnf に依存するのではなく、--defaults-extra-file を使用してこのファイルを明示的に指定します。--defaults-extra-file は、MySQLクライアントに渡す最初のオプションでなければなりません。これは、デーモンの HOME 環境変数が設定されていないか、想定とは異なる値になっている可能性があるためです。 MySQLがデフォルト以外のソケットパスを使用している場合は、同じファイルに socket= 行を追加します。

ステップ 2: コマンドを記述する

必要なパラメータを取得するカスタムスクリプトまたはコマンドを記述し、エージェントデーモンと同じ条件で動作することを確認します。

次のコマンドは、MySQLサーバーによって実行されたステートメント数を返します。

/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

zabbix ユーザーとしてコマンドをテストできます。単一の数値が出力されるはずです。

sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"

ステップ3: Zabbixエージェントの設定にコマンドを追加する

メインのエージェント設定ファイル(zabbix_agentd.confまたはzabbix_agent2.conf)を編集する代わりに、Includeパラメータで指定されたディレクトリに個別のファイルを作成します。 個別のファイルは管理しやすく、パッケージのアップグレードによる影響も受けにくくなります。

例えば、次の内容で/etc/zabbix/zabbix_agentd.d/mysql.conf(Zabbixエージェント2の場合は/etc/zabbix/zabbix_agent2.d/mysql.conf)を作成します。

UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

mysql.questionsは一意のアイテムキーです。 エージェント設定内で一意である必要があります。

-tフラグを付けてZabbixエージェントを実行すると、パラメータをテストできます。 テストはzabbixユーザーとして実行し、設定ファイルがデフォルトの場所にない場合は、そのファイルを指定します。

Zabbixエージェントの場合:

sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions

Zabbixエージェント2の場合:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions

期待される出力には、次の例のように数値が含まれます。

mysql.questions                               [t|4567]

手順 4: ユーザーパラメータを再読み込みしてテストする

次のコマンドを実行して、設定ファイルからユーザーパラメータを再読み込みします。

Zabbix エージェントの場合:

sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload

Zabbix エージェント 2 の場合:

sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload

コマンドは root またはエージェントを実行しているオペレーティングシステムユーザーとして実行します。

または、エージェントを再起動して設定の変更を適用することもできます。

実行中のエージェントに対して、zabbix_get ユーティリティを使用してパラメータをテストできます。たとえば、Zabbix サーバーから次のコマンドを実行します。

zabbix_get -s <IP address> -k mysql.questions

ここで、<IP address> は、zabbix_get が接続するエージェント実行ホストの IP アドレスです。 zabbix_get を実行するホストの IP アドレスは、エージェントの Server パラメータに記載されている必要があります。

このテストを機能させるには、エージェントがパッシブチェックを受け入れる必要があります(Zabbix エージェントの場合、StartAgents を 0 に設定してはいけません)。 エージェントがアクティブチェックのみを使用するように設定されている場合は、このテストをスキップし、最後の手順を完了した後に 監視 > 最新データ でアイテムを確認してください。

手順5: アイテムを作成する

監視対象のホストに、mysql.questions アイテムキーを使用して新しいアイテムを作成します。

アイテムのタイプとして、Zabbix エージェント または Zabbix エージェント(アクティブ) のいずれかを選択します。

Zabbix エージェント(パッシブ)の場合、Zabbix サーバーまたはプロキシのアドレスをエージェントの Server パラメータに指定する必要があります。 Zabbix エージェント(アクティブ)の場合、ServerActive パラメータに Zabbix サーバーまたはプロキシを指定し、エージェントの Hostname パラメータを Webインターフェースで設定したホスト名と完全に一致させる必要があります。

アイテムのデータ型を選択します。 エージェントは常に値をテキストとして返します。データ型によって、前処理の実行後に Zabbix が値をどのように解釈し、保存するかが決まります。

未加工の累積カウンターには、数値(整数)を選択します。 1秒あたりのステートメント数を測定するには、数値(浮動小数)を選択し、1秒あたりの変化量の前処理ステップを追加します。