[comment]: # translation:outdated

[comment]: # ({fc0a59fb-e25ccc09})
# 3 カスタムアラートスクリプト

[comment]: # ({/fc0a59fb-e25ccc09})

[comment]: # ({94ec7576-bc410af8})
#### 概要

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

カスタムアラートスクリプトは Zabbix サーバー上で実行されます。
これらのスクリプトは、サーバー設定ファイルの [AlertScriptsPath](/manual/concepts/server/server_params#alertscriptspath) パラメータで指定されたディレクトリに配置する必要があります。

以下は、カスタムアラートスクリプトの例です。

```bash
#!/bin/bash

to=$1
subject=$2
body=$3
host=$4
value=$5

cat <<EOF | mail -s "$subject" "$to"
$body

Host: $host
Value: $value
EOF
```

::: noteimportant
Zabbix は、実行されたコマンドおよびスクリプトの終了コードを確認します。
**0** 以外の終了コードは、すべて [コマンド実行](/manual/appendix/command_execution) エラーと見なされます。
そのような場合、Zabbix は失敗した実行を再試行します。
:::

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

[comment]: # ({/94ec7576-bc410af8})

[comment]: # ({4da3d5c6-47055351})
#### 設定

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

1. *アラート → メディアタイプ* に移動します。
2. *メディアタイプの作成* をクリックします。

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

![](../../../../../assets/en/manual/config/notifications/media/media_script.png){width="600"}

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

スクリプトメディアタイプに固有のパラメータは次のとおりです。

|Parameter|Description|
|--|--------|
|*Script name*|サーバー設定パラメータ [AlertScriptsPath](/manual/concepts/server/server_params#alertscriptspath) で指定されたディレクトリに配置されているスクリプトファイルの名前を入力します（例: notification.sh）。|
|*Script parameters*|オプションのスクリプトパラメータを追加します。これらは、定義された順序でコマンドライン引数としてスクリプトに渡されます。<br><br>スクリプトパラメータでは、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE} マクロ、および通知でサポートされるすべての [マクロ](/manual/appendix/macros/supported_by_location)、さらに [ユーザーマクロ](/manual/appendix/macros/supported_by_location_user) を使用できます。|

デフォルトメッセージとアラート処理オプションの設定方法については、[共通のメディアタイプパラメータ](/manual/config/notifications/media#common-parameters) を参照してください。

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

::: noteimportant
複数のスクリプトメディアタイプが設定されている場合、これらのスクリプトはアラート処理プロセスによって並列に処理されることがあります。
アラート処理プロセスの総数は、サーバー設定ファイルの [`StartAlerters`](/manual/concepts/server/server_params#startalerters) パラメータによって制限されます。
:::

[comment]: # ({/4da3d5c6-47055351})

[comment]: # ({2b8577c2-6a270eac})
#### テスト

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

1. メディアタイプの [一覧](/manual/config/notifications/media#overview) から、対象のスクリプトを見つけます。

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

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

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

![](../../../../../assets/en/manual/config/notifications/media/script_test.png){width="600"}

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

[comment]: # ({/2b8577c2-6a270eac})

[comment]: # ({c1511e2b-525cb972})
#### ユーザーメディア

メディアタイプを設定したら、*ユーザー → ユーザー* セクションに移動し、このメディアタイプをユーザーに割り当ててユーザープロファイルを編集します。
すべてのメディアタイプに共通するユーザーメディアの設定手順は、[メディアタイプ](/manual/config/notifications/media#user-media) ページで説明されています。

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

[comment]: # ({/c1511e2b-525cb972})
