🪵 Logstash
Конвейер логов: input, filter, output, grok и частые настройки.
Шпаргалки · Инфраструктура · #logstash #elk #pipeline
Структура конвейера
input {
beats { port => 5044 }
file { path => "/var/log/app/*.log" start_position => "beginning" }
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
}
date { match => ["ts", "ISO8601"] target => "@timestamp" }
mutate {
remove_field => ["ts"]
add_field => { "env" => "prod" }
}
if [level] == "DEBUG" { drop {} }
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "app-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
Запуск и проверка
logstash -f pipeline.conf
logstash -f pipeline.conf --config.test_and_exit # проверка синтаксиса
logstash -f pipeline.conf --config.reload.automatic
Конвейеры в pipelines.yml, настройки в logstash.yml.
Частые плагины
| Этап | Плагины |
|---|---|
| input | beats, file, kafka, http, jdbc, syslog |
| filter | grok, dissect, json, mutate, date, geoip, useragent, csv |
| output | elasticsearch, kafka, file, stdout |
Приёмы
dissectбыстрееgrok, если формат строк фиксированный.- Отладка
grok: Grok Debugger в Kibana (Dev Tools). - Для многострочных логов (stack trace) используйте
codec => multiline. - Лёгкая альтернатива: Filebeat, Elastic Agent, Fluent Bit, Vector.