Начало работы с Watcher
Для выполнения этих шагов необходимо получить лицензию, включающую функции оповещения. Дополнительную информацию о уровнях лицензий Elastic см. в https://www.elastic.co/subscriptions и Управление лицензиями.
Для настройки наблюдения, чтобы начать отправку оповещений:
- Установить расписание наблюдения и определить входные данные.
- Добавить условие, которое проверяет, необходимо ли отправлять оповещение.
- Настроить действие для отправки оповещения, когда условие выполнено.
Установить расписание наблюдения и определить входные данные
Расписание наблюдения расписание управляет частотой срабатывания наблюдения. Входные данные наблюдения входные данные получают данные, которые необходимо оценить.
Для периодического поиска данных журналов и загрузки результатов в наблюдение можно использовать расписание интервалов и входные данные поиска. Например, следующее наблюдение ищет ошибки в индексе logs каждые 10 секунд:
PUT _watcher/watch/log_error_watch
{
"trigger" : {
"schedule" : { "interval" : "10s" }
},
"input" : {
"search" : {
"request" : {
"indices" : [ "logs" ],
"body" : {
"query" : {
"match" : { "message": "error" }
}
}
}
}
}
} | Расписания обычно настраиваются на менее частую работу. В этом примере интервал установлен на 10 секунд, чтобы вы могли легко увидеть срабатывание наблюдений. Поскольку это наблюдение выполняется так часто, не забудьте удалить наблюдение, когда закончите экспериментировать. |
Если вы проверите историю наблюдения, вы увидите, что оно срабатывает каждые 10 секунд. Однако поиск не возвращает результатов, поэтому ничего не загружается в полезную нагрузку наблюдения.
Например, следующий запрос извлекает последние десять выполнений наблюдения (записи наблюдения) из истории наблюдения:
GET .watcher-history*/_search?pretty
{
"sort" : [
{ "result.execution_time" : "desc" }
]
} Добавить условие
Условие условия оценивает данные, загруженные в наблюдение, и определяет, требуется ли какое-либо действие. Теперь, когда вы загрузили ошибки журналов в наблюдение, вы можете определить условие, которое проверяет, найдены ли какие-либо ошибки.
Например, следующее условие сравнения просто проверяет, вернул ли входной поиск какие-либо совпадения.
PUT _watcher/watch/log_error_watch
{
"trigger" : { "schedule" : { "interval" : "10s" }},
"input" : {
"search" : {
"request" : {
"indices" : [ "logs" ],
"body" : {
"query" : {
"match" : { "message": "error" }
}
}
}
}
},
"condition" : {
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
}
} | Условие сравнения сравнения позволяет легко сравнить значения в контексте выполнения. |
Для того, чтобы это условие сравнения оценивалось как true, необходимо добавить событие в индекс logs, содержащий ошибку. Например, следующий запрос добавляет ошибку 404 в индекс logs:
POST logs/event
{
"timestamp": "2015-05-17T18:12:07.613Z",
"request": "GET index.html",
"status_code": 404,
"message": "Error: File not found"
} После добавления этого события при следующем выполнении условия наблюдения оно будет оцениваться как true. Результат условия записывается в качестве части watch_record каждый раз, когда выполняется наблюдение, поэтому вы можете проверить, было ли условие выполнено, выполнив поиск в истории наблюдения:
GET .watcher-history*/_search?pretty
{
"query" : {
"bool" : {
"must" : [
{ "match" : { "result.condition.met" : true }},
{ "range" : { "result.execution_time" : { "from" : "now-10s" }}}
]
}
}
} Настроить действие
Запись записей наблюдения в истории наблюдения неплохо, но настоящая мощь Watcher заключается в возможности выполнения действия, когда выполняется условие наблюдения. Действия наблюдения действия определяют, что делать, когда условие наблюдения оценивается как true. Вы можете отправлять электронные письма, вызывать сторонние веб-хуки, записывать документы в индекс Elasticsearch или записывать сообщения в стандартные файлы журналов Elasticsearch.
Например, следующее действие записывает сообщение в журнал Elasticsearch, когда обнаруживается ошибка.
PUT _watcher/watch/log_error_watch
{
"trigger" : { "schedule" : { "interval" : "10s" }},
"input" : {
"search" : {
"request" : {
"indices" : [ "logs" ],
"body" : {
"query" : {
"match" : { "message": "error" }
}
}
}
}
},
"condition" : {
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
},
"actions" : {
"log_error" : {
"logging" : {
"text" : "Found {{ctx.payload.hits.total}} errors in the logs"
}
}
}
} Удалить наблюдение
Поскольку наблюдение log_error_watch настроено на выполнение каждые 10 секунд, убедитесь, что вы удалите его, когда закончите экспериментировать. В противном случае шум от этого примера наблюдения затруднит понимание того, что происходит еще в вашей истории наблюдений и файлах журнала.
Для удаления наблюдения используйте API для удаления наблюдения:
DELETE _watcher/watch/log_error_watch
Требуемые права безопасности
Чтобы пользователи могли создавать и изменять наблюдения, назначьте им роль безопасности watcher_admin. Администраторы Watcher также могут просматривать наблюдения, историю наблюдений и сработавшие наблюдения.
Чтобы пользователи могли просматривать наблюдения и историю наблюдений, назначьте им роль безопасности watcher_user. Пользователи Watcher не могут создавать или изменять наблюдения; им разрешены только операции чтения наблюдений.
Следующие шаги
- См. Как работает Watcher для получения дополнительной информации об анатомии наблюдения и жизненном цикле наблюдения.
- См. Примеры наблюдений для получения дополнительных примеров настройки наблюдения.
- См. Примеры наблюдений в репозитории Elastic Examples для получения дополнительных примеров наблюдений, которые можно использовать в качестве отправной точки для создания пользовательских наблюдений.
© 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/watcher-getting-started.html