5 ユーザーパラメーター

概要

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

必要なデータを取得するコマンドを作成し、それをエージェント設定ファイル の「UserParameter」設定パラメータとしてユーザーパラメータに含めることができます。

ユーザーパラメータの構文は次のとおりです。

UserParameter=<key>,<command>

ご覧のとおり、ユーザーパラメータにはキーも含まれます。このキーは、アイテムを設定する際に必要になります。参照しやすい任意のキーを指定してください(ホスト内で一意である必要があります)。

新しいパラメータを反映するには、エージェントを再起動するか、エージェントのランタイム制御オプションを使用します。例:

zabbix_agentd -R userparameter_reload

その後、アイテムの設定時に、実行したいユーザーパラメータのコマンドを参照するためのキーを入力します。

ユーザーパラメータは、Zabbixエージェントによって実行されるコマンドです。 アイテム値の前処理ステップの前に、最大 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' を返します。

柔軟なユーザーパラメータ

柔軟なユーザーパラメータでは、キーにパラメータを受け付けることができます。これにより、1つの柔軟なユーザーパラメータを基に複数のアイテムを作成できます。

柔軟なユーザーパラメータの構文は次のとおりです。

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]

コマンドの結果

コマンドの戻り値は、コマンドによって生成された標準出力と標準エラー出力です。

テキスト(character、log、または text 型の情報)を返すアイテムは、標準エラー出力がある場合でも未サポートにはなりません。

戻り値は 16MB に制限されます(切り捨てられる末尾の空白を含む)。また、データベースの制限 も適用されます。

テキスト(character、log、または text 型の情報)を返すユーザーパラメータは、空白文字のみを返すこともできます。 結果が無効な場合、アイテムは未サポートになります。