Watcher webhook action

webhook アクションを使用して、任意のウェブサービスにリクエストを送信します。Webhook アクションは、HTTP および HTTPS 接続の両方をサポートしています。サポートされている属性については、Webhook アクション属性を参照してください。

Configuring webhook actions

actions 配列で webhook アクションを構成します。アクション固有の属性は、webhook キーワードを使用して指定されます。

次のスニペットは、シンプルな webhook アクションの定義を示しています:

Js

  1. "actions" : {
  2. "my_webhook" : {
  3. "transform" : { ... },
  4. "throttle_period" : "5m",
  5. "webhook" : {
  6. "method" : "POST",
  7. "host" : "mylisteningserver",
  8. "port" : 9200,
  9. "path": "/{{ctx.watch_id}}",
  10. "body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}"
  11. }
  12. }
  13. }
アクションの ID
webhook アクションを実行する前にペイロードを変換するためのオプションの transform
アクションのオプションの スロットル期間(この例では 5 分)
ホストに接続する際に使用する HTTP メソッド
接続するホスト
接続するポート
HTTP リクエストで使用するパス (URI)
リクエストと共に送信するボディ

セキュリティで保護されたウェブサービスにリクエストを送信する際に、基本認証を使用できます。たとえば、次の webhook アクションは、GitHub に新しい問題を作成します:

Js

  1. "actions" : {
  2. "create_github_issue" : {
  3. "transform": {
  4. "script": "return ['title':'Found errors in \\'contact.html\\'', 'body' : 'Found ' + ctx.payload.hits.total + ' errors in the last 5 minutes', 'assignee' : 'web-admin', 'labels' : ['bug','sev2']]"
  5. },
  6. "webhook" : {
  7. "method" : "POST",
  8. "url" : "https://api.github.com/repos/<owner>/<repo>/issues",
  9. "body": "{{#toJson}}ctx.payload{{/toJson}}",
  10. "auth" : {
  11. "basic" : {
  12. "username" : "<username>",
  13. "password" : "<password>"
  14. }
  15. }
  16. }
  17. }
  18. }
問題を作成するユーザーのユーザー名とパスワード

デフォルトでは、ユーザー名とパスワードは .watches インデックスにプレーンテキストで保存されます。Elasticsearch のセキュリティ機能が有効になっている場合、Watcher はパスワードを保存する前に暗号化できます。

Elasticsearch のセキュリティ機能が有効になっているクラスターにリクエストを送信する際に、PKI ベースの認証を使用することもできます。HTTP 基本認証の代わりに PKI ベースの認証を使用する場合、ウォッチ自体に認証情報を保存する必要はありません。PKI ベースの認証を使用するには、elasticsearch.yml で Watcher の SSL キー設定を 構成します。

Query Parameters

params フィールドを使用してリクエストと共に送信するクエリパラメータを指定できます。このフィールドは、キーがパラメータ名、値がパラメータ値として機能するオブジェクトを保持します:

Js

  1. "actions" : {
  2. "my_webhook" : {
  3. "webhook" : {
  4. "method" : "POST",
  5. "host" : "mylisteningserver",
  6. "port" : 9200,
  7. "path": "/alert",
  8. "params" : {
  9. "watch_id" : "{{ctx.watch_id}}"
  10. }
  11. }
  12. }
  13. }
パラメータ値にはテンプレート化された文字列を含めることができます。

Custom Request Headers

headers フィールドを使用してリクエストと共に送信するリクエストヘッダーを指定できます。このフィールドは、キーがヘッダー名、値がヘッダー値として機能するオブジェクトを保持します:

Js

  1. "actions" : {
  2. "my_webhook" : {
  3. "webhook" : {
  4. "method" : "POST",
  5. "host" : "mylisteningserver",
  6. "port" : 9200,
  7. "path": "/alert/{{ctx.watch_id}}",
  8. "headers" : {
  9. "Content-Type" : "application/yaml"
  10. },
  11. "body" : "count: {{ctx.payload.hits.total}}"
  12. }
  13. }
  14. }
ヘッダー値にはテンプレート化された文字列を含めることができます。

Webhook action attributes

名前 必須 デフォルト 説明
scheme いいえ http 接続スキーム。 有効な値は: http または https です。
host はい - 接続するホスト。
port はい - HTTP サービスがリッスンしているポート。
path いいえ - URL パス。 パスは静的テキストであるか、Mustache 形式の テンプレートを含むことができます。 URL クエリ文字列パラメータは、request.params 属性を介して指定する必要があります。
method いいえ get HTTP メソッド。 有効な値は: head, get, post, put および delete です。
headers いいえ - HTTP リクエストヘッダー。 ヘッダー値は静的テキストであるか、Mustache テンプレートを含むことができます。
params いいえ - URL クエリ文字列パラメータ。 パラメータ値は静的テキストであるか、Mustache テンプレートを含むことができます。
auth いいえ - 認証関連の HTTP ヘッダー。 現在、基本認証のみがサポートされています。
body いいえ - HTTP リクエストボディ。 ボディは静的テキストであるか、Mustache テンプレートを含むことができます。 指定されていない場合、空のボディが送信されます。
proxy.host いいえ - ホストに接続する際に使用するプロキシホスト。
proxy.port いいえ - ホストに接続する際に使用するプロキシポート。
connection_timeout いいえ 10s HTTP 接続を設定するためのタイムアウト。 この時間内に接続を設定できなかった場合、アクションはタイムアウトし、失敗します。
read_timeout いいえ 10s HTTP 接続からデータを読み取るためのタイムアウト。 この時間内に応答が受信されなかった場合、アクションはタイムアウトし、失敗します。
url いいえ - リクエストスキーム、ホスト、ポート、およびパスを単一の文字列として指定するためのショートカット。 たとえば、http://example.org/foo/my-service