lib/fluent/plugin/in_cloudwatch_logs.rb in fluent-plugin-cloudwatch-logs-0.9.0 vs lib/fluent/plugin/in_cloudwatch_logs.rb in fluent-plugin-cloudwatch-logs-0.9.1
- old
+ new
@@ -1,6 +1,7 @@
require 'date'
+require 'time'
require 'fluent/plugin/input'
require 'fluent/plugin/parser'
require 'yajl'
module Fluent::Plugin
@@ -24,10 +25,13 @@
config_param :fetch_interval, :time, default: 60
config_param :http_proxy, :string, default: nil
config_param :json_handler, :enum, list: [:yajl, :json], default: :yajl
config_param :use_todays_log_stream, :bool, default: false
config_param :use_aws_timestamp, :bool, default: false
+ config_param :start_time, :string, default: nil
+ config_param :end_time, :string, default: nil
+ config_param :time_range_format, :string, default: "%Y-%m-%d %H:%M:%S"
config_section :parse do
config_set_default :@type, 'none'
end
@@ -40,10 +44,16 @@
def configure(conf)
compat_parameters_convert(conf, :parser)
super
configure_parser(conf)
+
+ @start_time = (Time.strptime(@start_time, @time_range_format).to_f * 1000).floor if @start_time
+ @end_time = (Time.strptime(@end_time, @time_range_format).to_f * 1000).floor if @end_time
+ if @start_time && @end_time && (@end_time < @start_time)
+ raise Fluent::ConfigError, "end_time(#{@end_time}) should be greater than start_time(#{@start_time})."
+ end
end
def start
super
options = {}
@@ -161,9 +171,11 @@
def get_events(log_stream_name)
request = {
log_group_name: @log_group_name,
log_stream_name: log_stream_name
}
+ request.merge!(start_time: @start_time) if @start_time
+ request.merge!(end_time: @end_time) if @end_time
log_next_token = next_token(log_stream_name)
request[:next_token] = log_next_token if !log_next_token.nil? && !log_next_token.empty?
response = @logs.get_log_events(request)
if valid_next_token(log_next_token, response.next_forward_token)
store_next_token(response.next_forward_token, log_stream_name)