• Logstash详解之——filter模块-grok插件


    1. grok插件:能匹配一切数据,但是性能和对资源的损耗也很大。

      grok内置字段类型参见: https://blog.csdn.net/cui929434/article/details/94390617

    filter{
        
        grok{
            #match属性,可以从message 字段中把时间给抠出来,并且赋值给另个一个字段logdate。
            #首先要说明的是,所有文本数据都是在Logstash的message字段中中的,我们要在过滤器里操作的数据就是message。
            #第二点:grok插件是一个十分耗费资源的插件。
            #第三点:grok有超级多的预装正则表达式,基本上够用,不需要自己编写正则,内置字段类型参见 https://blog.csdn.net/cui929434/article/details/94390617。
            #但是,我还是不建议使用它,因为他完全可以用别的插件代替,当然,对于时间这个属性来说,grok是非常便利的。
            match => ['message','%{TIMESTAMP_ISO8601:logdate}']
        }
    }
    这里提供一个例子(kibana内置grok debugger可以测试grok字段):

    2、mutate插件:
      mutate插件是用来处理数据的格式的,你可以选择处理你的时间格式,或者你想把一个字符串变为数字类型(当然需要合法),同样的你也可以返回去做。可以设置的转换类型 包括: "integer", "float" 和 "string"。
    3、ruby插件: https://yq.aliyun.com/articles/154341
    4、date插件:这里需要合前面的grok插件剥离出来的值logdate配合使用(当然也许你不是用grok去做)。
    filter{
        date{
            #还记得grok插件剥离出来的字段logdate吗?就是在这里使用的。你可以格式化为你需要的样子,至于是什么样子。就得你自己取看啦。
            #为什什么要格式化?
            #对于老数据来说这非常重要,应为你需要修改@timestamp字段的值,如果你不修改,你保存进ES的时间就是系统但前时间(+0时区)
            #单你格式化以后,就可以通过target属性来指定到@timestamp,这样你的数据的时间就会是准确的,这对以你以后图表的建设来说万分重要。
            #最后,logdate这个字段,已经没有任何价值了,所以我们顺手可以吧这个字段从event对象中移除。
            match=>["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
            target=>"@timestamp"
            remove_field => 'logdate'
            #还需要强调的是,@timestamp字段的值,你是不可以随便修改的,最好就按照你数据的某一个时间点来使用,
            #如果是日志,就使用grok把时间抠出来,如果是数据库,就指定一个字段的值来格式化,比如说:"timeat", "%{TIMESTAMP_ISO8601:logdate}"
            #timeat就是我的数据库的一个关于时间的字段。
            #如果没有这个字段的话,千万不要试着去修改它。
    
        }
    }




    引用自:https://yq.aliyun.com/articles/154341
  • 相关阅读:
    开源爬虫综述
    html页面工具-htmlUnit
    Html JavaScript网页制作与开发完全学习手册
    移动互联网之路-李晓斌
    算法图解
    游戏编程算法与技巧
    一秒解决CentOS下service 功能 不能使用 bash: service: command not found
    LINUX企业应用案例精解 第2版 李晨光
    深入分析GCC
    嵌入式LINUX基础教程 第2版
  • 原文地址:https://www.cnblogs.com/sitongyan/p/11277349.html
Copyright © 2020-2023  润新知