2015-10-26 3 views
3

Я использую Bunyan и bunyas-lumberjack для отправки своих журналов в лог-файл и индексацию их в поиске эластичности. Проблема я столкнулся, когда я фильтрация журналов: Я использую базовый фильтр для Logstash:NodeJS Bunyan Logstash Log Indexing

filter { 
if [type == "json"]{ 
     json { 
       source => "message" 
     } 
    } 
} 

, что ставит JSON из Bunyan в поле source.message и индексирует его в упругом поиске. Как я могу проиндексировать каждое поле из буняна в конкретное поле поиска упругого иска, чтобы я мог его искать или использовать в Кибане?

Я присоединяю то, что я получил сейчас, и то, что хочу получить в качестве примера. В настоящее время :

{ 
    "_index": "logstash-2015.10.26", 
    "_type": "json", 
    "_id": "AVCjvDHWHiX5VLMgQZIC", 
    "_score": null, 
    "_source": { 
    "message": "{\"name\":\"myLog\",\"hostname\":\"atnm-4.local\",\"pid\":6210,\"level\":\"error\",\"message\":\"This should work!\",\"@timestamp\":\"2015-10-26T10:40:29.503Z\",\"tags\":[\"bunyan\"],\"source\":\"atnm-4.local/node\"}", 
    "@version": "1", 
    "@timestamp": "2015-10-26T10:40:31.184Z", 
    "type": "json", 
    "host": "atnm-4.local", 
    "bunyanLevel": "50" 
    }, 

Требуются:

{ 
    "_index": "logstash-2015.10.26", 
    "_type": "json", 
    "_id": "AVCjvDHWHiX5VLMgQZIC", 
    "_score": null, 
    "_source": { 
    "message": { 
     "name": example, 
     "hostname": example, 
     "etc": example 
+0

Кажется, что, добавив кодек как json в lumberjack, все будет хорошо работать: codec => json, но я не думаю, что могу по-прежнему индексировать syslogs, правильно? – alexsc

ответ

1

Каждый вход в logstash может иметь различный кодек и тип. В вашем случае, если вы хотите индексировать bunyan и syslog, у вас будет два входа с двумя разными типами. В syslog будет кодек «plain», у bunyan будет «json». Вам не нужен фильтр для сообщений bunyan. Json будет проанализирован, и поля будут отображаться автоматически. Вам нужно будет иметь фильтр для анализа входа syslog.

Смежные вопросы