Watcher webhook action
webhook
アクションを使用して、任意のウェブサービスにリクエストを送信します。Webhook アクションは、HTTP および HTTPS 接続の両方をサポートしています。サポートされている属性については、Webhook アクション属性を参照してください。
Configuring webhook actions
actions
配列で webhook アクションを構成します。アクション固有の属性は、webhook
キーワードを使用して指定されます。
次のスニペットは、シンプルな webhook アクションの定義を示しています:
Js
"actions" : {
"my_webhook" : {
"transform" : { ... },
"throttle_period" : "5m",
"webhook" : {
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": "/{{ctx.watch_id}}",
"body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}"
}
}
}
アクションの ID | |
webhook アクションを実行する前にペイロードを変換するためのオプションの transform |
|
アクションのオプションの スロットル期間(この例では 5 分) | |
ホストに接続する際に使用する HTTP メソッド | |
接続するホスト | |
接続するポート | |
HTTP リクエストで使用するパス (URI) | |
リクエストと共に送信するボディ |
セキュリティで保護されたウェブサービスにリクエストを送信する際に、基本認証を使用できます。たとえば、次の webhook
アクションは、GitHub に新しい問題を作成します:
Js
"actions" : {
"create_github_issue" : {
"transform": {
"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']]"
},
"webhook" : {
"method" : "POST",
"url" : "https://api.github.com/repos/<owner>/<repo>/issues",
"body": "{{#toJson}}ctx.payload{{/toJson}}",
"auth" : {
"basic" : {
"username" : "<username>",
"password" : "<password>"
}
}
}
}
}
問題を作成するユーザーのユーザー名とパスワード |
デフォルトでは、ユーザー名とパスワードは .watches
インデックスにプレーンテキストで保存されます。Elasticsearch のセキュリティ機能が有効になっている場合、Watcher はパスワードを保存する前に暗号化できます。
Elasticsearch のセキュリティ機能が有効になっているクラスターにリクエストを送信する際に、PKI ベースの認証を使用することもできます。HTTP 基本認証の代わりに PKI ベースの認証を使用する場合、ウォッチ自体に認証情報を保存する必要はありません。PKI ベースの認証を使用するには、elasticsearch.yml
で Watcher の SSL キー設定を 構成します。
Query Parameters
params
フィールドを使用してリクエストと共に送信するクエリパラメータを指定できます。このフィールドは、キーがパラメータ名、値がパラメータ値として機能するオブジェクトを保持します:
Js
"actions" : {
"my_webhook" : {
"webhook" : {
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": "/alert",
"params" : {
"watch_id" : "{{ctx.watch_id}}"
}
}
}
}
パラメータ値にはテンプレート化された文字列を含めることができます。 |
Custom Request Headers
headers
フィールドを使用してリクエストと共に送信するリクエストヘッダーを指定できます。このフィールドは、キーがヘッダー名、値がヘッダー値として機能するオブジェクトを保持します:
Js
"actions" : {
"my_webhook" : {
"webhook" : {
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": "/alert/{{ctx.watch_id}}",
"headers" : {
"Content-Type" : "application/yaml"
},
"body" : "count: {{ctx.payload.hits.total}}"
}
}
}
ヘッダー値にはテンプレート化された文字列を含めることができます。 |
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 。 |