Я понимаю, что Logstash предназначен для агрегирования и обработки журналов.У меня есть журналы NGIX, и я настроил конфигурацию Logstash следующим образом:
filter {
grok {
match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"]
overwrite => [ "message" ]
}
mutate {
convert => ["response", "integer"]
convert => ["bytes", "integer"]
convert => ["responsetime", "float"]
}
geoip {
source => "clientip"
target => "geoip"
add_tag => [ "nginx-geoip" ]
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
remove_field => [ "timestamp" ]
}
useragent {
source => "agent"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "weblogs-%{+YYYY.MM}"
document_type => "nginx_logs"
}
stdout { codec => rubydebug }
}
Это позволит проанализировать неструктурированные журналы в структурированную форму данных и сохранить данные в ежемесячные индексы.
Я обнаружил, что большинство журналов были предоставлены роботами / веб-сканерами.В python я бы отфильтровал их по:
browser_names = browser_names[~browser_names.str.\
match('^[\w\W]*(google|bot|spider|crawl|headless)[\w\W]*$', na=False)]
Однако я хотел бы отфильтровать их с помощью Logstash, чтобы я мог сэкономить много дискового пространства на сервере Elasticsearch.Есть способ сделать это?Заранее спасибо!