elasticsearch 处理JSON+;使用logstash和#x2B;拍子
我试图将一些JSON日志文件(其中包含stacktrace)解析为Logstash,但我认为堆栈跟踪不会让它发生 这是我的日志配置:(我尝试过的众多配置之一) 这就是我正在尝试解决的json类型(它是jasmine的jsonReporter的结果)elasticsearch 处理JSON+;使用logstash和#x2B;拍子,elasticsearch,logstash,kibana,logstash-configuration,elastic-stack,elasticsearch,Logstash,Kibana,Logstash Configuration,Elastic Stack,我试图将一些JSON日志文件(其中包含stacktrace)解析为Logstash,但我认为堆栈跟踪不会让它发生 这是我的日志配置:(我尝试过的众多配置之一) 这就是我正在尝试解决的json类型(它是jasmine的jsonReporter的结果) { “suite1”:{ “id”:“suite1”, “说明”:“创建流程-模拟测试2”, “全名”:“创建流程-模拟测试2”, “失败的预期”:[], “状态”:“已完成”, “规格”:[{ “id”:“spec0”, “说明”:“创建流程后应重
{
“suite1”:{
“id”:“suite1”,
“说明”:“创建流程-模拟测试2”,
“全名”:“创建流程-模拟测试2”,
“失败的预期”:[],
“状态”:“已完成”,
“规格”:[{
“id”:“spec0”,
“说明”:“创建流程后应重定向到modeler”,
“全名”:“创建流程-模拟测试2应在创建流程后重定向到modeler”,
“失败的预期”:[{
“matcherName”:“toMatch”,
“消息”:“预期”http://localhost:3000/#!/signin'匹配/myDashboard/“,
“堆栈”:“错误:预期失败\n在环境中。(/home/ls/code/ph/app/tests/e2e/create process.e2e.test.js:18:35)\n在/home/ls/code/ph/node\u modules/dragrator/node\u modules/jasminewd2/index.js:95:14\n在[object object object object](/home/ls/code/ph/node_modules/dragrator/node_modules/selenium webdriver/lib/webdriver/promise.js:1654:20)\n在[object object].webdriver.promise.ControlFlow.runEventLoop\n(/home/ls/code/ph/node_modules/dragrator/node_modules/selenium webdriver/lib/webdriver/promise.js:1518:8)\n在[object object]对象].wrapper[as_onTimeout](timers.js:274:14)\n at Timer.listOnTimeout(timers.js:119:15)”,
“通过”:错误,
“预期”:{},
“实际”:http://localhost:3000/#!/签名“
}, {
“匹配名称”:“,
“消息”:“失败:使用locator:By.id(\“selectedUser\”)找不到元素”,
“堆栈”:“错误:失败:在buildExpectationResult的堆栈(/home/ls/code/ph/node\u modules/dragrator/node\u modules/jasmine/node\u modules/jasmine-core/lib/jasmine-core/jasmine.js:1441:17)处使用定位器By.id(\“selectedUser\”)找不到元素(/home/ls/code/ph/node_modules/progrator/node_modules/jasmine/node_modules/jasmine core/lib/jasmine core/jasmine.js:1411:14)\n在Spec.Env.expectationResultFactory(/home/ls/code/ph/node_modules/progrator/node_modules/jasmine/node_modules/jasmine/jasmine core/jasmine core/jasmine core/jasmine.js:533:18)\n在Spec.addition.expectationres(/home/ls/code/ph/node_modules/dragrator/node_modules/jasmine/node_modules/jasmine core/lib/jasmine core/jasmine.js:293:34)\n在Env.fail(/home/ls/code/ph/node_modules/dragrator/node_modules/jasmine/node_modules/jasmine/jasmine core/lib/jasmine core/jasmine-core/jasmine.js:837:25)\n在Function.next.fa(/home/ls/code/ph/node\u modules/dragrator/node\u modules/jasmine/node\u modules/jasmine-core/lib/jasmine-core/jasmine.js:1776:19)\n at/home/ls/ph/node\u modules/dragrator/node\u modules/jasminewd2/index.js:104:16\n at/home/ls/code/ph/node\u modules/dragrator/node\u modules/selenium/selenium webdriver/lib/goog/base.js:1582:15\n at[对象].webdriver.promise.ControlFlow.runInNewFrame(/home/ls/code/ph/node_modules/dragor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)\n在notify(/home/ls/code/ph/node_modules/dragor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12)处),
“通过”:错误,
“预期”:“,
“实际”:”
}],
“通过预期”:[],
“状态”:“失败”
}]
},
“suite2”:{
“id”:“suite2”,
“说明”:“登录PB Modeler”,
“全名”:“登录PB Modeler”,
“失败的预期”:[],
“状态”:“已完成”,
“规格”:[{
“id”:“spec1”,
“说明”:“登录后应重定向到myDashboard”,
“全名”:“登录PB Modeler后应重定向到myDashboard”,
“失败的预期”:[{
“matcherName”:“toMatch”,
“消息”:“预期”http://localhost:3000/#!/signin'匹配/myDashboard/“,
“堆栈”:“错误:预期失败\n在环境中。(/home/ls/code/ph/app/tests/e2e/login.e2e.test.js:18:37)\n在/home/ls/code/ph/node\u模块/量角器/node\u模块/jasminewd2/index.js:95:14\n在[object object object].webdriver.promise.ControlFlow.runInNewFrame\(/home/ls/code/ph/node_modules/dragrator/node_modules/selenium webdriver/lib/webdriver/promise.js:1654:20)\n在[object object].webdriver.promise.ControlFlow.runEventLoop\n(/home/ls/code/ph/node_modules/dragrator/node_modules/selenium webdriver/lib/webdriver/promise.js:1518:8)\n在[object object]对象].wrapper[as_onTimeout](timers.js:274:14)\n at Timer.listOnTimeout(timers.js:119:15)”,
“通过”:错误,
“预期”:{},
“实际”:http://localhost:3000/#!/签名“
}],
“通过预期”:[],
“状态”:“失败”
}]
}
我现在尝试了许多配置,如果我试图像上面那样发送它,Logstash将无法正确映射它。
因此,我所做的是删除空格并在reporter中设置beautify=false,并用“[]”将其包围,使其看起来像一个数组,Logstash将“随机”获取它 -那么,考虑到stackTraces,解析这两个嵌套JSON对象的好方法是什么呢?这样,当它被发送到ES和kibana时,是一个可行的数据 -我如何为这个结构或数据模型制作映射,以便它在发送给ELK时能够理解它 我正在使用
ES 2.1 Logstash 2.1 基巴纳4.3.1
Filebeat 1.0.1我不知道记录日志的应用程序的语言。但我发现(对于Ruby)和(对于Java)非常有用。这将有助于elimi
input {
# This configuration works but the input file needs to be set in a format like so [{},{}]
file {
path => "/opt/logstash/confFiles/suite1.json"
start_position => beginning
codec => json
sincedb_path => "/opt/logstash/confFiles/suite1incedb"
}
}
filter {
json{
source => "message"
}
}
output {
stdout {codec => rubydebug}
}
{
"suite1": {
"id": "suite1",
"description": "create process - simulate test 2",
"fullName": "create process - simulate test 2",
"failedExpectations": [],
"status": "finished",
"specs": [{
"id": "spec0",
"description": "should redirect to modeler after create a process",
"fullName": "create process - simulate test 2 should redirect to modeler after create a process",
"failedExpectations": [{
"matcherName": "toMatch",
"message": "Expected 'http://localhost:3000/#!/signin' to match /myDashboard/.",
"stack": "Error: Failed expectation\n at Env.<anonymous> (/home/ls/code/ph/app/tests/e2e/create-process.e2e.test.js:18:35)\n at /home/ls/code/ph/node_modules/protractor/node_modules/jasminewd2/index.js:95:14\n at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)\n at [object Object].webdriver.promise.ControlFlow.runEventLoop_ (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1518:8)\n at [object Object].wrapper [as _onTimeout] (timers.js:274:14)\n at Timer.listOnTimeout (timers.js:119:15)",
"passed": false,
"expected": {},
"actual": "http://localhost:3000/#!/signin"
}, {
"matcherName": "",
"message": "Failed: No element found using locator: By.id(\"selectedUser\")",
"stack": "Error: Failed: No element found using locator: By.id(\"selectedUser\")\n at stack (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1441:17)\n at buildExpectationResult (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1411:14)\n at Spec.Env.expectationResultFactory (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:533:18)\n at Spec.addExpectationResult (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:293:34)\n at Env.fail (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:837:25)\n at Function.next.fail (/home/ls/code/ph/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1776:19)\n at /home/ls/code/ph/node_modules/protractor/node_modules/jasminewd2/index.js:104:16\n at /home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1582:15\n at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)\n at notify (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12)",
"passed": false,
"expected": "",
"actual": ""
}],
"passedExpectations": [],
"status": "failed"
}]
},
"suite2": {
"id": "suite2",
"description": "login to PB Modeler",
"fullName": "login to PB Modeler",
"failedExpectations": [],
"status": "finished",
"specs": [{
"id": "spec1",
"description": "should redirect to myDashboard after login",
"fullName": "login to PB Modeler should redirect to myDashboard after login",
"failedExpectations": [{
"matcherName": "toMatch",
"message": "Expected 'http://localhost:3000/#!/signin' to match /myDashboard/.",
"stack": "Error: Failed expectation\n at Env.<anonymous> (/home/ls/code/ph/app/tests/e2e/login.e2e.test.js:18:37)\n at /home/ls/code/ph/node_modules/protractor/node_modules/jasminewd2/index.js:95:14\n at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)\n at [object Object].webdriver.promise.ControlFlow.runEventLoop_ (/home/ls/code/ph/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1518:8)\n at [object Object].wrapper [as _onTimeout] (timers.js:274:14)\n at Timer.listOnTimeout (timers.js:119:15)",
"passed": false,
"expected": {},
"actual": "http://localhost:3000/#!/signin"
}],
"passedExpectations": [],
"status": "failed"
}]
}