fluent-plugin-datadog-log 0.1.0.rc18 → 0.1.0

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: ea5367ecfa2d3cfd858c8c3854328f087dc02dc2
4
- data.tar.gz: 4a8cb53397ceba0e643919df3b72f0f36fa3f4fc
3
+ metadata.gz: 7ba2d248887e5b2de08cb5fdb40dd54daf9628fb
4
+ data.tar.gz: c2dd337e77d4b81cca604116943a22acd60ab0fb
5
5
  SHA512:
6
- metadata.gz: c54999044447974a62210989f775694e5a75d85377edd57a379072c5ebd652fcc2f06aca44327d491185bd0e478d998e288e52e5a03068cb39974e4b47e4dff1
7
- data.tar.gz: 1eeba1a6b4ddbfdee6483288f0ec6cb0d44e3768bf8ce174369ec60e92afb0844025d4840bdeb69bb20d8a1c68e225682a8c8c87e2e0f9905e748e100d57ad61
6
+ metadata.gz: e2d416a45ca1e3fa96319f75b14d7fc5ef21b18c049483acc754650776c4b50eccc70bb18c2f5ec54bdc74f7cabaaf9c7c9427d04d79429dfa152da0aba406d4
7
+ data.tar.gz: 50b49c31982537c5aaa6c75cebd2456dc3dfb6d2c92861ea664df55443016010c6274307c76f1a973cd3ffc601c3ec00fce17d071d5fb90e06627a8a7d3d416d
@@ -1,12 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-datadog-log (0.1.0.rc18)
5
- fluentd (~> 1.0.0)
4
+ fluent-plugin-datadog-log (0.1.0)
5
+ fluentd (~> 0.14)
6
6
  json (~> 1.8)
7
- net_tcp_client (~> 2.0.1)
8
- prometheus-client (~> 0.7.1)
9
- semantic_logger (~> 4.2.0)
10
7
 
11
8
  GEM
12
9
  remote: https://rubygems.org/
@@ -16,11 +13,10 @@ GEM
16
13
  ast (2.3.0)
17
14
  astrolabe (1.3.1)
18
15
  parser (~> 2.2)
19
- concurrent-ruby (1.0.5)
20
- cool.io (1.5.3)
16
+ cool.io (1.5.1)
21
17
  crack (0.4.3)
22
18
  safe_yaml (~> 1.0.0)
23
- fluentd (1.0.0)
19
+ fluentd (0.14.22)
24
20
  cool.io (>= 1.4.5, < 2.0.0)
25
21
  http_parser.rb (>= 0.5.1, < 0.7.0)
26
22
  msgpack (>= 0.7.0, < 2.0.0)
@@ -37,15 +33,15 @@ GEM
37
33
  metaclass (0.0.4)
38
34
  mocha (1.3.0)
39
35
  metaclass (~> 0.0.1)
40
- msgpack (1.2.0)
36
+ msgpack (1.1.0)
41
37
  net_tcp_client (2.0.1)
42
- parser (2.4.0.2)
43
- ast (~> 2.3)
38
+ parser (2.4.0.0)
39
+ ast (~> 2.2)
44
40
  power_assert (1.1.1)
45
41
  powerpack (0.1.1)
46
42
  prometheus-client (0.7.1)
47
43
  quantile (~> 0.2.0)
48
- public_suffix (3.0.1)
44
+ public_suffix (3.0.0)
49
45
  quantile (0.2.0)
50
46
  rainbow (2.2.2)
51
47
  rake
@@ -60,8 +56,6 @@ GEM
60
56
  ruby-progressbar (1.9.0)
61
57
  ruby_dig (0.0.2)
62
58
  safe_yaml (1.0.4)
63
- semantic_logger (4.2.0)
64
- concurrent-ruby (~> 1.0)
65
59
  serverengine (2.0.5)
66
60
  sigdump (~> 0.2.2)
67
61
  sigdump (0.2.4)
@@ -86,6 +80,8 @@ PLATFORMS
86
80
  DEPENDENCIES
87
81
  fluent-plugin-datadog-log!
88
82
  mocha (~> 1.1)
83
+ net_tcp_client (~> 2.0.1)
84
+ prometheus-client (~> 0.7.1)
89
85
  rake (~> 10.3)
90
86
  rubocop (~> 0.35.0)
91
87
  test-unit (~> 3.0)
