Elasticsearch Logstash Filebeat mapping
У меня проблема с ELK Stack + Filebeat.
Filebeat отправляет логи, похожие на apache, в Logstash, который должен анализировать строки. Elasticsearch должен хранить разделенные данные в полях, чтобы я мог визуализировать их с помощью Kibana.
Проблема: Elasticsearch получает журналы, но сохраняет их в одном поле "сообщения".
Желаемое решение:
Входные данные:
10.0.0.1 some.hostname.at - [27 / Jun / 2017: 23: 59: 59 +0200]
ES:
"Ф": "10.0.0.1"
"Имя хоста": "some.hostname.at"
"отметка времени":"27/ июнь /2017:23:59:59 +0200"
Моя конфигурация logstash:
input {
beats {
port => 5044
}
}
filter {
if [type] == "web-apache" {
grok {
patterns_dir => ["./patterns"]
match => { "message" => "IP: %{IPV4:client_ip}, Hostname: %{HOSTNAME:hostname}, - \[timestamp: %{HTTPDATE:timestamp}\]" }
break_on_match => false
remove_field => [ "message" ]
}
date {
locale => "en"
timezone => "Europe/Vienna"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
useragent {
source => "agent"
prefix => "browser_"
}
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["localhost:9200"]
index => "test1"
document_type => "accessAPI"
}
}
Мой Elasticsearch обнаружил вывод:
Я надеюсь, что есть специалисты ELK, которые могут мне помочь. Заранее спасибо, Матиас
1 ответ
Фильтр Grok, который вы указали, не будет работать здесь
Попробуйте использовать:
%{IPV4:client_ip} %{HOSTNAME:hostname} - \[%{HTTPDATE:timestamp}\]
Нет необходимости указывать нужные имена отдельно перед именами полей (вы не пытаетесь отформатировать сообщение здесь, а извлекаете отдельные поля), просто указав имя поля в скобках после ":" приведет к результат, который вы хотите.
Кроме того, используйте функцию перезаписи вместо поля remove_field для сообщения. Больше информации здесь:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
Это будет выглядеть примерно так:
filter {
grok {
match => { "message" => "%{IPV4:client_ip} %{HOSTNAME:hostname} - \[%{HTTPDATE:timestamp}\]" }
overwrite => [ "message" ]
}
}
Вы можете проверить фильтры grok здесь:
http://grokconstructor.appspot.com/do/match