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
permalink #hash_recursive ⇒ Object
[View source]
36 37 38 39 40 |
# File 'lib/logstash/outputs/rollbar.rb', line 36 def hash_recursive Hash.new do |hash, key| hash[key] = hash_recursive end end |
permalink #receive(event) ⇒ Object
[View source]
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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/logstash/outputs/rollbar.rb', line 55 def receive(event) return unless output?(event) rb_item = hash_recursive # 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{access_token client context environment fingerprint format framework # language level person platform request server 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']['custom'] = data # Some optimizations for k8s and Go Projects in AVS rb_item['data']['timestamp'] = event..to_i rb_item['data']['level'] = data.has_key?('level') ? data['level'] : @level rb_item['data']['environment'] = data.has_key?('region') ? data['region'] : @environment rb_item['data']['title'] = data['message'] rb_item['data']['code_version'] = data['git_commit'] if data['git_commit'] #Server data if data['kubernetes'] && data['kubernetes']['node'] rb_item['data']['server']['host'] = data['kubernetes']['node']['name'] if data['kubernetes']['node']['name'] end rb_item['data']['notifier']['name'] = 'logstash' rb_item['data']['notifier']['version'] = Gem.loaded_specs["logstash-output-rollbar-k8s"].version # Construct the message body using either: # # - The default format string defined above "%{message}" # - The format string specified in the rollbar plugin config section # - The format string specified in the [rollbar][format] event field # format = rb_item['data'].has_key?('format') ? rb_item['data']['format'] : @format rb_item['data']['body']['message']['body'] = event.sprintf(format) # Treat the [rollbar][access_token] field as a special case, since we don't need to # include it more than once in the Rollbar item # if rb_item['data'].has_key?('access_token') rb_item['access_token'] = rb_item['data']['access_token'] rb_item['data'].delete('access_token') else rb_item['access_token'] = @access_token.value end @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 |
permalink #register ⇒ Object
[View source]
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/logstash/outputs/rollbar.rb', line 43 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 |