暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Logstash插件—过滤器插件(Filter)

碧茂大数据 2022-03-15
1382

更多精彩,请点击上方蓝字关注我们!

1 Grok 正则捕获

1.1 正则表达式语法

  • 可以在 grok 里写标准的正则:

\s+(?<request_time>\d+(?:\.\d+)?)\s+

复制
  • 给配置文件添加第一个过滤器区段配置

    • 配置要添加在输入和输出区段之间:


  • 运行 logstash 进程然后输入 "begin 123.456 end":


1.2 Grok 表达式语法

  • 示例:

    • 第一行,用普通的正则表达式来定义一个 grok 表达式

    • 第二行,通过打印赋值格式,用前面定义好的 grok 表达式来定义另一个 grok 表达式

USERNAME [a-zA-Z0-9._-]+
USER %{USERNAME}

复制
  • grok 表达式的打印复制格式的完整语法是:

%{PATTERN_NAME:capture_name:data_type}

复制
  • 改进配置:


  • 重新运行进程然后可以得到如下结果:


  • 最佳实践

    • 把所有的 grok 表达式统一写入到一个地方,然后用 filter/grok 的 patterns_dir 选项来指明

    • 用 remove_field 参数来删除掉 message 字段,或者用 overwrite 参数来重写默认的message 字段,只保留最重要的部分

    • 重写参数的示例如下:


2 时间处理(Date)

  • filters/date 插件可以用来转换日志记录中的时间字符串,变成 LogStash::Timestamp 对象,然后转存到 @timestamp 字段里

  • 配置示例

    • ISO8601

    • UNIX

    • UNIX_MS

    • TAI64N

    • Joda-Time 库

    • filters/date 插件支持五种时间格式:

  • 时间格式



  • Joda 时间格式的配置示例:

    • 注意:时区偏移量只需要用一个字母 Z 即可


3 数据修改(Mutate)

  • filters/mutate 插件提供了丰富的基础类型数据处理能力

    • 包括类型转换,字符串处理和字段处理等

  • 类型转换

    • 可以设置的转换类型包括:"integer","float" 和 "string"。示例如下:


3.1 字符串处理

  • gsub

    • 仅对字符串类型字段有效

gsub => ["urlparams", "[\\?#]", "_"]

复制
  • split


3.2 字符串处理

  • split

    • 随意输入一串以|分割的字符,比如 "123|321|adfd|dfjld*=123",可以看到如下输出:


  • join

    • 仅对数组类型字段有效


  • filter 区段之内,是顺序执行的。所以我们最后看到的输出结果是:


  • merge

    • 合并两个数组或者哈希字段


3.3 字段处理

  • rename

    • 重命名某个字段,如果目的字段已经存在,会被覆盖掉:


  • update

    • 更新某个字段的内容

    • 如果字段不存在,不会新建

  • replace

    • 作用和 update 类似,但是当字段不存在的时候,它会起到 add_field 参数一样的效果,自动添加新的字段

4 数值统计(Metrics)

  • filters/metrics 插件是使用 Ruby 的 Metriks 模块来实现在内存里实时的计数和采样分析

  • 该模块支持两个类型的数值分析:

    • meter

    • timer

  • Meter 示例(速率阈值检测):比如如果最近一分钟 504 请求的个数超过 100 个就报警:


  • Timer 示例(box and whisker 异常检测)

关注公众号:领取精彩视频课程&海量免费语音课程




文章转载自碧茂大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论