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

5.1 Grok 正则捕获

5.1.1 正则表达式语法

  • 可以在 grok 里写标准的正则:
\s+(?\d+(?:\.\d+)?)\s+
  • 给配置文件添加第一个过滤器区段配置
    • 配置要添加在输入和输出区段之间:
  • 运行 logstash 进程然后输入 "begin 123.456 end":

5.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 字段,只保留最重要的部分
    • 重写参数的示例如下:

5.2 时间处理(Date)

  • filters/date 插件可以用来转换日志记录中的时间字符串,变成 LogStash::Timestamp 对象,然后转存到 @timestamp 字段里
  • 配置示例
    • filters/date 插件支持五种时间格式:
      • ISO8601
      • UNIX
      • UNIX_MS
      • TAI64N
      • Joda-Time 库
  • 时间格式
  • Joda 时间格式的配置示例:
    • 注意:时区偏移量只需要用一个字母 Z 即可

5.3 数据修改(Mutate)

  • filters/mutate 插件提供了丰富的基础类型数据处理能力
    • 包括类型转换,字符串处理和字段处理等
  • 类型转换
    • 可以设置的转换类型包括:"integer","float" 和 "string"。示例如下:

5.3.1 字符串处理

  • gsub
    • 仅对字符串类型字段有效
gsub => ["urlparams", "[\\?#]", "_"]
  • split

5.3.2 字符串处理

  • split
    • 随意输入一串以|分割的字符,比如 "123|321|adfd|dfjld*=123",可以看到如下输出:
  • join
    • 仅对数组类型字段有效
  • filter 区段之内,是顺序执行的。所以我们最后看到的输出结果是:
  • merge
    • 合并两个数组或者哈希字段


5.3.3 字段处理

  • rename
    • 重命名某个字段,如果目的字段已经存在,会被覆盖掉:
  • update
    • 更新某个字段的内容
    • 如果字段不存在,不会新建
  • replace
    • 作用和 update 类似,但是当字段不存在的时候,它会起到 add_field 参数一样的效果,自动添加新的字段

5.4 数值统计(Metrics)

  • filters/metrics 插件是使用 Ruby 的 Metriks 模块来实现在内存里实时的计数和采样分析
  • 该模块支持两个类型的数值分析:
    • meter
    • timer
  • Meter 示例(速率阈值检测):比如如果最近一分钟 504 请求的个数超过 100 个就报警:
  • Timer 示例(box and whisker 异常检测)

大数据视频推荐:
腾讯课堂
CSDN
ELK入门精讲
AIOps智能运维实战
ELK7 stack开发运维
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

你可能感兴趣的:(5.Logstash插件—过滤器插件(Filter))