5月30日 12:39
Logstash 条件判断怎么写?常见操作符有哪些?
Logstash 条件判断写在 filter 和 output 里最常见,用来按字段、标签、正则或数值把事件分流。语法类似 if/else if/else:比较用 == != < > <= >=,逻辑用 and or not,正则用 =~ !~,包含判断用 in、not in。注意条件一般不能放在 input 插件内部,因为 input 阶段事件字段还没生成。
追问
in 判断字符串和数组有什么坑?
"error" in [tags] 是判断标签数组是否包含 error;"err" in [message] 可能变成字符串包含判断。
正则匹配适合放很多吗?
不适合滥用。大量复杂正则会拖慢 pipeline,高频字段能用精确匹配就别用正则。
解析失败怎么处理?
利用 _grokparsefailure,再用条件把失败事件打标、落单独索引或输出到排查队列。
写段配置
conffilter { if [type] == "nginx" and [status] >= 500 { mutate { add_tag => ["server_error"] } } }