アラート送信用の既存のメディアタイプに満足できない場合、別の方法があります。 独自の方法で通知を処理するスクリプトを作成できます。
カスタムアラートスクリプトは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
EOFZabbixは実行されたコマンドやスクリプトの終了コードをチェックします。 0 以外の終了コードは、コマンド実行エラーと見なされます。 このような場合、Zabbixは失敗した実行を再試行します。
スクリプトには環境変数が保持または作成されないため、明示的に処理する必要があります。
カスタムアラートスクリプトをメディアタイプとして設定するには:
メディアタイプ タブには、一般的なメディアタイプの属性が含まれています:

すべての必須入力フィールドには赤いアスタリスクが付いています。
スクリプトメディアタイプに固有のパラメータは以下の通りです:
| パラメータ | 説明 |
|---|---|
| スクリプト名 | 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}マクロは展開されません。
メディアタイプを設定したら、ユーザー → ユーザー セクションに移動し、このメディアタイプをユーザーに割り当ててユーザープロファイルを編集します。 ユーザーメディアの設定手順はすべてのメディアタイプで共通であり、メディアタイプのページで説明されています。
ユーザーメディアを定義する際、送信先 フィールドは空にできないことに注意してください。 このフィールドがアラートスクリプトで使用されない場合は、検証要件を回避するためにサポートされている任意の文字の組み合わせを入力してください。