class LogStash::Outputs::LogService
Constants
- Log
- LogCommon
- LogException
Public Instance Methods
close()
click to toggle source
# File lib/logstash/outputs/logservice.rb, line 146 def close buffer_flush(:final => true) end
flush(events, close=false)
click to toggle source
called from Stud::Buffer#buffer_flush when there are events to flush
# File lib/logstash/outputs/logservice.rb, line 104 def flush(events, close=false) if events.size < 1 return end @loggroup = ArrayList.new @byte_size = 0 events.each { |x| begin @event_map = x.to_hash if @event_map.size < 1 next end @logitem = LogCommon.LogItem.new #@timestamp like 2016-02-18T03:23:11.053Z @logitem.SetTime(Time.parse(@event_map['@timestamp'].to_s).to_i) @event_map.each do | key, value | @key_str = key.to_s if @to_json @value_str = value.to_json else @value_str = value.to_s end @byte_size += @key_str.length + @value_str.length @logitem.PushBack(@key_str, @value_str) end @loggroup.add(@logitem) if @byte_size > @max_buffer_bytes send_to_log_service(@loggroup) @loggroup = ArrayList.new @byte_size = 0 end rescue => e @logger.warn("deserialize log data from json to LogGroup(protobuf) fail", :exception => e) end } if @byte_size > 0 send_to_log_service(@loggroup) end end
receive(event)
click to toggle source
# File lib/logstash/outputs/logservice.rb, line 67 def receive(event) return unless output?(event) begin buffer_receive(event) rescue => e @logger.warn("error encoding event for logstash-output-logservice", :exception => e, :event => event) end end
register()
click to toggle source
# File lib/logstash/outputs/logservice.rb, line 52 def register buffer_initialize( :max_items => @max_buffer_items, :max_interval => @max_buffer_seconds, :logger => @logger ) @logclient = Log.Client::new(@endpoint, @access_key_id, @access_key_secret) if @source == '' @source = Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address end @send_retry_interval_seconds = @send_retry_interval / 1000.0 @logger.info("init logstash-output-logservice plugin", :endpoint => @endpoint, :project => @project, :logstore => @logstore, :topic => @topic, :source => @source, :max_buffer_bytes => @max_buffer_bytes) end
send_to_log_service(loggroup)
click to toggle source
# File lib/logstash/outputs/logservice.rb, line 76 def send_to_log_service(loggroup) @retry = 0 begin @retry += 1 @logclient.PutLogs(@project, @logstore, @topic, loggroup, @source.to_s) @logger.info("send logs to logservice success", :logcount => loggroup.size().to_s) rescue LogException => e @error_code = e.GetErrorCode() @error_message = e.GetErrorMessage() if @retry < @max_send_retry @logger.warn("send logs to logservice fail, will retry later", :exception => e, :error_code => @error_code, :error_message => @error_message, :retry => @retry) sleep(@send_retry_interval_seconds) retry else @logger.error("send logs to logservice fail, discard data", :exception => e, :error_code => @error_code, :error_message => @error_message, :retry => @retry) end rescue => e if @retry < @max_send_retry @logger.warn("send logs to logservice fail, retry later", :exception => e, :retry => @retry) sleep(@send_retry_interval_seconds) retry else @logger.error("send logs to logservice fail, discard data", :exception => e, :retry => @retry) end end end