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 を使用してこのファイルを明示的に指定してください。このオプションは、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秒あたりの変化量の前処理ステップを追加します。