Logstash 解析 json
Logstash parsing json
我正在尝试使用 log-stash 以 JSON 格式读取输入文件 1.log 并在 elasticsearch 上写入。这是我的日志文件:
{"key":"value00"}
{"key":"value01"}
{"key1":[{"key2":"value02"},{"key3":"value03"},{"key4":[{"key5":"value 04"}]}]}
这是我的配置文件:
input {
file {
type => "json"
path => "/logstash/1.log"
}
}
filter{
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["192.168.1.6:9200"]
user => "elastic"
password => "something"
}
}
日志存储行为是完全随机的。有时它可以正常工作,但有时它 returns 对于相同的输入结构会出现以下错误:
Error parsing json {:source=>"message", :raw=>"4\"}]}]}", :exception=>#<LogStash::Json::ParserError: Unexpected character ('"' (code 34)): Expected space separating root-level values
我的建议:
不要在调试过程中从头删除消息,因为您不知道出现问题的源头是什么。
根据 json 过滤器结果有条件地执行此操作,如果失败,则将其写入文件以确定何时失败。
根据我的经验,大部分输入都是错误的或者不希望以该格式输入。
基于您的配置的示例:
input {
file {
type => "json"
path => "/logstash/1.log"
}
}
filter{
json {
source => "message"
}
if "_jsonparsefailure" not in [tags] {
mutate {
remove_field => ["message"]
}
}
}
output {
if "_jsonparsefailure" not in [tags] {
elasticsearch {
hosts => ["192.168.1.6:9200"]
user => "elastic"
password => "something"
}
}
if "_jsonparsefailure" in [tags] {
file {
path => "/write/to/this/file.txt"
}
}
}
我正在尝试使用 log-stash 以 JSON 格式读取输入文件 1.log 并在 elasticsearch 上写入。这是我的日志文件:
{"key":"value00"}
{"key":"value01"}
{"key1":[{"key2":"value02"},{"key3":"value03"},{"key4":[{"key5":"value 04"}]}]}
这是我的配置文件:
input {
file {
type => "json"
path => "/logstash/1.log"
}
}
filter{
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["192.168.1.6:9200"]
user => "elastic"
password => "something"
}
}
日志存储行为是完全随机的。有时它可以正常工作,但有时它 returns 对于相同的输入结构会出现以下错误:
Error parsing json {:source=>"message", :raw=>"4\"}]}]}", :exception=>#<LogStash::Json::ParserError: Unexpected character ('"' (code 34)): Expected space separating root-level values
我的建议:
不要在调试过程中从头删除消息,因为您不知道出现问题的源头是什么。 根据 json 过滤器结果有条件地执行此操作,如果失败,则将其写入文件以确定何时失败。
根据我的经验,大部分输入都是错误的或者不希望以该格式输入。
基于您的配置的示例:
input {
file {
type => "json"
path => "/logstash/1.log"
}
}
filter{
json {
source => "message"
}
if "_jsonparsefailure" not in [tags] {
mutate {
remove_field => ["message"]
}
}
}
output {
if "_jsonparsefailure" not in [tags] {
elasticsearch {
hosts => ["192.168.1.6:9200"]
user => "elastic"
password => "something"
}
}
if "_jsonparsefailure" in [tags] {
file {
path => "/write/to/this/file.txt"
}
}
}