@@ -37,14 +37,6 @@ of your fluentd configuration file, for example:
37
37
 
38
38
  Add `log_level debug` to enable debug logging which dumps every payload sent to Datadog.
39
39
 
40
- == Testing Datadog Connectivity within irb
41
-
42
- cd path/to/fluent-plugin-datadog-log
43
-
44
- bundle exec irb -r datadog/lib
45
-
46
- c = Datadog::Log::Client.new(api_key:ENV['DD_LOG_API_KEY'],hostname:'myhost'); pl = c.send_payload(msg: 'foobar', source: 'myapp', source_category: 'stdout', service: 'irb', tags: %w|foo=bar|); puts pl
47
-
48
40
  == Copyright
49
41
 
50
42
  Copyright:: Copyright 2017 Yusuke KUOKA All rights reserved.
@@ -8,7 +8,7 @@ eos
8
8
  gem.homepage = \
9
9
  'https://github.com/mumoshu/fluent-plugin-datadog-log'
10
10
  gem.license = 'Apache-2.0'
11
- gem.version = '0.1.0.rc18'
11
+ gem.version = '0.1.0'
12
12
  gem.authors = ['Yusuke KUOKA']
13
13
  gem.email = ['ykuoka@gmail.com']
14
14
  gem.required_ruby_version = Gem::Requirement.new('>= 2.0')
@@ -17,17 +17,15 @@ eos
17
17
  gem.test_files = gem.files.grep(/^(test)/)
18
18
  gem.require_paths = ['lib']
19
19
 
20
- gem.add_runtime_dependency 'fluentd', '~> 1.0.0'
20
+ gem.add_runtime_dependency 'fluentd', '~> 0.14'
21
21
  # gem.add_runtime_dependency 'datadog-log-api-client', '~> 0.1'
22
22
  gem.add_runtime_dependency 'json', '~> 1.8'
23
23
 
24
- gem.add_dependency 'net_tcp_client', '~> 2.0.1'
25
- gem.add_dependency 'prometheus-client', '~> 0.7.1'
26
- gem.add_dependency 'semantic_logger', '~> 4.2.0'
27
-
24
+ gem.add_development_dependency 'net_tcp_client', '~> 2.0.1'
28
25
  gem.add_development_dependency 'mocha', '~> 1.1'
29
26
  gem.add_development_dependency 'rake', '~> 10.3'
30
27
  gem.add_development_dependency 'rubocop', '~> 0.35.0'
31
28
  gem.add_development_dependency 'webmock', '~> 2.3.1'
32
29
  gem.add_development_dependency 'test-unit', '~> 3.0'
30
+ gem.add_development_dependency 'prometheus-client', '~> 0.7.1'
33
31
  end
@@ -17,20 +17,18 @@ require 'open-uri'
17
17
  require 'socket'
18
18
  require 'time'
19
19
  require 'yaml'
20
+ require 'net/tcp_client'
20
21
  require 'fluent/plugin/output'
21
22
 
22
- require_relative 'datadog_log'
23
23
  require_relative 'monitoring'
24
24
 
25
25
  module Fluent::Plugin
26
26
  # fluentd output plugin for the Datadog Log Intake API
27
27
  class DatadogOutput < ::Fluent::Plugin::Output
28
- Fluent::Plugin.register_output('datadog_log', self)
28
+ Fluent::Plugin.register_output('datadog', self)
29
29
 
30
30
  helpers :compat_parameters, :inject
31
31
 
32
- include ::Datadog::Log
33
-
34
32
  DEFAULT_BUFFER_TYPE = 'memory'
35
33
 
36
34
  PLUGIN_NAME = 'Fluentd Datadog plugin'
@@ -42,6 +40,16 @@ module Fluent::Plugin
42
40
  # Disable this warning to conform to fluentd config_param conventions.
43
41
  # rubocop:disable Style/HashSyntax
44
42
 
43
+ TRUNCATED_MSG = '...TRUNCATED...'
44
+
45
+ TRUNCATED_LEN = TRUNCATED_MSG.size
46
+
47
+ # MaxMessageLen is the maximum length for any message we send to the intake
48
+ # see https://github.com/DataDog/datadog-log-agent/blob/2394da8c79a6cadbcd1e98d6c89c437becec2732/pkg/config/constants.go#L9-L10
49
+ DD_MAX_MESSAGE_LEN = 1 * 1000 * 1000
50
+
51
+ MAX_MESSAGE_LEN = DD_MAX_MESSAGE_LEN - TRUNCATED_LEN
52
+
45
53
  # see https://github.com/DataDog/datadog-log-agent/blob/db13b53dfdd036d43acfb15089a43eb31548f09f/pkg/logagent/logsagent.go#L26-L30
