一架梯子,一头程序猿,仰望星空!

Logstash json filter插件


通常情况,Logstash收集到的数据都会转成json格式,但是默认logstash只是对收集到的格式化数据转成json,如果收到的数据仅仅是一个字符串是不会转换成Json.

例如:

{
    "id":20,
    "domain": "https://www.tizi365.com",
    "data": "{\"type\":1, \"msg\":\"message ok\"}"
}

data字段的内容是一个json字符串,不是格式化的Json格式,如果数据导入到Elasticsearch,data字段也是一个字符串,不是一个Json对象;json filter插件可以解决这种问题。

例子:

filter {
    # 定义json插件
    json {
        # 指定需要转换成json格式的字段
        source => "data"
        # 指定转换成json的数据,保存到那个字段,如果字段存在会覆盖
        target => "data"
        # 如果遇到错误的json,是否跳过json filter过滤器
        skip_on_invalid_json => true
    }
}

json filter格式化数据后,输出如下:

{
    "id":20,
    "domain": "https://www.tizi365.com",
    "data": {
        "type":1,
        "msg":"message ok"
    }
}