Действие 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 attachments для отправки форматированных сообщений. 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 в действии наблюдения. Например, динамическое вложение может ссылаться на корзины гистограммы в полезной нагрузке и создавать вложение на каждую корзину.
В следующем примере входной watch выполняет поиск с агрегацией по гистограмме дат, и действие 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. Переопределяет имя, настроенное для входящего веб-хука. |
| да | Каналы и пользователи, которым нужно отправить сообщение. Имена каналов должны начинаться с |
| нет | Иконка для отображения в сообщениях Slack. Переопределяет иконку, настроенную для входящего веб-хука. Принимает публичный URL-адрес изображения. |
| да | Содержание сообщения. |
| нет | Вложения сообщений Slack. Вложения сообщений позволяют создавать более форматированные сообщения. Указывается в виде массива, как определено в документации по вложениям Slack. |
| нет | Вложения сообщений Slack, которые могут быть динамически заполнены на основе текущей полезной нагрузки наблюдения. Дополнительная информация приведена в разделе «Использование вложений для форматирования сообщений 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/7.17/actions-slack.html