46
54
  # see https://github.com/DataDog/datadog-log-agent/blob/db13b53dfdd036d43acfb15089a43eb31548f09f/pkg/config/config.go#L52-L56
47
55
  config_param :log_dd_url, :string, default: 'intake.logs.datadoghq.com'
@@ -123,14 +131,63 @@ module Fluent::Plugin
123
131
  @log = $log # rubocop:disable Style/GlobalVars
124
132
  end
125
133
 
134
+ def truncate_message(msg)
135
+ if msg.size > DD_MAX_MESSAGE_LEN
136
+ msg.slice(0, MAX_MESSAGE_LEN) + TRUNCATED_MSG
137
+ else
138
+ msg
139
+ end
140
+ end
141
+
142
+ # Given a list of tags, build_tags_payload generates the bytes array
143
+ # that will be inserted into messages
144
+ # @see https://github.com/DataDog/datadog-log-agent/blob/2394da8c79a6cadbcd1e98d6c89c437becec2732/pkg/config/integration_config.go#L180
145
+ def build_tags_payload(config_tags:, source:, source_category:)
146
+ payload = ''
147
+
148
+ payload = "[dd ddsource=\"#{source}\"]" if !source.nil? && source != ''
149
+
150
+ if !source_category.nil? && source_category != ''
151
+ payload = "#{payload}[dd ddsourcecategory=\"#{source_category}\"]"
152
+ end
153
+
154
+ if !config_tags.nil? && config_tags != ''
155
+ config_tags = config_tags.join(',') if config_tags.is_a? ::Array
156
+ payload = "#{payload}[dd ddtags=\"#{config_tags}\"]"
157
+ end
158
+
159
+ payload
160
+ end
161
+
162
+ # https://github.com/DataDog/datadog-log-agent/blob/db13b53dfdd036d43acfb15089a43eb31548f09f/pkg/processor/processor.go#L65
163
+ def build_extra_content(timestamp:, hostname:, service:, tags_payload:)
164
+ "<46>0 #{timestamp} #{hostname} #{service} - - #{tags_payload}"
165
+ end
166
+
167
+ def build_api_key_str(api_key:, logset:)
168
+ if !logset.nil? && logset != ''
169
+ "#{api_key}/#{logset}"
170
+ else
171
+ api_key
172
+ end
173
+ end
174
+
175
+ # build_payload returns a processed payload from a raw message
176
+ # @param [String] api_key_str
177
+ # @param [String] extra_content
178
+ # @param [String] msg
179
+ def build_payload(api_key_str:, msg:, extra_content:)
180
+ "#{api_key_str} #{extra_content} #{msg}\\n"
181
+ end
182
+
126
183
  def configure(conf)
127
184
  compat_parameters_convert(conf, :buffer, :inject)
128
185
  super
129
186
 
130
187
  if @api_key.size == 0
131
- @api_key = ENV['DD_API_KEY']
188
+ @api_key = ENV['DD_LOG_API_KEY']
132
189
  if @api_key == '' || @api_key.nil?
133
- error_message = 'Unable to obtain api_key from DD_API_KEY'
190
+ error_message = 'Unable to obtain api_key from DD_LOG_API_KEY'
134
191
  fail Fluent::ConfigError, error_message
135
192
  end
136
193
  end
@@ -183,7 +240,7 @@ module Fluent::Plugin
183
240
 
184
241
  def shutdown
185
242
  super
186
- @conn.shutdown
243
+ @conn.close unless @conn.nil?
187
244
  end
188
245
 
189
246
  def format(tag, time, record)
@@ -232,10 +289,7 @@ module Fluent::Plugin
232
289
  begin
233
290
  msg = nil
234
291
  %w(log message msg).each do |field|
235
- if record.key?(field)
236
- msg = record[field]
237
- break
238
- end
292
+ msg = record[field] if record.key?(field)
239
293
  end
240
294
 
241
295
  tags = []
