5.1 Grok 正则捕获
5.1.1 正则表达式语法
- 可以在 grok 里写标准的正则:
\s+(?<request_time>\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 库
- filters/date 插件支持五种时间格式:
- 时间格式
- 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开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通