5 ユーザーパラメーター
概要
Zabbix にあらかじめ定義されていないエージェントチェックを実行したい場合があります。そのようなときに役立つのがユーザーパラメータです。
必要なデータを取得するコマンドを作成し、それを エージェント設定ファイル の ('UserParameter' 設定パラメータ) に含めることができます。
ユーザーパラメータの構文は次のとおりです。
UserParameter=<key>,<command>
ご覧のとおり、ユーザーパラメータにはキーも含まれます。このキーは、アイテムを設定するときに必要になります。参照しやすい任意のキーを入力してください(ホスト内で一意である必要があります)。
エージェントを再起動するか、エージェントの runtime control オプションを使用して、新しいパラメータを反映します。例:
zabbix_agentd -R userparameter_reload
その後、アイテムを設定する ときに、実行したいユーザーパラメータ内のコマンドを参照するキーを入力します。
ユーザーパラメータは、Zabbix エージェントによって実行されるコマンドです。 item value preprocessing の手順の前に、最大 16MB のデータを返すことができます。
UNIX オペレーティングシステムでは、コマンドラインインタープリタとして /bin/sh が使用されます。 ユーザーパラメータはエージェントチェックのタイムアウトに従います。タイムアウトに達すると、fork されたユーザーパラメータのプロセスは終了されます。
関連項目:
- ユーザーパラメータの活用方法についての ステップバイステップチュートリアル
- コマンド実行
単純なユーザーパラメータの例
単純なコマンド:
UserParameter=ping,echo 1
agent は、'ping' キーを持つ item に対して常に '1' を返します。
より複雑な例:
UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive
agent は、MySQL サーバが生きている場合は '1' を、そうでない場合は '0' を返します。
柔軟なユーザーパラメータ
柔軟なユーザーパラメータは、キーにパラメータを指定できます。これにより、柔軟なユーザーパラメータを複数のアイテムを作成するための基盤として使用できます。
柔軟なユーザーパラメータの構文は次のとおりです。
UserParameter=key[*],command
| Parameter | Description |
|---|---|
| Key | 一意のアイテムキー。[*] は、このキーが角括弧内のパラメータを受け付けることを示します。 パラメータは、アイテムを設定する際に指定します。 |
| Command | キーの値を評価するために実行するコマンド。 柔軟なユーザーパラメータのみ: コマンド内で位置参照 $1…$9 を使用して、アイテムキー内の対応するパラメータを参照できます。 Zabbix はアイテムキーの [ ] 内に含まれるパラメータを解析し、それに応じてコマンド内の $1,...,$9 を置換します。 $0 は、実行される元のコマンド($0,...,$9 の展開前)に置き換えられます。 位置参照は、二重引用符 (") で囲まれていても単一引用符 (') で囲まれていても解釈されます。 位置参照をそのまま使用するには、ドル記号を 2 つ指定します。たとえば、awk '{print $$2}' のようにします。この場合、 $$2 はコマンド実行時に実際には $2 に変換されます。 |
$ 記号を含む位置参照の検索と置換は、柔軟なユーザーパラメータに対してのみ Zabbix エージェントによって行われます。単純なユーザーパラメータでは、この参照処理はスキップされるため、$ 記号のエスケープは不要です。
一部の文字は、デフォルトではユーザーパラメータに使用できません。 使用できない文字の完全な一覧については、UnsafeUserParameters を参照してください。
例1
とてもシンプルなもの:
UserParameter=ping[*],echo $1
ping[something]というフォーマットを持つ監視項目は無制限に定義することができる。
- ping[0] - 常に '0' を戻す
- ping[aaa] - 常に 'aaa' を戻す
例2
もっとセンスを磨こう!
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
このパラメータは、MySQLデータベースの可用性を監視するために使用することができます。
ユーザー名とパスワードを渡すことができます:
mysql.ping[zabbix,our_password]
例3
正規表現にマッチする行はファイル中に何行あるか?
UserParameter=wc[*],grep -c "$2" $1
このパラメータは、ファイル内の行数を計算するために使用することができます。
wc[/etc/passwd,root]
wc[/etc/services,zabbix]
コマンドの結果
コマンドの戻り値は、コマンドによって生成された標準出力と標準エラーの両方です。
テキスト(文字列、ログ、テキスト型の情報)を返すアイテムは、標準エラー出力があっても未サポートにはなりません。
戻り値は16MBに制限されています(末尾の空白も含み、切り捨てられます)。データベースの制限も適用されます。
テキスト(文字列、ログ、テキスト型の情報)を返すユーザーパラメータも空白を返すことができます。 無効な結果の場合、アイテムは未サポートになります。