繁体   English   中英

如何在logstash中处理json

[英]How to process json in logstash

我是 ELK Stack 的新手,所以请原谅基本问题。 我想要实现的是将“消息”字段设为 json 对象,以便我可以在 kibana 中对其进行过滤。 目前,一条消息如下所示:

{
  "_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 应用程序中的buyan 记录器生成:

'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 字段?

这是一个好的开始。 现在您只需要在tcp输入中使用json编解码器将传入的数据解析为 JSON,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM