Grok processor
Тема дорожной карты · Elasticsearch
Процессор Grok — один из наиболее часто используемых процессоров в ingest-конвейерах Elasticsearch; он разбирает неструктурированные текстовые поля в структурированные именованные поля с использованием синтаксиса паттернов Grok (надмножества регулярных выражений). Процессор Grok добавляется в ingest-конвейер путём включения в массив processors запроса PUT /_ingest/pipeline/<pipeline_id> с указанием исходного поля field (например, message) и одного или нескольких паттернов patterns (например, %{IP:client_ip} %{WORD:http_method} %{URIPATHPARAM:request}). Когда документ проходит через процессор Grok, Elasticsearch применяет паттерн к значению поля и записывает каждую именованную группу захвата как новое поле верхнего уровня в документ перед его сохранением в индексе. Процессоры Grok — основной способ разбора необработанных записей Apache, Nginx и syslog, поступающих через Logstash или Beats до попадания в Elasticsearch, преобразующий плоские строки логов в поля, по которым можно вести поиск и фильтрацию. Консоль Dev Tools в Kibana предоставляет эндпоинт POST /_ingest/pipeline/_simulate, позволяющий проверять паттерны процессора Grok на тестовых документах без изменения действующего конвейера.
Как это работает
Grok processor: Elasticsearch может трансформировать документы при ingest через Ingest Pipelines — цепочки processors. Распространённые: grok (парсит unstructured text — syslog/nginx access logs), set/rename/remove/copy (манипуляция полями), geoip (enrich IPs), pipeline (compose). Быстрее Logstash для простых трансформ, работает на ES-нодах. Logstash добавляет heavier transforms + multiple outputs + queueing. Beats (Filebeat, Metricbeat) — lightweight shippers для log/metric collection.
Когда применять
Для простых трансформ (field renames, IP enrichment, log parsing) — Ingest Pipelines прямо в ES: меньше moving parts. Logstash для queueing, multiple outputs, сложного enrichment, или где ES-ноды не должны handle ingest CPU. Filebeat — дефолтный log shipper. Тестируйте pipelines через _simulate API до деплоя.
Типичные ошибки
Ловушки Grok processor: pipelines на dedicated data ноды (CPU contention с queries — dedicated ingest ноды); grok patterns не match (тихие failures); нет failure handlers (pipeline errors глотают данные); не версионируют pipelines (изменение ломает всех consumers).