OpenResty Edge で Webhook を設定するには、Global Config → Webhooks を開いて Webhook を作成し、Gateway Server Offline(ゲートウェイサーバーのオフライン)などのイベントを購読します。以降、そのイベントが発生するたびに、Edge Admin がお客様自身で実装したカスタム API へ自動的に HTTP リクエストを送信します。Gateway Server Offline イベントは、Edge の能動的なヘルスチェック(プローブ)が検知したオフライン、サーバー自身の異常、Edge Admin での手動オフラインのいずれも対象とし、サーバーがオフラインになるあらゆる原因をカバーするため、アラート用の API ですべての停止を検知できます。本チュートリアルでは、こうした Webhook の作成・トリガー・確認までの手順を解説します。イベント駆動型の Webhook 通知がポーリングベースの監視より優れている理由については、OpenResty Edge Webhook のメカニズム解説をご覧ください。

ゲートウェイサーバーのオフラインイベントでカスタム API へ HTTP リクエストを送信する OpenResty Edge の Webhook

OpenResty Edge Admin での Webhook の作成

OpenResty Edge の Web コンソールにアクセスしましょう。これは当社のコンソールのサンプル環境です。ユーザーごとに専用の環境が提供されます。

OpenResty Edge Admin の Web コンソール画面

まず、Webhook を作成する必要があります。「Global Config」ページに移動します。

OpenResty Edge Admin で Global Config ページを開く

「Webhooks」を選択します。

Global Config で Webhooks を選択する

Webhook を作成します。

OpenResty Edge Admin で新しい Webhook を作成する

ここでは、ゲートウェイサーバーがオフラインになった際に、お客様が実装したカスタム API に HTTP リクエストを送信する Webhook を作成します。

Gateway Server Offline イベントでカスタム API へ HTTP リクエストを送信するよう Webhook を設定する

多数の組み込みイベントが用意されており、お客様のご要望に応じてさらに追加することも可能です。

OpenResty Edge で利用できる組み込み Webhook イベントの一覧

ここでは「Gateway Server Offline」イベントを選択します。

Webhook に Gateway Server Offline イベントを選択する

「Create」をクリックすると、新しい Webhook が追加されます。

作成されたゲートウェイサーバーオフライン用 Webhook が準備完了

ゲートウェイサーバーのオフラインイベントによる Webhook のトリガー

この Webhook をトリガーするために、ゲートウェイサーバーをオフライン状態に設定してみましょう。

Webhook をトリガーするためゲートウェイサーバーをオフラインにする準備

このサーバーを使用します。

オフラインにするゲートウェイサーバーを選択する

設定ページを開きます。

Edge Admin でゲートウェイサーバーの設定ページを開く

このサーバーは現在オンライン状態であることにご注意ください。

ゲートウェイサーバーが現在オンライン状態であることを示す画面

オフライン状態に設定します。

設定でゲートウェイサーバーをオフラインに設定する

保存します。

Webhook をトリガーするためオフラインの変更を保存する

Webhook の実行履歴の確認

では、Webhooks ページで実行履歴を確認しましょう。

実行履歴を確認するため Webhooks ページに戻る

「Webhooks」を選択します。

Webhooks を選択して Webhook の一覧を開く

「Detail」ボタンをクリックしてください。

「Detail」ボタンをクリックして Webhook の実行履歴を表示する

Webhook の実行履歴を確認できます。これは、トリガーされたイベントが正常に送信されたことを意味します。

オフラインイベントがカスタム API へ正常に送信されたことを示す Webhook の実行履歴

ここでデモンストレーションした Edge Admin での手動オフライン設定だけでなく、OpenResty Edge は各ゲートウェイサーバーを能動的にヘルスチェック(プローブ)しており、そのプローブがサーバーの停止を検知した場合や、サーバー自身に異常が発生した場合にも Gateway Server Offline イベントが発生します。こうしたイベントを起点にアラートや運用の自動化を組み立てる考え方については、OpenResty Edge Webhook:ポーリングを置き換えるイベント駆動型ゲートウェイ通知をご覧ください。

よくある質問

OpenResty Edge では、どのようなイベントで Webhook をトリガーできますか?

OpenResty Edge には、Webhook が購読できる組み込みイベントが多数用意されています。本チュートリアルで使用した Gateway Server Offline(ゲートウェイサーバーのオフライン)イベントもその一つです。必要なイベントがまだ組み込まれていない場合は、ご要望に応じて追加することも可能です。購読中のイベントが発生すると、Edge Admin は設定済みのカスタム API へ HTTP リクエストを送信します。

Gateway Server Offline イベントは、手動でサーバーをオフラインにしたときだけ発生しますか?

いいえ。Edge Admin での手動オフラインに加え、OpenResty Edge は各ゲートウェイサーバーを能動的にヘルスチェック(プローブ)しており、そのプローブがサーバーの停止を検知した場合、サーバー自身に異常が発生した場合、あるいは手動でオフラインにした場合のいずれでも Gateway Server Offline イベントが発生します。そのため、このイベントを購読した Webhook は、計画的な操作だけでなく、あらゆる停止を検知できます。

Webhook が実際に送信されたことを確認するにはどうすればよいですか?

Edge Admin の Webhooks ページを開き、対象の Webhook の「Detail」ボタンをクリックすると、その実行履歴を確認できます。ここに記録された各エントリは、トリガーされたイベントがカスタム API へ正常に送信されたことを示します。そのため、お客様側のエンドポイントに追加の計装を行わなくても、送信を確認できます。

このチュートリアルが気に入っていただけましたら、ぜひ本ブログサイトおよび弊社の YouTube チャンネルをご購読ください。ありがとうございます!

OpenResty Edge について

OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、同時接続数の多い高負荷なシナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵入型の障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版 の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!