elasticsearch - 如何在logstash grok模式中编写if条件?
问题描述
我的问题与 logstash grok 模式有关。我创建了以下模式,它工作正常,但最大的问题不是字符串值。有时; “Y”和“age”可以为空,所以我的 grok 模式不会在 elasticseach 中创建任何日志。它无法正常工作。我需要告诉我的 grok 模式:
if(age is null || age i empty){
updatefield["age",0]
}
但我不知道怎么做。顺便一提; 我通过谷歌搜索检查了许多解决方案,但它与我的问题直接相关。
input {
file {
path => ["C:/log/*.log"]
start_position => "beginning"
discover_interval => 10
stat_interval => 10
sincedb_write_interval => 10
close_older => 10
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601}\|"
negate => true
what => "previous"
}
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:formattedDate}.* X: %{DATA:X} Y: %{NUMBER:Y} Z: %{DATA:Z} age: %{NUMBER:age:int} "}
}
date {
timezone => "Europe/Istanbul"
match => ["TimeStamp", "ISO8601"]
}
json{
source => "request"
target => "parsedJson"
}
mutate {
remove_field => [ "path","message","tags","@version"]
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => [ "http://localhost:9200" ]
index => "logstash-%{+YYYY.MM}"
}
}
解决方案
您可以使用带有过滤器的条件来检查您的字段是否存在或为空,
filter {
if ![age] or [age] == "" {
mutate {
update => { "age" => "0" }
}
}
}
推荐阅读
- javascript - Formio.js 从 builder 方法获取 JSON 文本
- android - React Native - 向上滑动面板在 android 上不起作用
- linux - 无法创建 sh 脚本
- regex - 问答:如何验证任何数字,只使用正则表达式?
- javascript - 计算机从睡眠模式重新启动时如何重新启动网络工作者?
- pandas - 循环将数据帧与 groupby sum 合并在一起
- flutter - 我可以防止依赖项更改重建 Flutter 小部件吗
- javascript - Vue-Budget-Calculator-App:动态路由相关的道具
- json - 将字段移至其邻居
- c++ - 可变参数模板和 std::array 意外行为