Class: LogStash::Outputs::Rollbar
- Inherits:
-
Base
- Object
- Base
- LogStash::Outputs::Rollbar
- Defined in:
- lib/logstash/outputs/rollbar.rb
Overview
The Rollbar output will send events to the Rollbar event monitoring service. The only required field is a Rollbar project access token with post_server_item permissions. If you’re already using Rollbar to report errors directly from your applications, you can use the same token.
Instance Method Summary collapse
Instance Method Details
#hash_recursive ⇒ Object
30 31 32 33 34 |
# File 'lib/logstash/outputs/rollbar.rb', line 30 def hash_recursive Hash.new do |hash, key| hash[key] = hash_recursive end end |
#receive(event) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/logstash/outputs/rollbar.rb', line 49 def receive(event) return unless output?(event) rb_item = hash_recursive rb_item['access_token'] = @access_token.value # We'll want to remove fields from data without removing them from the original event data = JSON.parse(event.to_json) # # If logstash has created 'rollbar' fields, we'll use those to populate the item... # if data['rollbar'] merge_keys = %w{platform language framework context request person server client fingerprint title uuid} merge_keys.each do |key| data['rollbar'][key] && rb_item['data'][key] = data['rollbar'][key] end data.delete('rollbar') end # ...then put whatever's left in 'custom'... rb_item['data']['body']['custom'] = data # ...and finally override the top level fields that have a specific meaning rb_item['data']['timestamp'] = event..to_i rb_item['data']['level'] = @level rb_item['data']['environment'] = @environment rb_item['data']['body']['message']['body'] = event.sprintf(@format) rb_item['data']['notifier']['name'] = 'logstash' rb_item['data']['notifier']['version'] = '0.1.0' @logger.debug("Rollbar Item", :rb_item => rb_item) begin request = Net::HTTP::Post.new(@rb_uri.path) request.body = JSON.dump(rb_item) @logger.debug("Rollbar Request", :request => request.body) response = @client.request(request) @logger.debug("Rollbar Response", :response => response.body) rescue Exception => e @logger.warn("Rollbar Exception", :rb_error => e.backtrace) end end |
#register ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/logstash/outputs/rollbar.rb', line 37 def register require 'net/https' require 'uri' @rb_uri = URI.parse(@endpoint) @client = Net::HTTP.new(@rb_uri.host, @rb_uri.port) if @rb_uri.scheme == "https" @client.use_ssl = true @client.verify_mode = OpenSSL::SSL::VERIFY_PEER end end |