0
点赞
收藏
分享

微信扫一扫

logstash过滤器-json插件解析多层json嵌套

夕阳孤草 2022-01-08 阅读 64

logstash过滤器-json插件解析多层json嵌套

2019-08-26 发表者 Venus

版本:logstash 6.6.2
方法:用logstash过滤器中的json插件配置选项实现

首先介绍用到的参数
参数:add_field
作用:添加字段

参数:%{field}
作用:调用事件中的指定字段

参数:remove_field
作用:删除字段

官方插件资料:JSON filter plugin | Logstash Reference [6.6] | Elastic
通过文档描述,json插件可以将事件中的json格式日志提取到事件的根中,根中的字段传递到elasticsearch后,可以做过滤条件,而且展示起来比较直观。

比如json日志格式为:

1

2

3

4

5

6

7

{

    "name":"root",

    "info":{

        "from":"host1",

        "path":"var/log/log.log"

    }

}

info字段的值还是一个json,现在需要将info中的数据提取到事件的根中,也就是变为如下格式。

1

2

3

4

5

{

    "name":"root",

    "from":"host1",

    "path":"var/log/log.log"

}

# logstash配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

[root@localhost logstash]# cat kafka.conf

input {

    kafka {

        bootstrap_servers => ["192.168.10.74:9092"]

        client_id => "test1"

        group_id => "test1"

        auto_offset_reset => "latest"

        consumer_threads => 1

        decorate_events => false

        topics => ["test"]

        type => "fromk"

    }

  

}

# 将message字段的数据(json格式) "导入"

filter {

    json {

        # 输入的日志,都会进入message字段,使用source解析json。

        source => "message"

        # 添加列,便于下面再执行source

        add_field => { "javalog" => "%{info}" }

    }

    # 第二次解析json串

    json {

        source => "javalog"

        # 移除列,info字段和javalog字段不需转存到elasticsearch。

        remove_field => [ "info","javalog" ]

    }

}

output {

    elasticsearch {

        hosts => "192.168.10.74"

        index => "jar-log-%{+YYYY.MM.dd}"

    }

    stdout {

        codec => rubydebug

    }

}

效果:

kibana中展示效果

原创文章,转载请注明。本文链接地址: logstash过滤器-json插件解析多层json嵌套 |

分类目录:elk日志分析 | 固定链接

作者:Venus

专注于 服务器运维与性能优化 联系方式:https://www.rootop.org/about

举报

相关推荐

0 条评论