カスタムアラートスクリプト

概要

アラート送信に既存のメディアタイプが適していない場合は、別の方法があります。 通知を独自の方法で処理するスクリプトを作成できます。

カスタムアラートスクリプトは 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 は失敗した実行を再試行します。

スクリプト用の環境変数は保持も作成もされないため、必要に応じて明示的に扱う必要があります。

設定

カスタムアラートスクリプトをメディアタイプとして設定するには、次の手順を実行します。

  1. アラート > メディアタイプ に移動します。
  2. メディアタイプの作成 をクリックします。
  3. フォームにスクリプトメディアタイプのパラメータを入力します。

メディアタイプ タブには、メディアタイプの一般的な属性が含まれています。

すべての必須入力フィールドには、赤いアスタリスクが付いています。

以下のパラメータは、スクリプトメディアタイプ固有のものです。

パラメータ 説明
スクリプト名 AlertScriptsPath サーバー設定パラメータで指定されたディレクトリにあるスクリプトファイルの名前(例: notification.sh)を入力します。
スクリプトパラメータ スクリプトにコマンドライン引数として、定義された順序で渡すオプションのスクリプトパラメータを追加します。

スクリプトパラメータでは、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} マクロ、および通知でサポートされるすべてのマクロと、ユーザーマクロを使用できます。

デフォルトメッセージとアラート処理オプションの設定方法については、共通のメディアタイプパラメータを参照してください。

アラートスクリプトでデフォルトメッセージを使用しない場合でも、このメディアタイプで使用される実行タイプのメッセージテンプレートを定義する必要があります。 定義しない場合、通知は送信されません。

複数のスクリプトメディアタイプが設定されている場合、これらのスクリプトはアラートプロセスによって並列処理されることがあります。 アラートプロセスの合計数は、サーバー設定ファイルの StartAlerters パラメータによって制限されます。

テスト

設定済みのスクリプトメディアタイプをテストするには:

  1. メディアタイプの 一覧 から、対象のスクリプトを見つけます。

  2. 一覧の最後の列にある Test をクリックします。テスト用フォームがポップアップウィンドウで開きます。 テスト用フォームには、スクリプトメディアタイプに設定されているのと同じ数のパラメータが表示されます。

  3. 必要に応じてスクリプトのパラメータ値を編集します。編集内容はテスト手順にのみ影響し、実際の値は変更されません。

  4. Test をクリックします。

設定済みのスクリプトメディアタイプをテストする場合、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} およびユーザーマクロはそれぞれの値に展開されます。 ただし、イベントに関連するマクロ(例: {HOST.HOST}、{ITEM.LASTVALUE} など)は、テスト時には詳細を取得する関連イベントがないため展開されません。 {ALERT.SUBJECT} および {ALERT.MESSAGE} 内のマクロも展開されないことに注意してください。 たとえば、{ALERT.SUBJECT} の値が "Problem: {EVENT.NAME}" で構成されている場合、{EVENT.NAME} マクロは展開されません。

ユーザーメディア

メディアタイプを設定したら、Users > Users セクションに移動し、このメディアタイプをユーザーに割り当ててユーザープロファイルを編集します。 ユーザーメディアの設定手順は、すべてのメディアタイプに共通する内容として、Media types ページに記載されています。

ユーザーメディアを定義する際、Send to フィールドを空にすることはできません。 このフィールドがアラートスクリプトで使用されない場合は、検証要件を回避するために、サポートされている文字の任意の組み合わせを入力してください。