This is a translation of the original English documentation page. Help us make it better.

5 ユーザーパラメータ

概要

Zabbixにあらかじめ定義されていないエージェントチェックを実行したい場合があります。
このような場合、ユーザパラメータが役に立ちます。

必要なデータを取得するコマンドを作成し、そのデータをユーザパラメータとしてagent configuration file('UserParameter') という設定パラメータを作成します。

ユーザパラメータは次のような構文になります。

UserParameter=<key>,<command>

このように、ユーザパラメータにはキーも含まれます。キーは、item を設定する際に必要となります。
参照しやすい任意のキーを入力します(ホスト内で一意でなければなりません)。

agent を再起動するか、agent runtime control オプションを使用して、新しいパラメータを取得します。

zabbix_agentd -R userparameter_reload 

次に、configuring an itemの際に、実行したいユーザパラメータからコマンドを参照するためのキーを入力します。

ユーザパラメータとは、Zabbix agent が実行するコマンドのことです。item のプリプロセスステップの前に
最大512KBのデータを返すことができます。ただし、最終的にデータベースに保存できるテキスト値は、
MySQLでは64KBに制限されていることに注意してください。
(他のデータベースについては、tableを参照してください)。

UNIX オペレーティングシステムでは、コマンドラインインタプリタとして /bin/sh が使用されます。
ユーザーパラメータはエージェントチェックのタイムアウトに従います。タイムアウトに達すると
フォークされたユーザーパラメータ・プロセスが終了します。

こちらもご覧ください。

単純なユーザーパラメータの例

単純なコマンド:

UserParameter=ping,echo 1

agent は、'ping' キーを持つ item に対して常に '1' を返します。

より複雑な例:

UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

agent は、MySQL サーバが生きている場合は '1' を、そうでない場合は '0' を返します。

フレキシブルユーザーパラメータ

フレキシブルユーザーパラメータは、キーでパラメータを受け取ります。
このように、フレキシブルユーザーパラメータは、複数の item を作成するためのベースとなることができます。

フレキシブルユーザーパラメーターの構文は以下の通りです。

UserParameter=key[*],command
パラメータ 説明
Key 一意のアイテム キー。[*]は、このキーが括弧内のパラメーターを受け入れることを定義します。
パラメーターは、アイテムを設定するときに指定します。
Command キーの値を評価するために実行されるコマンド。
ユーザーパラメータをフレキシブルに使う為:
コマンド内で位置参照 $1…$9 を使用して、アイテム キー内のそれぞれのパラメータを参照できます。
Zabbix はアイテム キーの[ ]で囲まれたパラメータを解析し、それに応じてコマンド内で $1、...、$9 を置き換えます。
$0は、実行される元のコマンド($0、...、$9の展開前)に置き換えられます。
位置参照は、二重引用符 (") または一重引用符 (') で囲まれているかどうかに関係なく解釈されます。
位置参照を変更せずに使用するには、二重ドル記号を指定します (例: awk '{print $$2}')。この場合、コマンドの実行時に$$2は実際には$2になります。

Zabbix agent では、柔軟なユーザパラメータの場合のみ、$記号を含む位置参照が検索され、置換されます。
シンプルなユーザパラメータでは、このような参照処理はスキップされるため、$記号の引用は必要ありません。

デフォルトでは、ユーザパラメータに特定のシンボルを使用することはできません。 全リストは 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]

コマンドの結果

コマンドの戻り値は、標準出力と標準エラー出力です。

標準エラー出力の場合、テキスト(文字、ログ、テキスト型情報)item は未サポ―トになりません。

テキスト(文字、ログ、テキスト型情報)を返すユーザーパラメータは、空白を返すことができます。
無効な結果を返した場合、そのitem は サポートされなくなります。