logstash-output-sentry 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0167aa85d7256913ed5f26cdbde6afbc1d648be
4
- data.tar.gz: 996a962f3f97b93a15c0d7fa0849c32e8a8664ca
3
+ metadata.gz: 54c19ff3430ad6d13ff04e3c2e5a58a30c6ad287
4
+ data.tar.gz: cf9c838f8a464bdccd64b2e17dfbb54291f85909
5
5
  SHA512:
6
- metadata.gz: 151cb70eca4b7fe7369ea09487a20bb1cc9a635570a2110b122d47c5996cd446e0eb65e0e498dcebcaddf0dac55b18fb6252aa4235e5ccc4342465ea0fde0eac
7
- data.tar.gz: af27c9c7dd5f3afc467adae93237656696712519cbd9ea7b2eec387465db3a44d19693ca033b08844872d04c526a1e5c71c96dba070be08e1e0c39db66f49982
6
+ metadata.gz: 813f2ee9004e7ce6dff127d48965182f27a6847d7612718f86db8df653f405f10456bbe6504447d38ebe2d706d19f051a69bee264636244621955aa07ca83621
7
+ data.tar.gz: 7323fd8ddfa2141e1e40cb9b348765918c2b9513b79a7c7bc1e62ec913261cd4744e2c2c63ea9f38d69b7ec83bb0aae7a67bbedfba3dd3de16289ea35f49d1dc
data/README.md CHANGED
@@ -97,6 +97,79 @@ sentry {
97
97
  }
