我试图读取日志通知json并将结果吐出到stdout与logstash我的json文件如下:
我想知道如何在json下解析
{"shoppers" : [
{
"type": "login",
"source": "user",
"triggered_at": "Login Screen",
"triggered_by": "Login Button",
"api_url": "<URL>",
"username": "Shopper123",
"timestamp": "17.04.2017 13:37:57"
},
{
"type": "logout",
"source": "user",
"triggered_at": "Account Screen",
"triggered_by": "User Pressed Logout Button",
"api_url": "<URL>",
"username": "Shopper123",
"timestamp": "17.04.2017 13:37:57"
}
]}
我的logstash conf示例文件如下所示:正如您所看到我正在读取s3存储桶而我正在使用json过滤器,但结果总是显示我_parsejsonerror
input {
s3 {
access_key_id => '<access_key>'
secret_access_key => '<secret_key>'
bucket => 'some-bucket'
region => 'eu-west-2'
type => 'shopper_app'
delete => true
sincedb_path => "/home/user/logstash/last-s3-file"
codec => json_lines
}
}
filter {
json {
source => "message"
add_field => ["type", "%{[message][type]}"]
}
}
output
{
stdout {codec => rubydebug}
}
实际上我解决了问题是由于格式错误的json文件引起的。 json文件不应包含新行,应如下所示:
[{"type": "login","source": "user","triggered_at": "Login Screen","triggered_by": "Login Button","api_url": "<URL>","username": "Shopper123","timestamp": "17.04.2017 13:37:57"},{"type": "logout","source": "user","triggered_at": "Account Screen","triggered_by": "User Pressed Logout Button","api_url": "<URL>","username": "Shopper123","timestamp": "17.04.2017 13:37:57"}]
谢谢