[覚え書き] Zabbix 1.6 の外部チェックに渡される引数

Zabbix で監視対象の状態を取得する際に、Zabbix が標準的に提供している機能だけでは足りず、外部のプログラム、特にスクリプトを使いたいことがかなりの割合である。
このような要求に対して、Zabbix は外部チェック (External Check) という名称で対応している。
しかし、Zabbix と外部のプログラムやスクリプトの間でどのような項目を受け渡せば良いかといったことを、明快に解説した情報は中々見つけられない。

そこで幾つか自分自身で試してみた結果、分かったことを覚え書きとして残しておく。

まず、Zabbix で提供されている PDF 形式のマニュアルから、該当箇所の記述を引用しておく。

英文
Syntax of item’s key:
script[parameters]
script – name of the script.
parameters – list of command line parameters.
ZABBIX server will find and executed the script in directory defined in configuration parameter ExternalScripts. First command line parameter is host name, other parameters are substituted by parameters.
和文
アイテムのキーの構文を以下に示します。
script[parameters]
script – スクリプトの名前
parameters – コマンドラインパラメータのリスト
ZABBIX サーバは、設定パラメータ ExternalScripts で定義されているディレクトリにあるスクリプトを実行します。 1番目のコマンドラインパラメータとしてホスト名が渡され、その後に parameters で指定されたパラメータが渡されます。

また、記述例とそのときに起動されるコマンドの例が以下のように記述されている。

check_oracle.sh[-h 192.168.1.4]
→ check_oracle.sh www1.company.com -h 192.168.1.4

Zabbix のフォーラム  (英文) を彷徨った結果、外部プログラムから Zabbix に値を返す方法は大体の見当が付いた。
単純に標準出力に文字列として出力すればいいようだ。
その文字列を、数値として解釈するかどうかは Zabbix 側で設定すればよい。

Zabbix から外部プログラムに引数を渡すには、マニュアルに、アイテムを作成するところの「キー」欄にプログラム名に続けてカギ括弧 ('[' と ']') で括っておけばいいとある。
また、外部プログラムが呼び出されるときに、プログラム名と引数の間に監視対象のホストの FQDN または IP アドレスが差し挟まれるとも書かれている。

実際に試してみるとその通りなのだが、細かなところで問題が発生した。
以下にその結果を並べておこう。

script.sh[param1,param2 param3]
→ spript.sh host.sample.com param1,param2 param3
script.sh["param1 param2",param3]
→ spript.sh host.sample.com "param1 param2",param3
script.sh[param1[idx] param2]
→ spript.sh host.sample.com param1[idx
script.sh["param1[idx]" param2]
→ spript.sh host.sample.com "param1[idx

見て分かるように、パラメータの文字列に閉じカギ括弧 (']') が含まれていると、それ以降の文字が外部プログラムに渡されていない。
ダブルコーテーションマークで括ったら何とかなるかもと思ったが、全く無視。
つまり、単純にカギ括弧 ('[' と ']') の間の文字列を、一切の加工をせずそのまま外部プログラムに渡しているだけのようだ。

関連記事

  • Zabbix 3.0 にクライアント認証だけでログインする2016.4.26 (火) Zabbix 3.0 にクライアント認証だけでログインする 先の記事で Zabbix 3.0 のフロントエンドにクライアント認証を追加しました。 しかし先の記事にも書いたとおり、これだけではStartSSL でクライアント証明書を発行した人 (StartSSL を利用ユーザーなど) 全員を承認してしまいます。 […]
  • クライアント認証でログインできるようにしたら Zabbix API がエラーになる2016.4.30 (土) クライアント認証でログインできるようにしたら Zabbix API がエラーになる Zabbix には、外部プログラムから Zabbix が管理する情報を取り扱うための仕組みとして、Zabbix API が存在します。 Zabbix API を使えば、Web UI を使わずにプログラムなどから Zabbix […]
  • Zabbix 3.0 をインストール2016.3.22 (火) Zabbix 3.0 をインストール 1年半毎の LTS リリースの予定から順調に 9ヶ月ほど送れて Zabbix 3.0 LTS がリリースされました。 ちなみに、ポイントリリースになる 2.6 は出ないままに終わりそうです。 もっとも、監視に必要な機能は Zabbix 2.2 […]
  • Zabbix 3.0 にクライアント認証を追加2016.4.18 (月) Zabbix 3.0 にクライアント認証を追加 レンタル サーバーに Zabbix をインストールして使っているユーザーはかなり多いと思います。 筆者も他聞に漏れず、レンタル サーバーに Zabbix をインストールして使っています。正確にはレンタル サーバーというよりも、レンタル VPS […]

コメントを残す