У меня есть следующая конфигурация: журналы из экземпляров приложения перенаправляются на эластичный поиск с использованием filebeat и logstash.
Apps
+--------+
| +--------+
| | +--------+ +----------+ +----------+
| | | +--- | | | | |
+ | | |file| --> | logstash | -->| elastic |
+ | |beat| | (1) | | search |
+--------+ +----------+ +----------+
| |
(not avail) X | (query)
V |
+----------+ V
| | +------+
| logstash |<-----| Json |
| (2) | | file |
+----------+ +------+
Я хочу проверить обработку журналов в logstash-2, но в настоящее время я не могу реализовать пересылку из logstash-1.Поэтому я попытался сделать следующее: сделать запрос и упростить поиск полей _source документов, и я получил несколько json-документов, таких как:
{
"@timestamp": <timestamp>,
"@version": "1",
"requestMethod": "PUT",
"requestUri": "/api/endopoint",
"servername": "myserver"
.... many other fields
}
{
"@timestamp": <timestamp>,
"@version": "1",
}
... many other json objects
Мой вопрос: как я могу обработать эти json-документы из запросаasticsearch с помощью logstash?
Я пытался обработать их, используя многострочный кодек, а затем фильтр json, но не могу заставить его работать: Вот попытка:
input {
file {
path => "events.json"
sincedb_path => "/dev/null"
start_position => beginning
codec => multiline {
pattern => "^\}" #end of each json object
what => "previous"
}
}
}
filter {
json {
source => "event"
}
}
output {
stdout{}
}