[closed]не выстраиваются поля


(Anton) #1

Добрый день.
Есть некоторая проблема, корни которой в моем незнании комплекса в целом.
Данные отправляются filebeat'ем в ELK, индекс строится, строятся поля, пока что некоторые - еще дописываю регулярку.
http://grokconstructor.appspot.com/do/match проверил мой фильтр и в нем match'ится куски лога по регулярке, поля появляются.

Файлы input, filter и output написаны с цифрами в названиях по возрастанию

[details=input]input {
beats {
port => 5044
}
}

[/details]

фильтр

filter {
if [type] == "syslog" or [type] == "maillog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
}
else if [type] == "nginx-errors" {
grok {
patterns_dir => "/opt/logtash/patterns"
match => { "message" => "%{NGINX_CUSTERR}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]

}
}
date {
locale => "en"
match => ["timestamp", "Day dd YYYY, HH:mm:ss:sss"]
timezone => "Europe/Moscow"Client host rejected: cannot find
your hostname
target => "@timestamp"
}
}


output

output {
if "maillog" in [type] {
elasticsearch {
hosts => ["192.168.1.162:9200"]
index => "maillog-%{+YYYY.MM.dd}"
}
}
if "nginx-errors" in [type] {
elasticsearch {
hosts => ["192.168.1.162:9200"]
index => "nginx-errors-%{+YYYY.MM.dd}"
}

} else if "apache-access" in [type] {
elasticsearch {
hosts => ["192.168.1.162:9200"]
index => "apache-access-%{+YYYY.MM.dd}"

}

} else {
elasticsearch {
hosts => ["192.168.1.162:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}
}

отправка логов:

[details=filebeat.yml

]
filebeat:
prospectors:
-
paths:
- files/error.log
input_type: nginx-errors
document_type: nginx-errors
[/details]

Суть проблемы в том, что в поле message попадают куски лога, а именно, начало следующей строки, только два слова.

Подскажите, пожалуйста, чего я не понимаю или недоглядел?

версия Elastic'а и Logstash'а

"name" : "Namor McKenzie",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.1",
"build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39",
"build_timestamp" : "2016-04-04T12:25:05Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
/opt/logstash/bin/logstash -v
file-5.14

Вопрос снимается, кривая регулярка:

регулярка

^+?(?PHP.+?):\s+([(?%{MONTHDAY}-%{MONTH}-%{YEAR}\s%{TIME})]\s+)?(?.+?):\s(?.+?)(called)*\s?\s+in\s(?%{UNIXPATH})\son\sline\s(?%{INT})


(Igor Motov) #2

Не совсем понял, что это значит. В message должена находится вся строка целиком, если ее не переписывать. Вы не могли бы пример исходной строки лога и записи в elasticsearch показать?


(Anton) #3

Конечно.


(Igor Motov) #4

Какая версия filebeat?


(Anton) #5

filebeat version 1.2.2 (amd64)


(system) #6