Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›ES|QL

Примеры ES|QL

Агрегирование и обогащение журналов событий Windows

FROM logs-*
| WHERE event.code IS NOT NULL
| STATS event_code_count = COUNT(event.code) BY event.code,host.name
| ENRICH win_events ON event.code WITH event_description
| WHERE event_description IS NOT NULL and host.name IS NOT NULL
| RENAME event_description AS event.description
| SORT event_code_count DESC
| KEEP event_code_count,event.code,host.name,event.description
  • Начинается с запроса журналов из индексов, соответствующих шаблону "logs-*".
  • Фильтрует события, где поле "event.code" не равно null.
  • Агрегирует количество событий по "event.code" и "host.name".
  • Обогащает события дополнительной информацией, используя поле "EVENT_DESCRIPTION".
  • Фильтрует события, где "EVENT_DESCRIPTION" или "host.name" равно null.
  • Переименовывает "EVENT_DESCRIPTION" в "event.description".
  • Сортирует результат по "event_code_count" в порядке убывания.
  • Оставляет только выбранные поля: "event_code_count", "event.code", "host.name" и "event.description".

Суммирование исходящего трафика процесса curl.exe

FROM logs-endpoint
| WHERE process.name == "curl.exe"
| STATS bytes = SUM(destination.bytes) BY destination.address
| EVAL kb =  bytes/1024
| SORT kb DESC
| LIMIT 10
| KEEP kb,destination.address
  • Запрашивает журналы из источника "logs-endpoint".
  • Фильтрует события, где поле "process.name" равно "curl.exe".
  • Вычисляет сумму байтов, отправленных по адресам назначения, и преобразует ее в килобайты (KB).
  • Сортирует результаты по "kb" (килобайты) в порядке убывания.
  • Ограничивает вывод 10-ю лучшими результатами.
  • Оставляет только поля "kb" и "destination.address".

Обработка журналов DNS для поиска большого количества уникальных запросов DNS на домен

FROM logs-*
| GROK dns.question.name "%{DATA}\\.%{GREEDYDATA:dns.question.registered_domain:string}"
| STATS unique_queries = COUNT_DISTINCT(dns.question.name) BY dns.question.registered_domain, process.name
| WHERE unique_queries > 10
| SORT unique_queries DESC
| RENAME unique_queries AS `Unique Queries`, dns.question.registered_domain AS `Registered Domain`, process.name AS `Process`
  • Запрашивает журналы из индексов, соответствующих шаблону "logs-*".
  • Использует шаблон "grok" для извлечения зарегистрированного домена из поля "dns.question.name".
  • Вычисляет количество уникальных запросов DNS на зарегистрированный домен и имя процесса.
  • Фильтрует результаты, где "unique_queries" больше 10.
  • Сортирует результаты по "unique_queries" в порядке убывания.
  • Переименовывает поля для ясности: "unique_queries" в "Уникальные запросы", "dns.question.registered_domain" в "Зарегистрированный домен", а "process.name" в "Процесс".

Выявление большого числа исходящих подключений пользователей

FROM logs-*
| WHERE NOT CIDR_MATCH(destination.ip, "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")
| STATS destcount = COUNT(destination.ip) BY user.name, host.name
| ENRICH ldap_lookup_new ON user.name
| WHERE group.name IS NOT NULL
| EVAL follow_up = CASE(destcount >= 100, "true","false")
| SORT destcount DESC
| KEEP destcount, host.name, user.name, group.name, follow_up
  • Запрашивает журналы из индексов, соответствующих шаблону "logs-*".
  • Фильтрует события, где IP-адрес назначения находится в диапазонах частных IP-адресов (например, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16).
  • Вычисляет количество уникальных IP-адресов назначения по "user.name" и "host.name".
  • Обогащает поле "user.name" информацией о группе LDAP.
  • Фильтрует результаты, где "group.name" не равно null.
  • Использует оператор "CASE" для создания поля "follow_up", устанавливая его в "true", если "destcount" больше или равен 100, и в "false" в противном случае.
  • Сортирует результаты по "destcount" в порядке убывания.
  • Оставляет выбранные поля: "destcount", "host.name", "user.name", "group.name" и "follow_up".

© 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/esql-examples.html

Spec-Zone.ru

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