@@ -249,31 +303,13 @@ module Fluent::Plugin
249
303
  }
250
304
 
251
305
  mappings.each do |json_key, tag_key|
252
- tags << "#{tag_key}:#{kube[json_key]}" if kube.key? json_key
306
+ tags << "#{tag_key}=#{kube[json_key]}" if kube.key? json_key
253
307
  end
254
308
 
255
- kube_labels = kube['labels']
256
- unless kube_labels.nil?
257
- kube_labels.each do |k, v|
258
- k2 = k.dup
259
- k2.gsub!(/[\,\.]/, '_')
260
- k2.gsub!(%r{/}, '-')
261
- tags << "kube_#{k2}:#{v}"
262
- end
263
- end
264
-
265
- @log.debug 'Dumping kubernetes metadata', metadata: kube
266
-
267
- annotations = kube['annotations']
268
- unless annotations.nil?
269
- created_by_str = annotations['kubernetes_io/created-by']
270
- unless created_by_str.nil?
271
- created_by = JSON.parse(created_by_str)
272
- ref = created_by['reference'] unless created_by.nil?
273
- kind = ref['kind'] unless ref.nil?
274
- name = ref['name'] unless ref.nil?
275
- kind = kind.downcase unless kind.nil?
276
- tags << "kube_#{kind}:#{name}" if !kind.nil? && !name.nil?
309
+ if kube.key? 'labels'
310
+ labels = kube['labels']
311
+ labels.each do |k, v|
312
+ tags << "kube_#{k}=#{v}"
277
313
  end
278
314
  end
279
315
 
@@ -285,31 +321,26 @@ module Fluent::Plugin
285
321
 
286
322
  tags.concat(@default_tags)
287
323
 
288
- unless kube_labels.nil?
289
- service = kube_labels['app'] ||
290
- kube_labels['k8s-app']
291
- end
292
- source = kube['pod_name']
293
- source_category = kube['container_name']
294
-
295
- service = @service if service.nil?
296
- source = @source if source.nil?
297
- source_category = @source_category if source_category.nil?
298
-
299
324
  datetime = Time.at(Fluent::EventTime.new(time).to_r).utc.to_datetime
