Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.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 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:

  1. Преобразует полезную нагрузку в список, где каждый элемент списка содержит месяц, количество пользователей в этом месяце и цвет, представляющий настроение, связанное с этим количеством (опасный или плохой).
  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, которые могут быть динамически заполнены на основе текущей полезной нагрузки наблюдения. Дополнительная информация приведена в разделе «Использование вложений для форматирования сообщений 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/7.17/actions-slack.html

Spec-Zone.ru

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