5 ユーザーパラメーター

概要

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

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

ユーザーパラメータの構文は以下の通りです。

UserParameter=<キー>,<コマンド>

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

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

zabbix_agentd -R userparameter_reload

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

ユーザーパラメータはZabbixエージェントによって実行されるコマンドです。 アイテム値の事前処理ステップの前に、最大16MBのデータを返すことができる点に注意してください。

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

関連情報:

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

単純なコマンド:

UserParameter=ping,echo 1

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

より複雑な例:

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

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

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

柔軟なユーザーパラメータは、キーにパラメータを受け付けます。この方法で、柔軟なユーザーパラメータは複数のアイテムを作成するための基礎となります。

柔軟なユーザーパラメータは以下の構文を持ちます。

UserParameter=key[*],command
パラメータ 説明
Key 一意のアイテムキー。[*]は、このキーがブラケット内のパラメータを受け付けることを定義します。
パラメータはアイテムの設定時に指定します。
Command キーの値を評価するために実行されるコマンド。
柔軟なユーザーパラメータのみ:
コマンド内で位置参照$1…$9を使用して、アイテムキーのそれぞれのパラメータを参照できます。
Zabbixはアイテムキーの[ ]で囲まれたパラメータを解析し、コマンド内の$1,...,$9をそれぞれ置き換えます。
$0は、実行される元のコマンド($0,...,$9の展開前)に置き換えられます。
位置参照は、ダブルクォート(")またはシングルクォート(')で囲まれているかどうかに関係なく解釈されます。
位置参照を変更せずに使用するには、ダブルドル記号を指定します。例: 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に制限されています(末尾の空白も含み、切り捨てられます)。データベースの制限も適用されます。

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