fluent-plugin-datadog 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/fluent-plugin-datadog.gemspec +5 -3
- data/lib/fluent/plugin/out_datadog.rb +20 -7
- data/lib/fluent/plugin/version.rb +5 -0
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8907f2de3502bd5d7e4ee138dba441f1d5d0197537b8a9b246d46038f12fa045
|
4
|
+
data.tar.gz: '09e4e69d440b126a68f54bc535c2c2bba8ab1b199e70e306fd0e08ae9fbc5a37'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f895096ecb110d7d9a269e882f02c5ba844a4b6593163dcfd82f81f570eb4a3979ffa2f0fedf398f02d22445651005fe6cd9b98172fa91e1ef49b5f55d8c9d11
|
7
|
+
data.tar.gz: ac780383e151377090900d904dc855a161c2c6abaff43bf7ac7b27140fecb1ee461e0cd4bdbcdbc39c9cdf28d569eede8a30634094e7516f0b60d899246846a8
|
data/.gitignore
CHANGED
@@ -7,16 +7,18 @@
|
|
7
7
|
lib = File.expand_path('../lib', __FILE__)
|
8
8
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
9
9
|
|
10
|
+
require "fluent/plugin/version.rb"
|
11
|
+
|
10
12
|
Gem::Specification.new do |spec|
|
11
13
|
spec.name = "fluent-plugin-datadog"
|
12
|
-
spec.version =
|
14
|
+
spec.version = DatadogFluentPlugin::VERSION
|
13
15
|
spec.authors = ["Datadog Solutions Team"]
|
14
16
|
spec.email = ["support@datadoghq.com"]
|
15
17
|
spec.summary = "Datadog output plugin for Fluent event collector"
|
16
18
|
spec.homepage = "http://datadoghq.com"
|
17
19
|
spec.license = "Apache-2.0"
|
18
20
|
|
19
|
-
spec.files = [".gitignore", "Gemfile", "LICENSE", "README.md", "Rakefile", "fluent-plugin-datadog.gemspec", "lib/fluent/plugin/out_datadog.rb"]
|
21
|
+
spec.files = [".gitignore", "Gemfile", "LICENSE", "README.md", "Rakefile", "fluent-plugin-datadog.gemspec", "lib/fluent/plugin/version.rb", "lib/fluent/plugin/out_datadog.rb"]
|
20
22
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
23
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
24
|
spec.require_paths = ["lib"]
|
@@ -28,5 +30,5 @@ Gem::Specification.new do |spec|
|
|
28
30
|
spec.add_development_dependency "test-unit", '~> 3.1'
|
29
31
|
spec.add_development_dependency "rake", "~> 12.0"
|
30
32
|
spec.add_development_dependency "yajl-ruby", "~> 1.2"
|
31
|
-
spec.add_development_dependency 'webmock', "~> 3.
|
33
|
+
spec.add_development_dependency 'webmock', "~> 3.6.0"
|
32
34
|
end
|
@@ -9,6 +9,8 @@ require "yajl"
|
|
9
9
|
require "zlib"
|
10
10
|
require "fluent/plugin/output"
|
11
11
|
|
12
|
+
require_relative "version"
|
13
|
+
|
12
14
|
class Fluent::DatadogOutput < Fluent::Plugin::Output
|
13
15
|
class RetryableError < StandardError;
|
14
16
|
end
|
@@ -50,6 +52,7 @@ class Fluent::DatadogOutput < Fluent::Plugin::Output
|
|
50
52
|
config_param :compression_level, :integer, :default => 6
|
51
53
|
config_param :no_ssl_validation, :bool, :default => false
|
52
54
|
config_param :http_proxy, :string, :default => nil
|
55
|
+
config_param :force_v1_routes, :bool, :default => false
|
53
56
|
|
54
57
|
# Format settings
|
55
58
|
config_param :use_json, :bool, :default => true
|
@@ -89,7 +92,7 @@ class Fluent::DatadogOutput < Fluent::Plugin::Output
|
|
89
92
|
|
90
93
|
def start
|
91
94
|
super
|
92
|
-
@client = new_client(log, @api_key, @use_http, @use_ssl, @no_ssl_validation, @host, @ssl_port, @port, @http_proxy, @use_compression)
|
95
|
+
@client = new_client(log, @api_key, @use_http, @use_ssl, @no_ssl_validation, @host, @ssl_port, @port, @http_proxy, @use_compression, @force_v1_routes)
|
93
96
|
end
|
94
97
|
|
95
98
|
def shutdown
|
@@ -261,9 +264,9 @@ class Fluent::DatadogOutput < Fluent::Plugin::Output
|
|
261
264
|
end
|
262
265
|
|
263
266
|
# Build a new transport client
|
264
|
-
def new_client(logger, api_key, use_http, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression)
|
267
|
+
def new_client(logger, api_key, use_http, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression, force_v1_routes)
|
265
268
|
if use_http
|
266
|
-
DatadogHTTPClient.new logger, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression, api_key
|
269
|
+
DatadogHTTPClient.new logger, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression, api_key, force_v1_routes
|
267
270
|
else
|
268
271
|
DatadogTCPClient.new logger, use_ssl, no_ssl_validation, host, ssl_port, port
|
269
272
|
end
|
@@ -301,20 +304,29 @@ class Fluent::DatadogOutput < Fluent::Plugin::Output
|
|
301
304
|
require 'net/http'
|
302
305
|
require 'net/http/persistent'
|
303
306
|
|
304
|
-
def initialize(logger, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression, api_key)
|
307
|
+
def initialize(logger, use_ssl, no_ssl_validation, host, ssl_port, port, http_proxy, use_compression, api_key, force_v1_routes = false)
|
305
308
|
@logger = logger
|
306
309
|
protocol = use_ssl ? "https" : "http"
|
307
310
|
port = use_ssl ? ssl_port : port
|
308
|
-
|
311
|
+
if force_v1_routes
|
312
|
+
@uri = URI("#{protocol}://#{host}:#{port.to_s}/v1/input/#{api_key}")
|
313
|
+
else
|
314
|
+
@uri = URI("#{protocol}://#{host}:#{port.to_s}/api/v2/logs")
|
315
|
+
end
|
309
316
|
proxy_uri = :ENV
|
310
317
|
if http_proxy
|
311
318
|
proxy_uri = URI.parse(http_proxy)
|
312
319
|
elsif ENV['HTTP_PROXY'] || ENV['http_proxy']
|
313
320
|
logger.info("Using HTTP proxy defined in `HTTP_PROXY`/`http_proxy` env vars")
|
314
321
|
end
|
315
|
-
logger.info("Starting HTTP connection to #{protocol}://#{host}:#{port.to_s} with compression " + (use_compression ? "enabled" : "disabled"))
|
322
|
+
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"))
|
316
323
|
@client = Net::HTTP::Persistent.new name: "fluent-plugin-datadog-logcollector", proxy: proxy_uri
|
317
324
|
@client.verify_mode = OpenSSL::SSL::VERIFY_NONE if no_ssl_validation
|
325
|
+
unless force_v1_routes
|
326
|
+
@client.override_headers["DD-API-KEY"] = api_key
|
327
|
+
@client.override_headers["DD-EVP-ORIGIN"] = "fluent"
|
328
|
+
@client.override_headers["DD-EVP-ORIGIN-VERSION"] = DatadogFluentPlugin::VERSION
|
329
|
+
end
|
318
330
|
@client.override_headers["Content-Type"] = "application/json"
|
319
331
|
if use_compression
|
320
332
|
@client.override_headers["Content-Encoding"] = "gzip"
|
@@ -330,7 +342,8 @@ class Fluent::DatadogOutput < Fluent::Plugin::Output
|
|
330
342
|
request.body = payload
|
331
343
|
response = @client.request @uri, request
|
332
344
|
res_code = response.code.to_i
|
333
|
-
|
345
|
+
# on a backend error or on an http 429, retry with backoff
|
346
|
+
if res_code >= 500 || res_code == 429
|
334
347
|
raise RetryableError.new "Unable to send payload: #{res_code} #{response.message}"
|
335
348
|
end
|
336
349
|
if res_code >= 400
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog Solutions Team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -106,15 +106,15 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 3.
|
109
|
+
version: 3.6.0
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: 3.
|
117
|
-
description:
|
116
|
+
version: 3.6.0
|
117
|
+
description:
|
118
118
|
email:
|
119
119
|
- support@datadoghq.com
|
120
120
|
executables: []
|
@@ -128,11 +128,12 @@ files:
|
|
128
128
|
- Rakefile
|
129
129
|
- fluent-plugin-datadog.gemspec
|
130
130
|
- lib/fluent/plugin/out_datadog.rb
|
131
|
+
- lib/fluent/plugin/version.rb
|
131
132
|
homepage: http://datadoghq.com
|
132
133
|
licenses:
|
133
134
|
- Apache-2.0
|
134
135
|
metadata: {}
|
135
|
-
post_install_message:
|
136
|
+
post_install_message:
|
136
137
|
rdoc_options: []
|
137
138
|
require_paths:
|
138
139
|
- lib
|
@@ -147,8 +148,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
148
|
- !ruby/object:Gem::Version
|
148
149
|
version: '0'
|
149
150
|
requirements: []
|
150
|
-
|
151
|
-
|
151
|
+
rubyforge_project:
|
152
|
+
rubygems_version: 2.7.10
|
153
|
+
signing_key:
|
152
154
|
specification_version: 4
|
153
155
|
summary: Datadog output plugin for Fluent event collector
|
154
156
|
test_files: []
|