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

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