Logstash-基于过去30天的专用时间字段的过滤器

Logstash-基于过去30天的专用时间字段的过滤器,logstash,logstash-configuration,elk,Logstash,Logstash Configuration,Elk,我有一个从物联网设备远程接收日志的应用程序。这些日志有它们真正发生时的时间戳——我处理并记录这些日志,因此在JSON日志中有一个特定的时间字段原始日志时间 因此,我的每个日志文件都有一个已知的@timestamp字段,该字段表示此行写入文件的时间,还有一个原始日志时间字段,其中包含原始日志时间 现在,如果原始日志时间过去少于30天,我只想将日志转发到弹性搜索。这样做的原因是,每天的日志都有自己的索引,只有最后30个索引是热的——其他的实际上已经关闭了,我不希望它们被重新打开 我正在尝试的是: i

我有一个从物联网设备远程接收日志的应用程序。这些日志有它们真正发生时的时间戳——我处理并记录这些日志,因此在JSON日志中有一个特定的时间字段
原始日志时间

因此,我的每个日志文件都有一个已知的
@timestamp
字段,该字段表示此行写入文件的时间,还有一个
原始日志时间
字段,其中包含原始日志时间

现在,如果原始日志时间过去少于30天,我只想将日志转发到弹性搜索。这样做的原因是,每天的日志都有自己的索引,只有最后30个索引是热的——其他的实际上已经关闭了,我不希望它们被重新打开

我正在尝试的是:

if [original_log_time].compareTo(ctx._source.time.plusDays(30)) <= 0 {
  elasticsearch {
     hosts => ["${ELASTICSEARCH_HOSTS:?ELASTICSEARCH_HOSTS environment variable is required}"]
     index => "my-logs-" + original_log_time
     user => "${ELASTICSEARCH_USERNAME:}"
     password => "${ELASTICSEARCH_PASSWORD:}"
  }
}
在以下条件下:

   if [@timestamp] <= [log_index_plus_thirty] {
      elasticsearch {
        hosts => ["${ELASTICSEARCH_HOSTS:?ELASTICSEARCH_HOSTS environment variable is required}"]
        index => "device-logs-" + log_index_date
        user => "${ELASTICSEARCH_USERNAME:}"
        password => "${ELASTICSEARCH_PASSWORD:}"
      }
    }
if[@timestamp][“${ELASTICSEARCH\u HOSTS:?ELASTICSEARCH\u HOSTS环境变量是必需的}”]
索引=>“设备日志-”+日志索引日期
用户=>“${ELASTICSEARCH\u用户名:}”
密码=>“${ELASTICSEARCH\u密码:}”
}
}
但是这在if条件的_加上_三十部分抱怨,好像这个变量不存在一样


另外,
log\u index\u date
是一个可选字段,因此不确定这是否也会导致问题?

错误似乎来自您的
if
语句。如果[原始日志时间],您是否可以尝试
,看看这是否可以消除错误?我不相信logstash中有
compareTo()
。是的,logstash中似乎也没有plusDays,我尝试了其他方法,并将更新我的问题
filter {
  date {
    match => [ "log_index_date", "dd.MM.yyyy" ]
    target => "log_index_plus_thirty"
  }

  ruby {
    code => 'event.set("log_index_plus_thirty", LogStash::Timestamp.new(event.get("log_index_plus_thirty")+86400*30))'
  }
}
   if [@timestamp] <= [log_index_plus_thirty] {
      elasticsearch {
        hosts => ["${ELASTICSEARCH_HOSTS:?ELASTICSEARCH_HOSTS environment variable is required}"]
        index => "device-logs-" + log_index_date
        user => "${ELASTICSEARCH_USERNAME:}"
        password => "${ELASTICSEARCH_PASSWORD:}"
      }
    }