300
-
301
- payload =
302
- @conn.send_payload(
303
- logset: @logset,
304
- msg: msg,
305
- datetime: datetime,
306
- service: service,
307
- source: source,
308
- source_category: source_category,
309
- tags: tags
325
+ timestamp_str = datetime.rfc3339(6)
326
+
327
+ payload = build_payload(
328
+ api_key_str: build_api_key_str(api_key: @api_key, logset: @logset),
329
+ msg: truncate_message(msg),
330
+ extra_content: build_extra_content(
331
+ timestamp: timestamp_str,
332
+ hostname: @vm_id,
333
+ service: @service,
334
+ tags_payload: build_tags_payload(
335
+ config_tags: tags,
336
+ source: @source,
337
+ source_category: @source_category
338
+ )
310
339
  )
340
+ )
311
341
 
312
342
  entries_count = 1
343
+ @conn.write(payload)
313
344
  @log.debug 'Sent payload to Datadog.', payload: payload
314
345
  increment_successful_requests_count
315
346
  increment_ingested_entries_count(entries_count)
@@ -323,33 +354,17 @@ module Fluent::Plugin
323
354
 
324
355
  rescue => error
325
356
  increment_failed_requests_count
326
- if entries_count.nil?
327
- increment_dropped_entries_count(1)
328
- @log.error 'Not retrying a log message later',
329
- error: error.to_s, error_class: error.class
330
- else
331
- increment_retried_entries_count(entries_count)
332
- # RPC cancelled, so retry via re-raising the error.
333
- @log.debug "Retrying #{entries_count} log message(s) later.",
334
- error: error.to_s
335
- raise error
336
- end
357
+ increment_retried_entries_count(entries_count)
358
+ # RPC cancelled, so retry via re-raising the error.
359
+ @log.debug "Retrying #{entries_count} log message(s) later.",
360
+ error: error.to_s
361
+ raise error
337
362
  end
338
363
  end
339
364
  end
340
365
 
341
366
  private
342
367
 
343
- def init_api_client
344
- @conn = ::Datadog::Log::Client.new(
345
- log_dd_url: @log_dd_url,
346
- log_dd_port: @log_dd_port,
347
- api_key: @api_key,
348
- hostname: @vm_id,
349
- skip_ssl_validation: @skip_ssl_validation
350
- )
351
- end
352
-
353
368
  def parse_json_or_nil(input)
354
369
  # Only here to please rubocop...
355
370
  return nil if input.nil?
@@ -479,24 +494,18 @@ module Fluent::Plugin
479
494
  aws_account_id = ec2_metadata['accountId'] if
480
495
  ec2_metadata.key?('accountId')
481
496
  # #host:i-09fbfed2672d2c6bf
482
- %W(host:#{@vm_id} zone:#{@zone} aws_account_id:#{aws_account_id})
497
+ %W(host=#{@vm_id} zone=#{@zone} aws_account_id=#{aws_account_id})
483
498
  .concat @tags
484
499
  end
485
500
 
486
501
  # Filter out invalid non-Hash entries.
487
502
  def each_valid_record(chunk)
488
503
  chunk.msgpack_each do |event|
489
- unless event.respond_to? :last
490
- @log.warn 'Dropping a malformed event: ' \
491
- "'#{event.inspect}'. " \
492
- 'An event should be an array.'
493
- next
494
- end
495
504
  record = event.last
496
505
  unless record.is_a?(Hash)
497
506
  @log.warn 'Dropping log entries with malformed record: ' \
498
507
  "'#{record.inspect}'. " \
499
- "A record should be a hash but was a #{record.class}."
508
+ 'A log record should be in JSON format.'
500
509
  next
501
510
  end
502
511
  tag = record.first
@@ -524,6 +533,13 @@ module Fluent::Plugin
524
533
  tag
525
534
  end
526
535
 
536
+ def init_api_client
537
+ ssl = true
538
+ ssl = { verify_mode: OpenSSL::SSL::VERIFY_NONE } if @skip_ssl_validation
539
+ server = "#{@log_dd_url}:#{@log_dd_port}"
540
+ @conn = Net::TCPClient.new(server: server, ssl: ssl)
541
+ end
542
+
527
543
  # Encode as UTF-8. If 'coerce_to_utf8' is set to true in the config, any
528
544
  # non-UTF-8 character would be replaced by the string specified by
529
545
  # 'non_utf8_replacement_string'. If 'coerce_to_utf8' is set to false, any
@@ -35,31 +35,6 @@ class DatadogLogOutputTest < Test::Unit::TestCase
35
35
  end
36
36
  end
37
37
 
38
- def test_configure_with_env
39
- new_stub_context do
40
- setup_ec2_metadata_stubs
41
-
42
- ENV.stubs(:[])
43
- .with('DD_API_KEY')
44
- .returns('myapikey_from_env')
45
-
46
- ENV.stubs(:[])
47
- .with(Not equals 'DD_API_KEY')
48
- .returns('')
49
- .times(3)
50
-
51
- d = create_driver(<<-EOC)
52
- type datadog_log
53
- service myservice
54
- source mysource
55
- EOC
56
-
57
- assert_equal 'myapikey_from_env', d.instance.api_key
58
- assert_equal 'myservice', d.instance.service
59
- assert_equal 'mysource', d.instance.source
60
- end
61
- end
62
-
63
38
  def test_write
64
39
  new_stub_context do
65
40
  setup_ec2_metadata_stubs
@@ -78,66 +53,16 @@ class DatadogLogOutputTest < Test::Unit::TestCase
78
53
  EOC
79
54
  conn = StubConn.new
80
55
  fluentd_tag = 'mytag'
81
- Net::TCPClient.stubs(:new)
82
- .with(server: 'intake.logs.datadoghq.com:10516', ssl: true)
83
- .returns(conn)
84
- d.run(default_tag: fluentd_tag) do
85
- record = {
86
- 'log' => 'mymsg'
87
- }
88
- d.feed(time, record)
89
- end
90
-
91
- # fail d.logs.inspect
92
- assert_equal(1, d.logs.count { |l| l =~ /Sent payload to Datadog/ })
93
- assert_equal(1, conn.sent.size)
94
- # rubocop:disable LineLength
95
- payload = %(myapikey/mylogset <46>0 2006-01-02T15:04:05.000000+00:00 i-81c16767 myservice - - [dd ddsource="mysource"][dd ddsourcecategory="mysourcecategory"][dd ddtags="host:i-81c16767,zone:aws:us-west-2b,aws_account_id:123456789012"] mymsg\n)
96
- # rubocop:enable LineLength
97
- assert_equal(payload, conn.sent.first)
98
- end
99
- end
100
-
101
- def test_write_kube
102
- new_stub_context do
103
- setup_ec2_metadata_stubs
104
-
105
- timestamp_str = '2006-01-02T15:04:05.000000+00:00'
106
- t = DateTime.rfc3339(timestamp_str).to_time
107
- time = Fluent::EventTime.from_time(t)
108
- d = create_driver(<<-EOC)
109
- type datadog_log
110
- api_key myapikey
111
- service myservice
112
- source mysource
113
- source_category mysourcecategory
114
- logset mylogset
115
- log_level debug
116
- tags ["kube_cluster:MyCluster", "mykey:myval"]
117
- EOC
118
- conn = StubConn.new
119
- fluentd_tag = 'mytag'
120
- Net::TCPClient.stubs(:new)
121
- .with(server: 'intake.logs.datadoghq.com:10516', ssl: true)
122
- .returns(conn)
123
56
  d.run(default_tag: fluentd_tag) do
57
+ d.instance.instance_variable_set :@conn, conn
124
58
  record = {
125
59
  'log' => 'mymsg',
126
- 'docker' => {
127
- 'container_id' => 'myfullcontainerid'
128
- },
129
60
  'kubernetes' => {
130
61
  'namespace' => 'myns',
131
62
  'pod_name' => 'mypod',
132
63
  'container_name' => 'mycontainer',
133
64
  'labels' => {
134
65
  'k8s-app' => 'myapp'
135
- },
136
- 'annotations' => {
137
- # rubocop:disable LineLength
138
- # kubernetes.io is translated to kubernetes_io by kubernetes metadata filter
139
- 'kubernetes_io/created-by' => '{"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"Deployment","namespace":"default","name":"myapp","uid":"d67e8857-c2dc-11e7-aed9-066d23381f8c","apiVersion":"extensions","resourceVersion":"289"}}'
140
- # rubocop:enable LineLength
141
66
  }
142
67
  }
143
68
  }
@@ -148,7 +73,7 @@ class DatadogLogOutputTest < Test::Unit::TestCase
148
73
  assert_equal(1, d.logs.count { |l| l =~ /Sent payload to Datadog/ })
149
74
  assert_equal(1, conn.sent.size)
150
75
  # rubocop:disable LineLength
151
- payload = %(myapikey/mylogset <46>0 2006-01-02T15:04:05.000000+00:00 i-81c16767 myapp - - [dd ddsource="mypod"][dd ddsourcecategory="mycontainer"][dd ddtags="pod_name:mypod,container_name:mycontainer,kube_k8s-app:myapp,kube_deployment:myapp,host:i-81c16767,zone:aws:us-west-2b,aws_account_id:123456789012,kube_cluster:MyCluster,mykey:myval"] mymsg\n)
76
+ payload = 'myapikey/mylogset <46>0 2006-01-02T15:04:05.000000+00:00 i-81c16767 myservice - - [dd ddsource="mysource"][dd ddsourcecategory="mysourcecategory"][dd ddtags="pod_name=mypod,container_name=mycontainer,kube_k8s-app=myapp,host=i-81c16767,zone=aws:us-west-2b,aws_account_id=123456789012"] mymsg\n'
152
77
  # rubocop:enable LineLength
153
78
  assert_equal(payload, conn.sent.first)
154
79
  end
@@ -178,10 +103,6 @@ class DatadogLogOutputTest < Test::Unit::TestCase
178
103
  log_level debug
179
104
  enable_monitoring true
180
105
  EOC
181
- conn = StubConn.new
182
- Net::TCPClient.stubs(:new)
183
- .with(server: 'intake.logs.datadoghq.com:10516', ssl: true)
184
- .returns(conn)
185
106
  d.run(default_tag: 'mytag') do
186
107
  (1..entry_count).each do |i|
187
108
  d.feed time, 'message' => log_entry(i.to_s)
@@ -221,10 +142,6 @@ class DatadogLogOutputTest < Test::Unit::TestCase
221
142
  @sent = []
222
143
  end
223
144
 
224
- def retry_on_connection_failure
225
- yield
226
- end
227
-
228
145
  def write(payload)
229
146
  @sent << payload
230
147
  end