3 カスタムアラートスクリプト
概要
アラート送信のための既存のメディアタイプに満足できない場合は、別の方法があります。
独自の方法で通知を処理するスクリプトを作成できます。
カスタムアラートスクリプトは Zabbixサーバー 上で実行されます。
これらのスクリプトは、サーバー設定ファイルの AlertScriptsPath パラメータで指定されたディレクトリに配置する必要があります。
以下は、カスタムアラートスクリプトの例です。
#!/bin/bash
to=$1
subject=$2
body=$3
host=$4
value=$5
cat <<EOF | mail -s "$subject" "$to"
$body
Host: $host
Value: $value
EOF
Zabbix は、実行されたコマンドおよびスクリプトの終了コードを確認します。
0 以外の終了コードはすべて、コマンド実行 エラーと見なされます。
その場合、Zabbix は失敗した実行を再試行します。
環境変数はスクリプトのために保持または作成されないため、明示的に処理する必要があります。
設定
カスタムアラートスクリプトをメディアタイプとして設定するには、次の手順を実行します。
- Alerts → Media types に移動します。
- Create media type をクリックします。
Media type タブには、メディアタイプの一般的な属性が含まれています。

必須の入力フィールドには、すべて赤いアスタリスクが付いています。
以下のパラメータは、スクリプトメディアタイプ固有のものです。
| Parameter | Description |
|---|---|
| Script name | AlertScriptsPath サーバー設定パラメータで指定されたディレクトリに配置されているスクリプトファイル名(例: notification.sh)を入力します。 |
| Script parameters | オプションのスクリプトパラメータを追加します。これらは、定義された順序でコマンドライン引数としてスクリプトに渡されます。 スクリプトパラメータでは、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} マクロ、および通知でサポートされているすべてのマクロと、ユーザーマクロを使用できます。 |
デフォルトメッセージおよびアラート処理オプションの設定方法の詳細については、共通のメディアタイプパラメータを参照してください。
アラートスクリプトがデフォルトメッセージを使用しない場合でも、このメディアタイプで使用される操作タイプのメッセージテンプレートは定義しておく必要があります。 そうしないと、通知は送信されません。
複数のスクリプトメディアタイプが設定されている場合、これらのスクリプトは alerter プロセスによって並列に処理されることがあります。
alerter プロセスの総数は、サーバー設定ファイルの StartAlerters パラメータによって制限されます。
テスト
設定済みのスクリプトメディアタイプをテストするには、次の手順に従います。
-
メディアタイプの一覧で、該当するスクリプトを見つけます。
-
一覧の最後の列にある Test をクリックします。ポップアップウィンドウでテストフォームが開きます。
テストフォームには、そのスクリプトメディアタイプに設定されているものと同じ数のパラメータが含まれます。 -
必要に応じてスクリプトパラメータの値を編集します。編集はテスト手順にのみ影響し、実際の値は変更されません。
-
Test をクリックします。

設定済みのスクリプトメディアタイプをテストする際、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} およびユーザーマクロはそれぞれの値に展開されますが、イベントに関連するマクロ(例: {HOST.HOST}、{ITEM.LASTVALUE} など)は展開されません。これは、テスト時には詳細を取得するための関連イベントが存在しないためです。
また、{ALERT.SUBJECT} および {ALERT.MESSAGE} マクロ内のマクロも展開されないことに注意してください。
たとえば、{ALERT.SUBJECT} の値が "Problem: {EVENT.NAME}" で構成されている場合、{EVENT.NAME} マクロは展開されません。
ユーザーメディア
メディアタイプを設定したら、ユーザー → ユーザー セクションに移動し、このメディアタイプをユーザーに割り当ててユーザープロファイルを編集します。 すべてのメディアタイプに共通するユーザーメディアの設定手順は、メディアタイプ ページで説明されています。
ユーザーメディアを定義する際、送信先 フィールドは空にできないことに注意してください。 このフィールドがアラートスクリプトで使用されない場合は、検証要件を回避するため、サポートされている文字の任意の組み合わせを入力してください。