请描述在 Logstash 中通过条件判断实现数据过滤的具体方法,包括常用条件语句和操作符的使用。
考察说明
考查对 Logstash 条件过滤语法的理解与实战应用能力。
回答思路
- 【回答框架 1】Logstash 使用 if 语句在 filter 或 output 阶段进行条件过滤,语法为 if [字段] 条件 {} else if {} else {},条件操作符包括 ==、!=、=~(正则匹配)、!~、>、<、>=、<= 以及逻辑与 and、或 or、非 not。
- 【回答框架 2】条件字段引用需用方括号,如 [status];嵌套字段用 [level][code];若字段值非字符串,比较时注意类型匹配,如数字用 [count] > 10。
- 【回答框架 3】常见应用场景如:在 filter 中根据日志类型添加不同标签或丢弃数据(用 drop{}),在 output 中分流到不同的输出插件(如区分 error 和 info 日志)。
- 【回答框架 4】示例:if [status] == 200 { mutate { add_field => "result" => "ok" } } else { drop {} }。
- 【关键点 1】if 语句可在 filter 和 output 阶段使用
- 【关键点 2】条件操作符包括比较、正则、逻辑三类
- 【关键点 3】字段引用必须使用方括号
- 【关键点 4】使用 drop{} 可丢弃不满足条件的数据
- 【易错点 1】字段不存在或类型不一致会导致条件判断不成立
- 【易错点 2】正则匹配 =~ 使用 Ruby 正则语法,需转义特殊字符
- 【易错点 3】条件语句中字符串需加双引号,数字不加