Действие Watcher для Slack
Используйте действие slack для отправки сообщений в каналы или пользователям команды Slack. Для отправки сообщений Slack необходимо настроить по крайней мере одну учетную запись Slack в elasticsearch.yml.
Настройка действий Slack
Действия Slack настраиваются в массиве actions. Атрибуты, специфичные для действия, указываются с помощью ключевого слова slack.
Следующий фрагмент кода демонстрирует простое определение действия Slack:
"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)"
}
}
}
} | Каналы и пользователи, которым нужно отправить сообщение. | |
| Содержание сообщения. |
Использование вложений для форматирования сообщений Slack
Помимо отправки простых текстовых сообщений, вы можете использовать механизм вложений Slack attachment для отправки форматированных сообщений. 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"
}
]
}
}
}
} Чтобы определить шаблон вложения, который динамически заполняется данными из payload, необходимо указать dynamic_attachments в действии мониторинга. Например, динамическое вложение может ссылаться на корзины гистограмм в payload и создавать вложение на каждую корзину.
В следующем примере входное значение мониторинга выполняет поиск с агрегацией по дате и гистограмме, а также действием Slack:
- Преобразует payload в список, где каждый элемент списка содержит месяц, количество пользователей за этот месяц и цвет, представляющий отношение, связанное с этим количеством (опасный или плохой).
- Определяет шаблон вложения, который ссылается на элементы в списке, созданном преобразованием.
"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. Перезаписывает имя, настроенное для входящего веб-хука. |
| да | Каналы и пользователи, которым нужно отправить сообщение. Имена каналов должны начинаться с |
| нет | Иконка для отображения в сообщениях Slack. Перезаписывает настроенную иконку входящего веб-хука. Принимает общедоступный URL-адрес изображения. |
| да | Содержание сообщения. |
| нет | Вложения сообщений Slack. Вложения сообщений позволяют создавать более богатые по формату сообщения. Указывается массив, как определено в документации по вложениям Slack. |
| нет | Вложения сообщений Slack, которые можно динамически заполнять на основе текущих данных payload мониторинга. Более подробную информацию см. в разделе Использование вложений для форматирования сообщений Slack. |
| нет | Хост прокси, который нужно использовать (только в сочетании с |
| нет | Порт прокси, который нужно использовать (только в сочетании с |
Настройка учетных записей Slack
Настройка учетных записей, которые Watcher может использовать для связи со Slack, выполняется в пространстве имен xpack.notification.slack в elasticsearch.yml.
Для настройки учетной записи Slack необходим приложение Slack с функцией входящих веб-хуков. Используйте сгенерированный URL веб-хука для настройки учетной записи Slack в Elasticsearch.
Для настройки учетной записи Slack необходимо указать имя учетной записи и URL веб-хука в хранилище ключей Elasticsearch (см. настройки безопасности):
bin/elasticsearch-keystore add xpack.notification.slack.account.monitoring.secure_url
Настройка учетных записей Slack с помощью настроек elasticsearch.yml больше недоступна. Используйте метод хранилища ключей 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://www.elastic.co/guide/en/x-pack/current/index.html"
text: "One of your watches generated this notification."
mrkdwn_in: "pretext, text" Для уведомления нескольких каналов создайте URL веб-хука для каждого канала в Slack и несколько учетных записей Slack в Elasticsearch (по одной на каждый URL веб-хука).
Если вы настраиваете несколько учетных записей Slack, вам необходимо либо настроить учетную запись по умолчанию, либо указать учетную запись, с которой должны быть отправлены уведомления, в действии slack.
xpack.notification.slack:
default_account: team1
account:
team1:
...
team2:
...
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/actions-slack.html