Watcher Slack 动作
编辑Watcher Slack 动作
编辑使用 slack
动作将消息发送到 Slack 团队的频道或用户。要发送 Slack 消息,您需要在 elasticsearch.yml
中配置至少一个 Slack 账户。
配置 Slack 动作
编辑您可以在 actions
数组中配置 Slack 动作。使用 slack
关键字指定特定于动作的属性。
以下代码片段显示了一个简单的 slack 动作定义
使用附件格式化 Slack 消息
编辑除了发送简单的基于文本的消息外,您还可以使用 Slack 附件 机制发送格式化的消息。Watcher 利用 Slack 附件使您可以从执行上下文有效负载动态填充模板消息。
以下代码片段显示了一个标准的消息附件
"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 动作
- 将有效负载转换为列表,其中列表中的每个项目都包含月份、该月份的用户数量以及表示与该数量相关的观点(危险或糟糕)的颜色。
- 定义一个引用转换生成的列表中项目的附件模板。
"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 动作属性
编辑名称 | 必填 | 描述 |
---|---|---|
|
否 |
要在 Slack 消息中显示的发件人姓名。覆盖传入 Webhook 配置的名称。 |
|
是 |
您想要将消息发送到的频道和用户。频道名称必须以 |
|
否 |
要在 Slack 消息中显示的图标。覆盖传入 Webhook 配置的图标。接受指向图像的公共 URL。 |
|
是 |
消息内容。 |
|
否 |
Slack 消息附件。消息附件使您可以创建格式更丰富的消息。Slack 附件文档中定义的指定数组。 |
|
否 |
可以根据当前监视有效负载动态填充的 Slack 消息附件。有关更多信息,请参见 使用附件格式化 Slack 消息。 |
|
否 |
要使用的代理主机(仅与 |
|
否 |
要使用的代理端口(仅与 |
配置 Slack 账户
编辑您可以在 elasticsearch.yml
中的 xpack.notification.slack
命名空间中配置 Watcher 可用于与 Slack 通信的账户。
您需要一个具有 传入 Webhook 功能 的 Slack 应用才能配置 Slack 账户。使用生成的 Webhook URL 在 Elasticsearch 中设置您的 Slack 账户。
要配置 Slack 账户,您至少需要在 Elasticsearch 密钥库中指定账户名称和 Webhook URL(请参见 安全设置)
bin/elasticsearch-keystore add xpack.notification.slack.account.monitoring.secure_url
您不能再使用 elasticsearch.yml
设置配置 Slack 账户。请改用 Elasticsearch 的安全 密钥库 方法。
您可以为 Slack 通知属性 指定默认值。
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://elastic.ac.cn/guide/en/x-pack/current/index.html" text: "One of your watches generated this notification." mrkdwn_in: "pretext, text"
要通知多个频道,请为 Slack 中的每个频道创建一个 Webhook URL,并在 Elasticsearch 中创建多个 Slack 账户(每个 Webhook URL 一个)。
如果您配置了多个 Slack 账户,则需要配置一个默认账户,或者在 slack
动作中指定应使用哪个账户发送通知。
xpack.notification.slack: default_account: team1 account: team1: ... team2: ...