98
98
  ```
99
99
 
100
+ * You can also set the project id, key, level tag, and secret in a filter to allow for a cleaner dynamic config
101
+ ```ruby
102
+ input {
103
+ syslog {
104
+ port => 514
105
+ type => "syslog"
106
+ }
107
+
108
+ tcp {
109
+ port => 1514
110
+ type => "cisco-ios"
111
+ }
112
+
113
+ tcp {
114
+ port => 2514
115
+ type => "application"
116
+ }
117
+ }
118
+ filter {
119
+ if [type] == "syslog" {
120
+ mutate {
121
+ add_field => {
122
+ "[@metadata][sentry][msg]" => "%{host}"
123
+ "[@metadata][sentry][severity]" => "%{severity}"
124
+ "[@metadata][sentry][host]" => "192.168.1.101"
125
+ "[@metadata][sentry][pid]" => "2"
126
+ "[@metadata][sentry][key]" => "d3921923d34a4344878f7b83e2061229"
127
+ "[@metadata][sentry][secret]" => "d0163ef306c04148aee49fe4ce7621b1"
128
+ }
129
+ }
130
+ }
131
+ else if [type] == "cisco-ios" {
132
+ mutate {
133
+ add_field => {
134
+ "[@metadata][sentry][msg]" => "%{host}"
135
+ "[@metadata][sentry][severity]" => "%{severity}"
136
+ "[@metadata][sentry][host]" => "192.168.1.101"
137
+ "[@metadata][sentry][pid]" => "3"
138
+ "[@metadata][sentry][key]" => "d398098q2349883e206178098"
139
+ "[@metadata][sentry][secret]" => "da098d890f098d09809f6098c87e0"
140
+ }
141
+ }
142
+ }
143
+ else if [type] == "application" {
144
+ mutate {
145
+ add_field => {
146
+ "[@metadata][sentry][msg]" => "%{host}"
147
+ "[@metadata][sentry][severity]" => "%{severity}"
148
+ "[@metadata][sentry][host]" => "192.168.1.150"
149
+ "[@metadata][sentry][pid]" => "4"
150
+ "[@metadata][sentry][key]" => "d39dc435326d987d5678e98d76cf78098"
151
+ "[@metadata][sentry][secret]" => "07d09876d543d2a345e43c4e567d"
152
+ }
153
+ }
154
+ }
155
+ }
156
+ output {
157
+ elasticsearch {
158
+ hosts => ["192.168.1.200:9200"]
159
+ document_type => "%{type}"
160
+ }
161
+ sentry {
162
+ fields_to_tags => true
163
+ host => "%{[@metadata][sentry][host]}"
164
+ key => "%{[@metadata][sentry][key]}"
165
+ level_tag => "%{[@metadata][sentry][severity]}"
166
+ msg => "[@metadata][sentry][msg]"
167
+ project_id => "%{[@metadata][sentry][pid]}"
168
+ secret => "%{[@metadata][sentry][secret]}"
169
+ }
170
+ }
171
+ ```
172
+
100
173
  ## Contributing
101
174
 
102
175
  All contributions are welcome: ideas, patches, documentation, bug reports, complaints, and even something you drew up on a napkin.
@@ -34,8 +34,8 @@ class LogStash::Outputs::Sentry < LogStash::Outputs::Base
34
34
  # This sets the message value in Sentry (the title of your event)
35
35
  config :msg, :validate => :string, :default => 'Message from logstash', :required => false
36
36
 
37
- # This sets the level value in Sentry (the level tag)
38
- config :level_tag, :validate => :string, :default => 'error', :required => false
37
+ # This sets the level value in Sentry (the level tag), allow usage of event dynamic value
38
+ config :level_tag, :validate => :string, :default => 'error'
39
39
 
40
40
  # If set to true automatically map all logstash defined fields to Sentry extra fields.
41
41
  # As an example, the logstash event:
@@ -67,21 +67,34 @@ class LogStash::Outputs::Sentry < LogStash::Outputs::Base
67
67
 
68
68
  public
69
69
  def register
70
- require 'net/https'
71
- require 'uri'
70
+ #I took this out becuase it fails when I try sending in the project_id or host as part of the event for a dynamic config
71
+ # require 'net/https'
72
+ # require 'uri'
72
73
 
73
- @url = "%{proto}://#{host}/api/#{project_id}/store/" % { :proto => use_ssl ? 'https' : 'http' }
74
- @uri = URI.parse(@url)
74
+ # @url = "%{proto}://#{host}/api/#{project_id}/store/" % { :proto => use_ssl ? 'https' : 'http' }
75
+ # @uri = URI.parse(@url)
75
76
 
76
- @client = Net::HTTP.new(@uri.host, @uri.port)
77
- @client.use_ssl = use_ssl
78
- @client.verify_mode = OpenSSL::SSL::VERIFY_NONE
77
+ # @client = Net::HTTP.new(@uri.host, @uri.port)
78
+ # @client.use_ssl = use_ssl
79
+ # @client.verify_mode = OpenSSL::SSL::VERIFY_NONE
79
80
 
80
- @logger.debug('Client', :client => @client.inspect)
81
+ # @logger.debug('Client', :client => @client.inspect)
81
82
  end
82
83
 
83
84
  public
84
85
  def receive(event)
86
+ require 'net/https'
87
+ require 'uri'
88
+
89
+ url = "%{proto}://#{event.sprintf(@host)}/api/#{event.sprintf(@project_id)}/store/" % { :proto => use_ssl ? 'https' : 'http' }
90
+ uri = URI.parse(url)
91
+
92
+ client = Net::HTTP.new(uri.host, uri.port)
93
+ client.use_ssl = use_ssl
94
+ client.verify_mode = OpenSSL::SSL::VERIFY_NONE
95
+
96
+ @logger.debug('Client', :client => client.inspect)
97
+
85
98
  return unless output?(event)
86
99
 
87
100
  require 'securerandom'
@@ -98,7 +111,7 @@ class LogStash::Outputs::Sentry < LogStash::Outputs::Base
98
111
  :event_id => SecureRandom.uuid.gsub('-', ''),
99
112
  :timestamp => event['@timestamp'],
100
113
  :message => message_to_send,
101
- :level => "#{level_tag}",
114
+ :level => event.sprintf(@level_tag),
102
115
  :platform => 'logstash',
103
116
  :server_name => event['host'],
104
117
  :extra => event.to_hash,
@@ -113,16 +126,16 @@ class LogStash::Outputs::Sentry < LogStash::Outputs::Base
113
126
  auth_header = "Sentry sentry_version=5," +
114
127
  "sentry_client=raven_logstash/1.0," +
115
128
  "sentry_timestamp=#{event['@timestamp'].to_i}," +
116
- "sentry_key=#{@key}," +
117
- "sentry_secret=#{@secret}"
129
+ "sentry_key=#{event.sprintf(@key)}," +
130
+ "sentry_secret=#{event.sprintf(@secret)}"
118
131
 
119
- request = Net::HTTP::Post.new(@uri.path)
132
+ request = Net::HTTP::Post.new(uri.path)
120
133
 
121
134
  begin
122
135
  request.body = packet.to_json
123
136
  request.add_field('X-Sentry-Auth', auth_header)
124
137
 
125
- response = @client.request(request)
138
+ response = client.request(request)
126
139
 
127
140
  @logger.info('Sentry response', :request => request.inspect, :response => response.inspect)
128
141
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-sentry'
3
- s.version = '0.3.0'
3
+ s.version = '0.3.1'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = 'This output plugin sends messages to any sentry server.'
6
6
  s.description = 'This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install logstash-output-sentry. This gem is not a stand-alone program.'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-sentry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Matos Odut
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-03 00:00:00.000000000 Z
11
+ date: 2016-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 2.2.2
121
+ rubygems_version: 2.5.1
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: This output plugin sends messages to any sentry server.