Webhookメディアタイプは、カスタムJavaScriptコードを使用してHTTPコールを行うのに便利で、ヘルプデスクシステム、チャット、メッセンジャーなどの外部ソフトウェアとの簡単な統合が可能です。 Zabbixが提供するインテグレーションをインポートするか、独自のインテグレーションをゼロから作成することができます。
以下のインテグレーションが利用可能であり、Zabbix通知をプッシュするための定義済みWebhookメディアタイプを使用できます:
ここに記載されているサービスに加えて、ZabbixはSpiceworksとも連携できます(Webhookは不要です)。 Zabbixの通知をSpiceworksのチケットに変換するには、メールメディアタイプを作成し、指定したZabbixユーザーのプロファイル設定でSpiceworksヘルプデスクのメールアドレス(例: [email protected])を入力してください。
Webhookインテグレーションの使用を開始するには:
templates/mediaディレクトリで必要な.yamlファイルを探すか、Zabbixのgitリポジトリからダウンロードします。独自のWebhookをゼロから作成するには:
メディアタイプタブには、このメディアタイプ特有のさまざまな属性があります:

必須入力フィールドは赤いアスタリスクでマークされています。
Webhookメディアタイプ特有のパラメータは以下の通りです:
| パラメータ | 説明 |
|---|---|
| パラメータ | Webhookの変数を属性と値のペアで指定します。 事前設定されたWebhookの場合、パラメータのリストはサービスによって異なります。パラメータの説明はWebhookのReadme.mdファイルを確認してください。 新しいWebhookの場合、いくつかの共通変数がデフォルトで含まれています(URL:<空>, HTTPProxy:<空>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE})。そのまま残すか削除してください。 Webhookパラメータはユーザーマクロ、問題通知でサポートされているすべてのマクロに加え、{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}マクロをサポートします。 HTTPプロキシを指定する場合、このフィールドはアイテム設定のHTTPプロキシフィールドと同じ機能をサポートします。プロキシ文字列は、どの種類のプロキシを使用するかを指定するために [scheme]://をプレフィックスとして付けることができます(例: https, socks4, socks5; ドキュメントを参照)。 |
| スクリプト | パラメータフィールドをクリックするか、その横の鉛筆アイコンをクリックすると開くモーダルエディタにJavaScriptコードを入力します。このコードがWebhook操作を実行します。 スクリプトはパラメータ-値のペアを受け取る関数コードです。値はJSON.parse()メソッドを使用してJSONオブジェクトに変換する必要があります。例: var params = JSON.parse(value);。コードはすべてのパラメータにアクセスでき、HTTP GET、POST、PUT、DELETEリクエストを実行でき、HTTPヘッダーやリクエストボディを制御できます。 スクリプトにはreturn演算子が含まれている必要があります。そうでない場合は無効になります。OKステータスとオプションでタグとタグ値のリスト(タグの処理オプションを参照)またはエラー文字列を返すことができます。 リカバリエベント(自動生成または手動クローズの結果として生成)はサーバーによって作成され、解決済みイベントタグ(テンプレート、ホスト、トリガーから継承されたタグを含む)を含みます。Webhookスクリプトはアラート作成後に実行されるため、Webhookスクリプトで返されたタグは初回アラート作成後にのみ追加され、初回の問題メッセージや即時リカバリーメッセージの{EVENT.TAGS}および {EVENT.RECOVERY.TAGS}マクロには存在しません。注意: 各スクリプトが独自のデータで動作し、同時呼び出し間の衝突を回避するために、グローバル変数(例: global = 1)ではなくローカル変数(例: var local = 1)を使用することを推奨します(既知の問題を参照)。参考: Webhook開発ガイドライン、Webhookスクリプト例、追加のJavaScriptオブジェクト。 |
| タイムアウト | JavaScript実行のタイムアウト(1-60秒、デフォルト30秒)。 30s、1mなどの時間サフィックスがサポートされています。 |
| タグの処理 | 返されたJSONプロパティ値をタグとして処理するにはチェックボックスをマークします。これらのタグは既存の問題タグに追加されます。 Webhookタグを使用する場合、Webhookは少なくとも空のtagsオブジェクトを含むJSONオブジェクトを返す必要があります: var result = {tags: {}};返すことができるタグの例: jira-id:prod-1234、responsible:John Smith、processed:<値なし> |
| イベントメニューエントリを含める | 作成された外部チケットへのリンクを含むイベントメニューにエントリを含めるにはチェックボックスをマークします。 有効でこのチェックボックスがマークされている各Webhookについてエントリが含まれます。メニューエントリ名およびメニューエントリURLパラメータに{EVENT.TAGS.<tag name>}マクロが含まれている場合、これらのマクロが解決できる場合(つまり、イベントにこれらのタグが定義されている場合)にのみエントリが含まれます。 マークされている場合、Webhookは異なるユーザーへの通知送信には使用しないでください(代わりに専用ユーザーの作成を検討してください)し、単一の問題イベントに対する複数のアラートアクションで使用しないでください。 |
| メニューエントリ名 | メニューエントリ名を指定します。 {EVENT.TAGS.<tag name>}マクロがサポートされています。 このフィールドはイベントメニューエントリを含めるがマークされている場合のみ必須です。 |
| メニューエントリURL | メニューエントリの基礎となるURLを指定します。 {EVENT.TAGS.<tag name>}マクロがサポートされています。 このフィールドはイベントメニューエントリを含めるがマークされている場合のみ必須です。 |
デフォルトメッセージやアラート処理オプションの設定方法の詳細については、共通のメディアタイプパラメータを参照してください。
Webhookがデフォルトメッセージを使用しない場合でも、このWebhookで使用される操作タイプのメッセージテンプレートは定義する必要があります。
設定済みのWebhookメディアタイプをテストするには:
テストウィンドウで値を置き換えたり削除したりしても、テスト手順のみに影響し、実際のWebhook属性値は変更されません。

テストウィンドウを閉じずにメディアタイプのテストログエントリを表示するには、ログを開くをクリックします(新しいポップアップウィンドウが開きます)。

Webhookテストが成功した場合:
Webhookテストが失敗した場合:
メディアタイプを設定したら、ユーザー > ユーザー セクションに移動し、既存のユーザーにWebhookメディアを割り当てるか、Webhookを表す新しいユーザーを作成します。 既存のユーザーのユーザーメディアの設定手順は、すべてのメディアタイプに共通であり、メディアタイプのページで説明されています。
Webhookがタグを使用してチケットやメッセージIDを保存する場合、同じWebhookを異なるユーザーにメディアとして割り当てると、Webhookエラーが発生する可能性があるため避けてください(イベントメニューエントリを含める オプションを利用する大多数のWebhookに該当します)。 この場合、Webhookを表す専用のユーザーを作成するのがベストプラクティスです:
アラートアクションを設定する際は、操作の詳細のユーザーへの送信フィールドにこのユーザーを追加します。これにより、Zabbixはこのアクションからの通知にWebhookを使用するようになります。
アクションは、どの通知をウェブフック経由で送信するかを決定します。 ウェブフックを含むアクションの設定手順は、以下の例外を除き、他のすべてのメディアタイプと同じです。