class LogStash::Outputs::ThetaPoint
This is most useful so you can use logstash to parse and structure your logs and ship structured, json events to ThetaPoint
.
Public Instance Methods
multi_receive(events)
click to toggle source
# File lib/logstash/outputs/thetapoint.rb, line 62 def multi_receive(events) @logger.debug("multi_receive(#{events.length})") send_data(events.to_json) end
receive(event)
click to toggle source
# File lib/logstash/outputs/thetapoint.rb, line 56 def receive(event) @logger.debug("receive(#{event})") send_data(event.to_json) end
register()
click to toggle source
# File lib/logstash/outputs/thetapoint.rb, line 51 def register @logger.debug "Initializing ThetaPoint Output", @config end
send_data(data)
click to toggle source
# File lib/logstash/outputs/thetapoint.rb, line 69 def send_data(data) @logger.debug("send_data(#{data.length})") uri = "#{@proto}://#{@host}" post_data = data # Comress data if @compress post_data = Zlib::Deflate.deflate(data, Zlib::BEST_COMPRESSION) uri << "/zbulk/#{@key}" else uri << "/#{@key}" end @logger.debug("URI: #{uri}") url = URI.parse(uri) http = Net::HTTP::Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_password.value).new(url.host, url.port) if url.scheme == 'https' http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end request = Net::HTTP::Post.new(url.path) request.body = post_data begin response = http.request(request) @logger.debug "Response: #{response}" if response.is_a?(Net::HTTPSuccess) @logger.debug("Event send to ThetaPoint OK!") else @logger.warn("HTTP error", :error => response.error!) end rescue StandardError => e @logger.error("An unexpected error occurred", :exception => e.class.name, :error => e.to_s, :backtrace => e.backtrace) end # rescue end