Наблюдение за данными событий
Если вы индексируете данные событий, такие как сообщения журналов, сетевой трафик или веб-поток, вы можете создать смотритель для отправки уведомлений по электронной почте, когда произойдут определенные события. Например, если вы индексируете поток подтверждений RSVP для мероприятий, проходящих по всему миру, вы можете создать смотритель, который будет оповещать вас об интересных событиях.
Для индексирования данных о встречах вы можете использовать Logstash для извлечения данных в реальном времени из потокового API Meetup.com, http://stream.meetup.com/2/rsvps.
Для извлечения этих данных с помощью Logstash:
- Загрузите Logstash и распакуйте архивный файл.
-
Создайте файл конфигурации Logstash, использующий стандартный вход Logstash и стандартный выход Logstash, и сохраните его в каталоге
logstash-{version}какlivestream.conf:input { stdin { codec => json } } filter { date { match => [ "event.time", "UNIX_MS" ] target => "event_time" } } output { stdout { codec => rubydebug } elasticsearch { hosts => "http://localhost:9200" user => "elastic" password => "x-pack-test-password" } }Данные встреч отформатированы в формате JSON.
Индексируйте данные о встречах в Elasticsearch.
-
Для начала индексирования данных о встречах, направьте поток RSVP в Logstash и укажите свой
livestream.confфайл конфигурации.curl http://stream.meetup.com/2/rsvps | bin/logstash -f livestream.conf
Теперь, когда вы индексируете подтверждения RSVP о встречах, вы можете настроить смотритель, который будет сообщать вам об интересующих вас событиях. Например, давайте создадим смотритель, который запускается каждый час, ищет события, относящиеся к Open Source, и отправляет электронное письмо с информацией о событиях.
Для настройки смотрителя:
-
Укажите, как часто вы хотите запускать смотритель, добавив триггер расписания в смотритель:
{ "trigger": { "schedule": { "interval": "1h" } }, -
Загрузите данные в полезную нагрузку смотрителя, создав вход, который ищет в данных о встречах события, у которых Open Source указан как тема. Вы можете использовать агрегации для группировки данных по городам, консолидации ссылок на одни и те же события и сортировки событий по дате.
"input": { "search": { "request": { "indices": [ "logstash" ], "body": { "size": 0, "query": { "bool": { "filter": [ { "range": { "@timestamp": { "gte": "now-3h" } } }, { "match": { "group.group_topics.topic_name": "Open Source" } } ] } }, "aggs": { "group_by_city": { "terms": { "field": "group.group_city.keyword", "size": 5 }, "aggs": { "group_by_event": { "terms": { "field": "event.event_url.keyword", "size": 5 }, "aggs": { "get_latest": { "terms": { "field": "@timestamp", "size": 1, "order": { "_key": "desc" } }, "aggs": { "group_by_event_name": { "terms": { "field": "event.event_name.keyword" } } } } } } } } } } } } },logstash— это стандартный псевдоним индекса для индексов Logstash, содержащих данные о встречах. По умолчанию политика управления жизненным циклом индексов (ILM) Logstash переносит этот псевдоним в новый индекс, когда размер индекса достигает 50 ГБ или становится старше 30 дней. Дополнительную информацию см. в Значения ILM по умолчанию в Logstash.Найдите все RSVP с
Open Sourceв качестве темы.Сгруппируйте RSVP по городам.
Сконсолидируйте несколько RSVP для одного и того же события.
Отсортируйте события так, чтобы самые свежие события отображались первыми.
Сгруппируйте события по имени.
-
Чтобы определить, есть ли события Open Source, добавьте условие сравнения, которое проверяет полезную нагрузку смотрителя, чтобы увидеть, были ли какие-либо результаты поиска.
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} -
Чтобы отправить электронное письмо при обнаружении событий Open Source, добавьте действие электронной почты:
"actions": { "email_me": { "throttle_period": "10m", "email": { "from": "<from:email address>", "to": "<to:email address>", "subject": "Open Source Events", "body": { "html": "Found events matching Open Source: <ul>{{#ctx.payload.aggregations.group_by_city.buckets}}< li>{{key}} ({{doc_count}})<ul>{{#group_by_event.buckets}} <li><a href=\"{{key}}\">{{get_latest.buckets.0.group_by_event_name.buckets.0.key}}</a> ({{doc_count}})</li>{{/group_by_event.buckets}}</ul></li> {{/ctx.payload.aggregations.group_by_city.buckets}}</ul>" } } } }
Чтобы разрешить Watcher отправлять электронные письма, необходимо настроить учетную запись электронной почты в elasticsearch.yml. Дополнительную информацию см. в Настройка учетных записей электронной почты.
Полный смотритель выглядит следующим образом:
PUT _watcher/watch/meetup
{
"trigger": {
"schedule": {
"interval": "1h"
}
},
"input": {
"search": {
"request": {
"indices": [
"logstash"
],
"body": {
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-3h"
}
}
},
{
"match": {
"group.group_topics.topic_name": "Open Source"
}
}
]
}
},
"aggs": {
"group_by_city": {
"terms": {
"field": "group.group_city.keyword",
"size": 5
},
"aggs": {
"group_by_event": {
"terms": {
"field": "event.event_url.keyword",
"size": 5
},
"aggs": {
"get_latest": {
"terms": {
"field": "@timestamp",
"size": 1,
"order": {
"_key": "desc"
}
},
"aggs": {
"group_by_event_name": {
"terms": {
"field": "event.event_name.keyword"
}
}
}
}
}
}
}
}
}
}
}
}
},
"condition": {
"compare": {
"ctx.payload.hits.total": {
"gt": 0
}
}
},
"actions": {
"email_me": {
"throttle_period": "10m",
"email": {
"from": "username@example.org",
"to": "recipient@example.org",
"subject": "Open Source events",
"body": {
"html": "Found events matching Open Source: <ul>{{#ctx.payload.aggregations.group_by_city.buckets}}<li>{{key}} ({{doc_count}})<ul>{{#group_by_event.buckets}}<li><a href=\"{{key}}\">{{get_latest.buckets.0.group_by_event_name.buckets.0.key}}</a> ({{doc_count}})</li>{{/group_by_event.buckets}}</ul></li>{{/ctx.payload.aggregations.group_by_city.buckets}}</ul>"
}
}
}
}
} | Тело электронного письма может содержать шаблоны Mustache для ссылки на данные в полезной нагрузке смотрителя. По умолчанию оно будет обработанно, чтобы заблокировать опасное содержимое. | |
| Замените адрес | |
| Замените адрес |
После создания смотрителя вы можете использовать _execute API, чтобы запустить его без ожидания запуска по расписанию:
POST _watcher/watch/meetup/_execute
© 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/watching-meetup-data.html