1
ELK 스택을 처음 사용하므로 기본 질문을 용서하십시오. 내가 성취하고자하는 것은 "message"필드를 json 객체로 만들어서 kibana에서 필터링 할 수 있도록하는 것입니다. 현재 메시지는 다음과 같습니다logstash에서 json을 처리하는 방법
'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'
});
:
{
"_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 파일은 Node.js를 앱에서 보얀 로거에 의해 생산되고이
input {
tcp {
port => 5000
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
}
}
로그처럼 보이는
logstash에 어떤 플러그인을 설치해야하며 "message"필드를 json 필드로 바꾸려면 logstash.conf 파일을 어떻게 사용해야합니까?
들으 많이! 그 트릭을 했어 :) ELK – Tino
의 매달려 기분이 좋았어, 다행스럽게 도왔다! – Val