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は失敗した実行を再試行します。
スクリプトには環境変数が保持または作成されないため、明示的に処理する必要があります。
設定
カスタムアラートスクリプトをメディアタイプとして設定するには、次のようにします。
- アラート → メディアタイプ に移動します。
- メディアタイプの作成 をクリックします。
メディアタイプ タブには、メディアタイプの一般的な属性が含まれています。

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

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