Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Watcher ›Watcher actions

Действие 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:

  1. Преобразует payload в список, где каждый элемент списка содержит месяц, количество пользователей за этот месяц и цвет, представляющий отношение, связанное с этим количеством (опасный или плохой).
  2. Определяет шаблон вложения, который ссылается на элементы в списке, созданном преобразованием.
"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

Имя Требуется Описание

message.from

нет

Имя отправителя для отображения в сообщении Slack. Перезаписывает имя, настроенное для входящего веб-хука.

message.to

да

Каналы и пользователи, которым нужно отправить сообщение. Имена каналов должны начинаться с #, а имена пользователей - с @. Принимает строковое значение или массив строковых значений.

message.icon

нет

Иконка для отображения в сообщениях Slack. Перезаписывает настроенную иконку входящего веб-хука. Принимает общедоступный URL-адрес изображения.

message.text

да

Содержание сообщения.

message.attachments

нет

Вложения сообщений Slack. Вложения сообщений позволяют создавать более богатые по формату сообщения. Указывается массив, как определено в документации по вложениям Slack.

message.dynamic_attachments

нет

Вложения сообщений Slack, которые можно динамически заполнять на основе текущих данных payload мониторинга. Более подробную информацию см. в разделе Использование вложений для форматирования сообщений Slack.

proxy.host

нет

Хост прокси, который нужно использовать (только в сочетании с proxy.port)

proxy.port

нет

Порт прокси, который нужно использовать (только в сочетании с proxy.host)

Настройка учетных записей 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API