On this page

New

この機能は、License Server 20.0で追加されました。

組織が成長するにつれて、ライセンスのニーズも高まります。ライセンスがどのように使用されているのか、またライセンスサーバーがどのように機能しているかを深く理解したい場合、Webhookを使用するとわかりやすくなります。ライセンスサーバーは1つのWebhookをサポートし、複数のイベントにサブスクライブ可能です。

Webhookをセットアップするには、hkeyを開きます。

  1. File ▸ Webhooks… をクリックして、Webhookダイアログを開きます。

  2. ダイアログの上部でWebhook URLを入力します。例えば、https://mycompany.sidefx.webhook:8080/などです。

  3. 受信したい任意の数のトリガーにサブスクライブします。

URLの検証

WebhookのURLを設定する時、イベントを送信する前に、そのURLが実際に有効かつ使用可能であることを検証する必要があります。Webhookサーバーは、リクエストからのチャレンジをレスポンス内に含めなければなりません。そうしないと、ライセンスサーバーはそのリクエストを失敗としてマークし、Webhookを無効にします。何らかの理由でURLの検証が失敗したとサーバーが判断した場合、Webhookは無効になり、新しいイベントは送信されません。新しいURLが検証されている間、サーバーはこれらのイベントをキューに入れることもありません。

リクエスト

{
    "type": "url_verification",
    "challenge": ""
}

キー

型 説明

type

string | 送信されるリクエストのタイプ。リクエストがWebhookサーバーのURLの検証を試みる際は、これは常にurl_verificationです。

challenge

string | ランダムに生成されるチャレンジによって、Webhookサーバーから返されるレスポンスが、実際にライセンスサーバーからのリクエストに対するレスポンスであることを確認します。

レスポンス

{
    "challenge": ""
}

キー

型 説明

challenge

string | リクエスト内のチャレンジキーの値。ライセンスサーバーが、レスポンスが実際に元のリクエストに対するレスポンスであることを検証するために必要です。

イベントリクエスト

各イベントには、送信を成功させるチャンスが3回与えられます。1回目のリトライは、リクエストが失敗したと判断された1分後に送信され、2回目のリトライは、1回目のリトライが失敗した5分後に送信されます。リクエストは、Webhookサーバーからの3xx HTTPレスポンスから、最大2回までリダイレクトすることができます。リクエストが2回よりも多くリダイレクトされた場合、下記のtoo_many_redirectsという失敗理由により失敗します。

送信中のリクエストのステートを示すのに役立つ特別なヘッダがいくつかあります。これらの特別なヘッダについて、以下の表で説明します。

ヘッダ

説明

X-SideFX-Retry-Num

イベントのリトライ数を示します。イベントの1回目のリトライの場合、このヘッダはリクエストに含まれません。

X-SideFX-Retry-Reason

リトライの理由を示します。リクエストが失敗する様々な理由については、以下の表で説明しています。イベントの1回目のリトライの場合、このヘッダはリクエストに含まれません。

以下の表のように、リクエストが失敗する理由には様々なものがあります。

リトライの理由

説明

http_timeout

以前タイムアウトしたHTTPリクエスト。

http_error

以前の試行でエラーになったHTTPリクエスト。

too_many_redirects

以前のリクエストが最大2回を越えてリダイレクトされました。

connection_failed

以前の試行でWebhookサーバーに接続できませんでした。

ssl_error

以前の試行でSSLエラーが発生しました。

unknown_error

以前の試行でエラーが発生したが、sesinetdには失敗した理由が分からない、すべてのエラーをキャッチします。

ペイロード

ライセンスサーバーからWebhookサーバーに送信される各リクエストは、以下と同じ構造になります。

リクエスト

{
    "event": {},
    "event_time": 000000,
    "event_id": "E100",
    "type": "event_callback",
}

キー

型 説明

event

object | イベント固有の情報をすべて保持するオブジェクト。

event_time

timestamp | イベントが発生したタイムスタンプ。タイムスタンプは、サーバーのエポックタイムで表現されます。

event_id

string | 発生したイベントのID。各イベントには固有のIDがあり、それを使用してタイプを特定できます。

type

string | ライセンスサーバーからイベントリクエストを受信する時、この値は常にevent_callbackです。

Webhookのステート

Webhookのステートは、Webhookイベントを送信するための健全性および能力を示します。

ステータス

説明

Active

Webhookは動作しており、Webhookサーバーへのリクエストの90%以上が正常に応答しています。

Unstable

Webhookは不安定な状態で動作しています。Webhookサーバーへのリクエストの90%から5%が成功しています。

Failed

Webhookは正常に動作していません。Webhookサーバーへのリクエストの5%未満が成功しています。Webhookは無効になり、新しいイベントはWebhookサーバーに送信されません。Webhookサーバーが修復されたら、Webhookを手動で再度有効にする必要があります。Webhookを再度有効にするには、hkeyまたは公開APIを使用します。

Disabled

Webhookは無効になっています。イベントはWebhookサーバーに送信されません。hkeyまたは公開APIを使用して、Webhookを手動で再度有効にする必要があります。

イベントに応答する

システムがリクエストを成功とみなすには、Webhookサーバーがイベントに応答する必要があります。sesinetdが、送信に失敗したとみなされるイベントを多数受信した場合、Webhookは無効になります。各リクエストには、失敗するまでに3秒の応答時間が与えられ、その時間の経過後は、ここで説明した理由http_timeoutにより失敗します。sesinetdが、リクエストに対してWebhookサーバーから200 HTTPレスポンスを受信した場合、リクエストは成功とみなされます。

Note

sesinetdは、送信に失敗したイベントや、WebhookがDisabledまたはFailedステートの時に発生したイベントをキャッシュ化しません。これらのイベントは失われ、取得する方法はありません。

リトライをオフにする

Webhookサーバーがイベントに追いつくのに苦労している場合や、sesinetdにイベント送信のリトライをしてほしくない場合は、特別なHTTPヘッダによってそれを指定することができます。リトライをオフにするには、次の特別なヘッダを200 HTTP以外のレスポンスに含めます。

X-Slack-No-Retry: 1

このヘッダは、この特定のイベントをリトライしないようsesinetdに指示します。他のすべてのイベントは何も影響を受けず、必要に応じてリトライされます。

スロットリング

現在、Webhookはスロットリングをサポートしていません。

レート制限

重要なのは、追いつくことのできないイベントでサーバーをフラッディングさせないことです。

イベントは、60分あたり最大30,000のリクエストを送信します。sesinetdがその最大値に達すると、sesinetdはその時間、サーバーへの新しいイベントの送信を停止します。その間サーバーはレート制限され、sesinetdはrate_limitedイベントを毎分送信します。

{
    "type": "rate_limited",
    "minute_rate_limited": 1691771520
}

キー

型 説明

minute_rate_limited

Integer

サーバーがレート制限イベントを開始した分を示す、丸めたエポックタイム。

type

string | レート制限イベントを受信する時、タイプはrate_limitedになります。

Webhookを編集する

すべてのユーザがWebhookおよびイベントのサブスクリプションを表示することができます。Webhook URLおよびサブスクリプションを編集することができるのは、管理者権限を持つユーザのみです。

Events サブトピック イベント

Examples

License

  • チェックアウト

    ライセンスシートをチェックアウトすることで生成されるイベント。

  • チェックイン

    ライセンスシートのチェックインによって生成されるイベント。

  • ハートビート

    ライセンスシートのハートビートを送信するhserverによって生成されるイベント。

インストールとライセンス設定

インストール

ライセンス設定

特定のセットアップ

プロダクト