Watcher Slack Action
slack
アクションを使用して、Slack チームのチャンネルやユーザーにメッセージを送信します。Slack メッセージを送信するには、elasticsearch.yml
で 少なくとも 1 つの Slack アカウントを構成する必要があります。
Configuring Slack actions
Slack アクションは actions
配列で構成します。アクション固有の属性は slack
キーワードを使用して指定します。
以下のスニペットは、シンプルな Slack アクションの定義を示しています:
Js
"actions" : {
"notify-slack" : {
"transform" : { ... },
"throttle_period" : "5m",
"slack" : {
"message" : {
"to" : [ "#admins", "@chief-admin" ],
"text" : "Encountered {{ctx.payload.hits.total}} errors in the last 5 minutes (facepalm)"
}
}
}
}
メッセージを送信したいチャンネルとユーザー。 | |
メッセージの内容。 |
Using attachments to format Slack messages
単純なテキストベースのメッセージを送信するだけでなく、Slack の attachment 機能を使用してフォーマットされたメッセージを送信できます。Watcher は Slack 添付ファイルを活用して、実行コンテキストのペイロードからテンプレート化されたメッセージを動的に生成できるようにします。
以下のスニペットは、標準のメッセージ添付ファイルを示しています:
Js
"actions" : {
"notify-slack" : {
"throttle_period" : "5m",
"slack" : {
"account" : "team1",
"message" : {
"from" : "watcher",
"to" : [ "#admins", "@chief-admin" ],
"text" : "System X Monitoring",
"attachments" : [
{
"title" : "Errors Found",
"text" : "Encountered {{ctx.payload.hits.total}} errors in the last 5 minutes (facepalm)",
"color" : "danger"
}
]
}
}
}
}
ペイロードから動的に生成される添付ファイルテンプレートを定義するには、ウォッチアクションで dynamic_attachments
を指定します。たとえば、動的な添付ファイルはペイロード内のヒストグラムバケットを参照し、バケットごとに添付ファイルを構築できます。
以下の例では、ウォッチ入力が日付ヒストグラム集計を使用して検索を実行し、Slack アクションを実行します:
- 1. ペイロードをリストに変換し、リスト内の各アイテムがその月のユーザー数と、その数に関連する感情を表す色(危険または悪)を保持します。
- 2. 変換によって生成されたリスト内のアイテムを参照する添付ファイルテンプレートを定義します。
Js
"input" : {
"search" : {
"request" : {
"body" : {
"aggs" : {
"users_per_month" : {
"date_histogram" : {
"field" : "@timestamp",
"interval" : "month"
}
}
}
}
}
}
},
...
"actions" : {
"notify-slack" : {
"throttle_period" : "5m",
"transform" : {
"script" : {
"source" : "['items': ctx.payload.aggregations.users_per_month.buckets.collect(bucket -> ['count': bucket.doc_count, 'name': bucket.key_as_string, 'color': bucket.doc_count < 100 ? 'danger' : 'good'])]",
"lang" : "painless"
}
},
"slack" : {
"account" : "team1",
"message" : {
"from" : "watcher",
"to" : [ "#admins", "@chief-admin" ],
"text" : "System X Monitoring",
"dynamic_attachments" : {
"list_path" : "ctx.payload.items"
"attachment_template" : {
"title" : "{{month}}",
"text" : "Users Count: {{count}}",
"color" : "{{color}}"
}
}
}
}
}
}
アクションの変換によって生成されたリスト。 | |
パラメータプレースホルダーは、変換によって生成されたリストの各アイテムの属性を参照します。 |
Slack action attributes
名前 | 必須 | 説明 |
---|---|---|
message.from |
いいえ | Slack メッセージに表示される送信者名。 受信ウェブフックの設定された名前を上書きします。 |
message.to |
はい | メッセージを送信したいチャンネルとユーザー。 チャンネル名は # で始まり、ユーザー名は @ で始まる必要があります。文字列値または文字列値の配列を受け入れます。 |
message.icon |
いいえ | Slack メッセージに表示されるアイコン。受信ウェブフックの設定されたアイコンを上書きします。画像の公開 URL を受け入れます。 |
message.text |
はい | メッセージの内容。 |
message.attachments |
いいえ | Slack メッセージの添付ファイル。メッセージの添付ファイルを使用すると、よりリッチにフォーマットされたメッセージを作成できます。 Slack attachments documentation で定義された配列を指定します。 |
message.dynamic_attachments |
いいえ | 現在のウォッチペイロードに基づいて動的に生成できる Slack メッセージの添付ファイル。詳細については、 Using attachments to format Slack messages を参照してください。 |
proxy.host |
いいえ | 使用するプロキシホスト(proxy.port と組み合わせてのみ使用)。 |
proxy.port |
いいえ | 使用するプロキシポート(proxy.host と組み合わせてのみ使用)。 |
Configuring Slack Accounts
Watcher が Slack と通信するために使用できるアカウントは、xpack.notification.slack
名前空間の elasticsearch.yml
で構成します。
Slack アカウントを構成するには、Incoming Webhooks feature を持つ Slack アプリが必要です。生成されたウェブフック URL を使用して、Elasticsearch で Slack アカウントを設定します。
Slack アカウントを構成するには、少なくともアカウント名とウェブフック URL を Elasticsearch キーストアに指定する必要があります(secure settings を参照)。
Shell
bin/elasticsearch-keystore add xpack.notification.slack.account.monitoring.secure_url
もはや elasticsearch.yml
設定を使用して Slack アカウントを構成することはできません。代わりに、Elasticsearch の安全な keystore メソッドを使用してください。
Slack notification attributes のデフォルトを指定できます:
Yaml
xpack.notification.slack:
account:
monitoring:
message_defaults:
from: x-pack
to: notifications
icon: http://example.com/images/watcher-icon.jpg
attachment:
fallback: "X-Pack Notification"
color: "#36a64f"
title: "X-Pack Notification"
title_link: "https://www.elastic.co/guide/en/x-pack/current/index.html"
text: "One of your watches generated this notification."
mrkdwn_in: "pretext, text"
複数のチャンネルに通知するには、Slack の各チャンネルに対してウェブフック URL を作成し、Elasticsearch に複数の Slack アカウントを作成します(各ウェブフック URL ごとに 1 つ)。
複数の Slack アカウントを構成する場合は、デフォルトアカウントを構成するか、通知を送信するアカウントを slack
アクションで指定する必要があります。
Yaml
xpack.notification.slack:
default_account: team1
account:
team1:
...
team2:
...