logstash-output-datadog_logs 0.4.1 → 0.5.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 +4 -4
- data/CHANGELOG.md +7 -1
- data/Gemfile +9 -0
- data/README.md +3 -2
- data/lib/logstash/outputs/datadog_logs.rb +26 -7
- data/lib/logstash/outputs/version.rb +5 -0
- data/logstash-output-datadog_logs.gemspec +9 -3
- data/spec/outputs/datadog_logs_spec.rb +107 -84
- metadata +19 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbfe2fc6bf43df61e35e421486e1f7143e4acce4725386decdc05f946249009d
|
4
|
+
data.tar.gz: 36bdf364a1d4ae4d522712914cca7eff722b7f115bf553c6cfeee3d4869a7744
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44eb1829c931dda34c65c962084d4be14ae5ef510000b32dec93e5b465a2e12dcc4ac27b7a53cb603f9c4d1e8a36c6c1262279f3c86317fef76d9448fcb0c125
|
7
|
+
data.tar.gz: ee06691a2c65deb5bf743f47072e35cf9615a238dd2a8f40f4db4459ff4e3fed3025908993f4ddf8f4814cd81117961919037c891d53e76b448058f838d77834
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
+
## 0.5.1
|
2
|
+
- Support using HTTP proxies, adding the `http_proxy` parameter.
|
3
|
+
|
4
|
+
## 0.5.0
|
5
|
+
- Support Datadog v2 endpoints #28
|
6
|
+
|
1
7
|
## 0.4.1
|
2
|
-
- Fix HTTP bug when remote server is timing out
|
8
|
+
- Fix HTTP bug when remote server is timing out
|
3
9
|
|
4
10
|
## 0.4.0
|
5
11
|
- Enable HTTP forwarding for logs
|
data/Gemfile
CHANGED
@@ -1,2 +1,11 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
+
|
2
3
|
gemspec
|
4
|
+
|
5
|
+
logstash_path = ENV["LOGSTASH_PATH"] || "../../logstash"
|
6
|
+
use_logstash_source = ENV["LOGSTASH_SOURCE"] && ENV["LOGSTASH_SOURCE"].to_s == "1"
|
7
|
+
|
8
|
+
if Dir.exist?(logstash_path) && use_logstash_source
|
9
|
+
gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
|
10
|
+
gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
|
11
|
+
end
|
data/README.md
CHANGED
@@ -58,8 +58,8 @@ output {
|
|
58
58
|
| Property | Description | Default value |
|
59
59
|
|-------------|--------------------------------------------------------------------------|----------------|
|
60
60
|
| **api_key** | The API key of your Datadog platform | nil |
|
61
|
-
| **host** |
|
62
|
-
| **port** |
|
61
|
+
| **host** | Endpoint when logs are not directly forwarded to Datadog | intake.logs.datadoghq.com |
|
62
|
+
| **port** | Port when logs are not directly forwarded to Datadog | 443 |
|
63
63
|
| **use_ssl** | If true, the agent initializes a secure connection to Datadog. Ensure to update the port if you disable it. | true |
|
64
64
|
| **max_retries** | The number of retries before the output plugin stops | 5 |
|
65
65
|
| **max_backoff** | The maximum time waited between each retry in seconds | 30 |
|
@@ -67,6 +67,7 @@ output {
|
|
67
67
|
| **use_compression** | Enable log compression for HTTP | true |
|
68
68
|
| **compression_level** | Set the log compression level for HTTP (1 to 9, 9 being the best ratio) | 6 |
|
69
69
|
| **no_ssl_validation** | Disable SSL validation (useful for proxy forwarding) | false |
|
70
|
+
| **http_proxy** | Proxy address for http proxies | none |
|
70
71
|
|
71
72
|
|
72
73
|
|
@@ -8,6 +8,7 @@ require "logstash/outputs/base"
|
|
8
8
|
require "logstash/namespace"
|
9
9
|
require "zlib"
|
10
10
|
|
11
|
+
require_relative "version"
|
11
12
|
|
12
13
|
# DatadogLogs lets you send logs to Datadog
|
13
14
|
# based on LogStash events.
|
@@ -33,11 +34,13 @@ class LogStash::Outputs::DatadogLogs < LogStash::Outputs::Base
|
|
33
34
|
config :use_compression, :validate => :boolean, :required => false, :default => true
|
34
35
|
config :compression_level, :validate => :number, :required => false, :default => 6
|
35
36
|
config :no_ssl_validation, :validate => :boolean, :required => false, :default => false
|
37
|
+
config :force_v1_routes, :validate => :boolean, :required => false, :default => false # force using deprecated v1 routes
|
38
|
+
config :http_proxy, :validate => :string, :required => false, :default => ""
|
36
39
|
|
37
40
|
# Register the plugin to logstash
|
38
41
|
public
|
39
42
|
def register
|
40
|
-
@client = new_client(@logger, @api_key, @use_http, @use_ssl, @no_ssl_validation, @host, @port, @use_compression)
|
43
|
+
@client = new_client(@logger, @api_key, @use_http, @use_ssl, @no_ssl_validation, @host, @port, @use_compression, @force_v1_routes, @http_proxy)
|
41
44
|
end
|
42
45
|
|
43
46
|
# Logstash shutdown hook
|
@@ -143,9 +146,9 @@ class LogStash::Outputs::DatadogLogs < LogStash::Outputs::Base
|
|
143
146
|
end
|
144
147
|
|
145
148
|
# Build a new transport client
|
146
|
-
def new_client(logger, api_key, use_http, use_ssl, no_ssl_validation, host, port, use_compression)
|
149
|
+
def new_client(logger, api_key, use_http, use_ssl, no_ssl_validation, host, port, use_compression, force_v1_routes, http_proxy)
|
147
150
|
if use_http
|
148
|
-
DatadogHTTPClient.new logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key
|
151
|
+
DatadogHTTPClient.new logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key, force_v1_routes, http_proxy
|
149
152
|
else
|
150
153
|
DatadogTCPClient.new logger, use_ssl, no_ssl_validation, host, port
|
151
154
|
end
|
@@ -168,6 +171,7 @@ class LogStash::Outputs::DatadogLogs < LogStash::Outputs::Base
|
|
168
171
|
retries += 1
|
169
172
|
retry
|
170
173
|
end
|
174
|
+
@logger.error("Max number of retries reached, dropping message. Last exception: #{ex.message}")
|
171
175
|
rescue => ex
|
172
176
|
@logger.error("Unmanaged exception while sending log to datadog #{ex.message}")
|
173
177
|
end
|
@@ -192,24 +196,39 @@ class LogStash::Outputs::DatadogLogs < LogStash::Outputs::Base
|
|
192
196
|
::Manticore::ResolutionFailure
|
193
197
|
]
|
194
198
|
|
195
|
-
def initialize(logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key)
|
199
|
+
def initialize(logger, use_ssl, no_ssl_validation, host, port, use_compression, api_key, force_v1_routes, http_proxy)
|
196
200
|
@logger = logger
|
197
201
|
protocol = use_ssl ? "https" : "http"
|
198
|
-
|
202
|
+
|
199
203
|
@headers = {"Content-Type" => "application/json"}
|
200
204
|
if use_compression
|
201
205
|
@headers["Content-Encoding"] = "gzip"
|
202
206
|
end
|
203
|
-
|
207
|
+
|
208
|
+
if force_v1_routes
|
209
|
+
@url = "#{protocol}://#{host}:#{port.to_s}/v1/input/#{api_key}"
|
210
|
+
else
|
211
|
+
@url = "#{protocol}://#{host}:#{port.to_s}/api/v2/logs"
|
212
|
+
@headers["DD-API-KEY"] = api_key
|
213
|
+
@headers["DD-EVP-ORIGIN"] = "logstash"
|
214
|
+
@headers["DD-EVP-ORIGIN-VERSION"] = DatadogLogStashPlugin::VERSION
|
215
|
+
end
|
216
|
+
|
217
|
+
logger.info("Starting HTTP connection to #{protocol}://#{host}:#{port.to_s} with compression " + (use_compression ? "enabled" : "disabled") + (force_v1_routes ? " using v1 routes" : " using v2 routes"))
|
218
|
+
|
204
219
|
config = {}
|
205
220
|
config[:ssl][:verify] = :disable if no_ssl_validation
|
221
|
+
if http_proxy != ""
|
222
|
+
config[:proxy] = http_proxy
|
223
|
+
end
|
206
224
|
@client = Manticore::Client.new(config)
|
207
225
|
end
|
208
226
|
|
209
227
|
def send(payload)
|
210
228
|
begin
|
211
229
|
response = @client.post(@url, :body => payload, :headers => @headers).call
|
212
|
-
|
230
|
+
# in case of error or 429, we will retry sending this payload
|
231
|
+
if response.code >= 500 || response.code == 429
|
213
232
|
raise RetryableError.new "Unable to send payload: #{response.code} #{response.body}"
|
214
233
|
end
|
215
234
|
if response.code >= 400
|
@@ -1,6 +1,12 @@
|
|
1
|
+
# Load version.rb containing the DatadogLogStashPlugin::VERSION
|
2
|
+
# for current Gem version.
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require "logstash/outputs/version.rb"
|
6
|
+
|
1
7
|
Gem::Specification.new do |s|
|
2
8
|
s.name = 'logstash-output-datadog_logs'
|
3
|
-
s.version =
|
9
|
+
s.version = DatadogLogStashPlugin::VERSION
|
4
10
|
s.licenses = ['Apache-2.0']
|
5
11
|
s.summary = 'DatadogLogs lets you send logs to Datadog based on LogStash events.'
|
6
12
|
s.homepage = 'https://www.datadoghq.com/'
|
@@ -9,7 +15,7 @@ Gem::Specification.new do |s|
|
|
9
15
|
s.require_paths = ['lib']
|
10
16
|
|
11
17
|
# Files
|
12
|
-
s.files = Dir['lib/**/*', 'spec/**/*', 'vendor/**/*', '*.gemspec', '*.md', 'CONTRIBUTORS', 'Gemfile', 'LICENSE', 'NOTICE.TXT']
|
18
|
+
s.files = Dir['lib/**/*', 'spec/**/*', 'vendor/**/*', "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", '*.gemspec', '*.md', 'CONTRIBUTORS', 'Gemfile', 'LICENSE', 'NOTICE.TXT']
|
13
19
|
# Tests
|
14
20
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
15
21
|
|
@@ -17,7 +23,7 @@ Gem::Specification.new do |s|
|
|
17
23
|
s.metadata = {"logstash_plugin" => "true", "logstash_group" => "output"}
|
18
24
|
|
19
25
|
# Gem dependencies
|
20
|
-
s.add_runtime_dependency "logstash-core-plugin-api", "
|
26
|
+
s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
|
21
27
|
s.add_runtime_dependency 'manticore', '>= 0.5.2', '< 1.0.0'
|
22
28
|
s.add_runtime_dependency 'logstash-codec-json'
|
23
29
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# under the Apache License Version 2.0.
|
3
3
|
# This product includes software developed at Datadog (https://www.datadoghq.com/).
|
4
4
|
# Copyright 2017 Datadog, Inc.
|
5
|
-
|
5
|
+
# encoding: utf-8
|
6
6
|
require "logstash/devutils/rspec/spec_helper"
|
7
7
|
require "logstash/outputs/datadog_logs"
|
8
8
|
require 'webmock/rspec'
|
@@ -90,76 +90,87 @@ describe LogStash::Outputs::DatadogLogs do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
context "when facing HTTP connection issues" do
|
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
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
93
|
+
http_proxy = ""
|
94
|
+
[true, false].each do |force_v1_routes|
|
95
|
+
it "should retry when server is returning 5XX " + (force_v1_routes ? "using v1 routes" : "using v2 routes") do
|
96
|
+
api_key = 'XXX'
|
97
|
+
stub_dd_request_with_return_code(api_key, 500, force_v1_routes)
|
98
|
+
payload = '{}'
|
99
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
100
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should not retry when server is returning 4XX" do
|
104
|
+
api_key = 'XXX'
|
105
|
+
stub_dd_request_with_return_code(api_key, 400, force_v1_routes)
|
106
|
+
payload = '{}'
|
107
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
108
|
+
expect { client.send(payload) }.to_not raise_error
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should retry when server is returning 429" do
|
112
|
+
api_key = 'XXX'
|
113
|
+
stub_dd_request_with_return_code(api_key, 429, force_v1_routes)
|
114
|
+
payload = '{}'
|
115
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
116
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should retry when facing a timeout exception from manticore" do
|
120
|
+
api_key = 'XXX'
|
121
|
+
stub_dd_request_with_error(api_key, Manticore::Timeout, force_v1_routes)
|
122
|
+
payload = '{}'
|
123
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
124
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should retry when facing a socket exception from manticore" do
|
128
|
+
api_key = 'XXX'
|
129
|
+
stub_dd_request_with_error(api_key, Manticore::SocketException, force_v1_routes)
|
130
|
+
payload = '{}'
|
131
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
132
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should retry when facing a client protocol exception from manticore" do
|
136
|
+
api_key = 'XXX'
|
137
|
+
stub_dd_request_with_error(api_key, Manticore::ClientProtocolException, force_v1_routes)
|
138
|
+
payload = '{}'
|
139
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
140
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should retry when facing a dns failure from manticore" do
|
144
|
+
api_key = 'XXX'
|
145
|
+
stub_dd_request_with_error(api_key, Manticore::ResolutionFailure, force_v1_routes)
|
146
|
+
payload = '{}'
|
147
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
148
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should retry when facing a socket timeout from manticore" do
|
152
|
+
api_key = 'XXX'
|
153
|
+
stub_dd_request_with_error(api_key, Manticore::SocketTimeout, force_v1_routes)
|
154
|
+
payload = '{}'
|
155
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
156
|
+
expect { client.send(payload) }.to raise_error(LogStash::Outputs::DatadogLogs::RetryableError)
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should not retry when facing any other general error" do
|
160
|
+
api_key = 'XXX'
|
161
|
+
stub_dd_request_with_error(api_key, StandardError, force_v1_routes)
|
162
|
+
payload = '{}'
|
163
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
164
|
+
expect { client.send(payload) }.to raise_error(StandardError)
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should not stop the forwarder when facing any client uncaught exception" do
|
168
|
+
api_key = 'XXX'
|
169
|
+
stub_dd_request_with_error(api_key, StandardError, force_v1_routes)
|
170
|
+
payload = '{}'
|
171
|
+
client = LogStash::Outputs::DatadogLogs::DatadogHTTPClient.new Logger.new(STDOUT), false, false, "datadog.com", 80, false, api_key, force_v1_routes, http_proxy
|
172
|
+
expect { client.send_retries(payload, 2, 2) }.to_not raise_error
|
173
|
+
end
|
163
174
|
end
|
164
175
|
end
|
165
176
|
|
@@ -177,24 +188,36 @@ describe LogStash::Outputs::DatadogLogs do
|
|
177
188
|
end
|
178
189
|
end
|
179
190
|
|
180
|
-
def stub_dd_request_with_return_code(api_key, return_code)
|
181
|
-
stub_dd_request(api_key).
|
191
|
+
def stub_dd_request_with_return_code(api_key, return_code, force_v1_routes)
|
192
|
+
stub_dd_request(api_key, force_v1_routes).
|
182
193
|
to_return(status: return_code, body: "", headers: {})
|
183
194
|
end
|
184
195
|
|
185
|
-
def stub_dd_request_with_error(api_key, error)
|
186
|
-
stub_dd_request(api_key).
|
196
|
+
def stub_dd_request_with_error(api_key, error, force_v1_routes)
|
197
|
+
stub_dd_request(api_key, force_v1_routes).
|
187
198
|
to_raise(error)
|
188
199
|
end
|
189
200
|
|
190
|
-
def stub_dd_request(api_key)
|
191
|
-
|
201
|
+
def stub_dd_request(api_key, force_v1_routes)
|
202
|
+
if force_v1_routes
|
203
|
+
stub_request(:post, "http://datadog.com/v1/input/#{api_key}").
|
204
|
+
with(
|
205
|
+
body: "{}",
|
206
|
+
headers: {
|
207
|
+
'Connection' => 'Keep-Alive',
|
208
|
+
'Content-Type' => 'application/json'
|
209
|
+
})
|
210
|
+
else
|
211
|
+
stub_request(:post, "http://datadog.com/api/v2/logs").
|
192
212
|
with(
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
}
|
213
|
+
body: "{}",
|
214
|
+
headers: {
|
215
|
+
'Connection' => 'Keep-Alive',
|
216
|
+
'Content-Type' => 'application/json',
|
217
|
+
'DD-API-KEY' => "#{api_key}",
|
218
|
+
'DD-EVP-ORIGIN' => 'logstash',
|
219
|
+
'DD-EVP-ORIGIN-VERSION' => DatadogLogStashPlugin::VERSION
|
220
|
+
})
|
221
|
+
end
|
198
222
|
end
|
199
|
-
|
200
|
-
end
|
223
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-datadog_logs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog
|
@@ -9,22 +9,28 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.60'
|
20
|
+
- - "<="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
22
|
+
version: '2.99'
|
20
23
|
name: logstash-core-plugin-api
|
21
|
-
prerelease: false
|
22
24
|
type: :runtime
|
25
|
+
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- - "
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.60'
|
31
|
+
- - "<="
|
26
32
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
33
|
+
version: '2.99'
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
@@ -35,8 +41,8 @@ dependencies:
|
|
35
41
|
- !ruby/object:Gem::Version
|
36
42
|
version: 1.0.0
|
37
43
|
name: manticore
|
38
|
-
prerelease: false
|
39
44
|
type: :runtime
|
45
|
+
prerelease: false
|
40
46
|
version_requirements: !ruby/object:Gem::Requirement
|
41
47
|
requirements:
|
42
48
|
- - ">="
|
@@ -52,8 +58,8 @@ dependencies:
|
|
52
58
|
- !ruby/object:Gem::Version
|
53
59
|
version: '0'
|
54
60
|
name: logstash-codec-json
|
55
|
-
prerelease: false
|
56
61
|
type: :runtime
|
62
|
+
prerelease: false
|
57
63
|
version_requirements: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - ">="
|
@@ -66,8 +72,8 @@ dependencies:
|
|
66
72
|
- !ruby/object:Gem::Version
|
67
73
|
version: '0'
|
68
74
|
name: logstash-devutils
|
69
|
-
prerelease: false
|
70
75
|
type: :development
|
76
|
+
prerelease: false
|
71
77
|
version_requirements: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - ">="
|
@@ -80,8 +86,8 @@ dependencies:
|
|
80
86
|
- !ruby/object:Gem::Version
|
81
87
|
version: '0'
|
82
88
|
name: webmock
|
83
|
-
prerelease: false
|
84
89
|
type: :development
|
90
|
+
prerelease: false
|
85
91
|
version_requirements: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - ">="
|
@@ -100,6 +106,7 @@ files:
|
|
100
106
|
- NOTICE.TXT
|
101
107
|
- README.md
|
102
108
|
- lib/logstash/outputs/datadog_logs.rb
|
109
|
+
- lib/logstash/outputs/version.rb
|
103
110
|
- logstash-output-datadog_logs.gemspec
|
104
111
|
- spec/outputs/datadog_logs_spec.rb
|
105
112
|
homepage: https://www.datadoghq.com/
|
@@ -123,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
130
|
- !ruby/object:Gem::Version
|
124
131
|
version: '0'
|
125
132
|
requirements: []
|
126
|
-
|
127
|
-
rubygems_version: 2.7.10
|
133
|
+
rubygems_version: 3.2.29
|
128
134
|
signing_key:
|
129
135
|
specification_version: 4
|
130
136
|
summary: DatadogLogs lets you send logs to Datadog based on LogStash events.
|