2017-01-16 10 views
1

Я новичок в стеке ELK, поэтому, пожалуйста, простите основные вопросы. То, что я хотел бы достичь, - сделать поле «сообщение» объектом json, чтобы я мог его фильтровать в кибане. В настоящее время сообщение выглядит следующим образом:Как обрабатывать json в logstash

{ 
    "_index": "logstash-2017.01.16", 
    "_type": "logs", 
    "_id": "AVmpCcSiEWIcXZql", 
    "_score": null, 
    "_source": { 
    "@timestamp": "2017-01-16T20:48:26.688Z", 
    "port": 50018, 
    "@version": "1", 
    "host": "xxx.xx.x.xx", 
    "message": "{\"@timestamp\":\"2017-01-16T20:48:26.642Z\",\"message\":\"\",\"tags\":[\"routing\"],\"source\":\"81caea3a2960/node /usr/src/app/src\",\"level\":\"info\",\"name\":\"apiservice-app\",\"server\":\"apiservice-app\",\"application\":\"apiservice-app\",\"port\":8080,\"hostname\":\"81caea3a2960\",\"pid\":16,\"req\":{\"method\":\"GET\",\"url\":\"/twitter/local/lists\",\"headers\":{\"host\":\"xxx.xx.x.xx:8080\",\"connection\":\"close\"},\"body\":{},\"hostname\":\"xxx.xx.x.xx\",\"ip\":\"::ffff:xxx.xx.x.xx\",\"originalUrl\":\"/twitter/local/lists\",\"params\":{},\"path\":\"/twitter/local/lists\",\"query\":{}},\"src\":{\"file\":\"/usr/src/app/src/libs/logstash.js\",\"line\":68}"}", 
    "tags": [] 
    }, 
    "fields": { 
    "@timestamp": [ 
     1484599706688 
    ] 
    }, 
    "sort": [ 
    1484599706688 
    ] 
} 

Мой файл logstash.conf выглядит следующим образом

input { 
tcp { 
    port => 5000 
} 
} 


output { 
elasticsearch { 
    hosts => "elasticsearch:9200" 
} 
} 

бревен производятся на Буяне регистратор в Node.js приложение:

'use strict'; 

const bunyan = require('bunyan'); 
const bunyantcp = require('bunyan-logstash-tcp'); 

let log = bunyan.createLogger({ 
     src: true, 
     name: app.get('host'), 
     server: app.get('host'), 
     application: app.get('host'), 
     port: app.get('port'), 
     tags: ['routing'], 
     streams: [{ 
     level: 'info', 
      type: "raw", 
      stream: process.stdout 
     },{ 
      level: 'info', 
      type: "raw", 
      stream: bunyantcp.createStream({ 
       host: serviceLogstashSettings.address, 
       port: serviceLogstashSettings.port 
      }) 
     }], 
     level: 'debug' 
}); 

Какие плагины мне нужно установить в logstash и как мой файл logstash.conf должен искать, чтобы изменить поле «сообщение» в поле json?

ответ

1

Это хорошее начало. Теперь все, что вам нужно использовать json кодек в вашем tcp вход для анализа поступающих данных как JSON, например:

input { 
tcp { 
    port => 5000 
    codec => `json` 
} 
} 
+0

ТНХ много! Сделал трюк :) получив завивку ELK – Tino

+0

приятно, рад, что это помогло! – Val

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

  • Нет связанных вопросов^_^