fluent-plugin-logdna 0.2.3 → 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
  SHA256:
3
- metadata.gz: febe9d7b76663bb4b6ac9708469baac099cef66350bb0632a16a8c769d7f6401
4
- data.tar.gz: 59ff8adb086da0a1822f3b35aaa546a1c5054138fd0f0066fdfb08559ca26766
3
+ metadata.gz: 7dc5c3a579927d59c9a9705bd5ceec17d5a6dc3d8964d1639dd51afb23eaca80
4
+ data.tar.gz: 2519afb42481d5840bd11b5d579637e4ea55008dc89996421013185d76439374
5
5
  SHA512:
6
- metadata.gz: 1b5bbb8fadaf21d8fcae55fe9796ad654667e91f1d00b82741f26c3d26cb6d0db3163c67aa1ee4a01bad95a5a05cf36e2e35017ce772468c44694507781e9cf2
7
- data.tar.gz: 43704cac7be00cbb76cb2caf0c4bc44aeaaf4737468d563ee7c52e169c5f40de39f88f4ac5c7d8b3abc964b521b5c66897fcfddb6f8250ec158ea50e85cc1135
6
+ metadata.gz: 511d77f656a7584723954052a7f4c0e70b39f8115f88cbfff2369b1d9e7388fac35242ff9b52a5e0b6b2292e73c757a3efb1025833bfd6b9a96dd9ef1437fad5
7
+ data.tar.gz: c1058ffb07ab69ad383c3b1d8015aaf912ebe3d0632c612c6e63d2ba41b75c6b930fa03f8f4a415c066501bbf4ab38f900f8728b9d630cf41bee002f5b8f6b2c
data/Gemfile CHANGED
@@ -3,3 +3,4 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem "rake", "~> 12.3"
6
+ gem "webmock"
@@ -1,30 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-logdna (0.1.7.1)
4
+ fluent-plugin-logdna (0.3.1)
5
5
  fluentd (>= 0.12.0, < 2)
6
6
  http (~> 2.0, >= 2.0.3)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.5.2)
12
- public_suffix (>= 2.0.2, < 4.0)
13
- cool.io (1.5.3)
14
- dig_rb (1.0.1)
15
- domain_name (0.5.20180417)
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ concurrent-ruby (1.1.6)
14
+ cool.io (1.6.0)
15
+ crack (0.4.3)
16
+ safe_yaml (~> 1.0.0)
17
+ domain_name (0.5.20190701)
16
18
  unf (>= 0.0.5, < 1.0.0)
17
- fluentd (1.0.2)
19
+ fluentd (1.11.1)
18
20
  cool.io (>= 1.4.5, < 2.0.0)
19
- dig_rb (~> 1.0.0)
20
21
  http_parser.rb (>= 0.5.1, < 0.7.0)
21
- msgpack (>= 0.7.0, < 2.0.0)
22
+ msgpack (>= 1.3.1, < 2.0.0)
22
23
  serverengine (>= 2.0.4, < 3.0.0)
23
24
  sigdump (~> 0.2.2)
24
- strptime (~> 0.1)
25
- tzinfo (~> 1.0)
25
+ strptime (>= 0.2.2, < 1.0.0)
26
+ tzinfo (>= 1.0, < 3.0)
26
27
  tzinfo-data (~> 1.0)
27
28
  yajl-ruby (~> 1.0)
29
+ hashdiff (1.0.1)
28
30
  http (2.2.2)
29
31
  addressable (~> 2.3)
30
32
  http-cookie (~> 1.0)
@@ -34,22 +36,26 @@ GEM
34
36
  domain_name (~> 0.5)
35
37
  http-form_data (1.0.3)
36
38
  http_parser.rb (0.6.0)
37
- msgpack (1.2.0)
38
- public_suffix (3.0.1)
39
- rake (12.3.1)
40
- serverengine (2.0.5)
39
+ msgpack (1.3.3)
40
+ public_suffix (4.0.3)
41
+ rake (12.3.3)
42
+ safe_yaml (1.0.5)
43
+ serverengine (2.2.1)
41
44
  sigdump (~> 0.2.2)
42
45
  sigdump (0.2.4)
43
- strptime (0.1.9)
44
- thread_safe (0.3.6)
45
- tzinfo (1.2.4)
46
- thread_safe (~> 0.1)
47
- tzinfo-data (1.2017.3)
46
+ strptime (0.2.4)
47
+ tzinfo (2.0.2)
48
+ concurrent-ruby (~> 1.0)
49
+ tzinfo-data (1.2020.1)
48
50
  tzinfo (>= 1.0.0)
49
51
  unf (0.1.4)
50
52
  unf_ext
51
- unf_ext (0.0.7.5)
52
- yajl-ruby (1.3.1)
53
+ unf_ext (0.0.7.7)
54
+ webmock (3.8.3)
55
+ addressable (>= 2.3.6)
56
+ crack (>= 0.3.2)
57
+ hashdiff (>= 0.4.0, < 2.0.0)
58
+ yajl-ruby (1.4.1)
53
59
 
54
60
  PLATFORMS
55
61
  ruby
@@ -58,6 +64,7 @@ DEPENDENCIES
58
64
  bundler (~> 1.16)
59
65
  fluent-plugin-logdna!
60
66
  rake (~> 12.3)
67
+ webmock
61
68
 
62
69
  BUNDLED WITH
63
- 1.16.0
70
+ 1.17.2
data/README.md CHANGED
@@ -9,9 +9,9 @@ Using fluent-plugin-logdna, you can send the logs you collect with Fluentd to Lo
9
9
  * Install [Fluentd](http://www.fluentd.org/download)
10
10
  * Alternative install if using fluentd package manager (td-agent): `td-agent-gem install fluent-plugin-logdna`
11
11
  * Add the contents below to `/etc/fluent/fluent.conf`. For td-agent, use `/etc/td-agent/td-agent.conf`:
12
- * Alternative install without td-agent is: `gem install fluent-plugin-logdna`
12
+ * Alternative install without td-agent is: `gem install fluent-plugin-logdna`
13
13
 
14
- ~~~~~
14
+ ~~~~~configuration
15
15
  <match **>
16
16
  @type logdna
17
17
  api_key xxxxxxxxxxxxxxxxxxxxxxxxxxx # paste your api key here (required)
@@ -20,10 +20,12 @@ Using fluent-plugin-logdna, you can send the logs you collect with Fluentd to Lo
20
20
  #mac C0:FF:EE:C0:FF:EE # optional mac address
21
21
  #ip 127.0.0.1 # optional ip address
22
22
  #tags web,dev # optional tags
23
+ request_timeout 30000 ms # optional timeout for upload request, supports seconds (s, default) and milliseconds (ms) suffixes, default 30 seconds
23
24
  buffer_chunk_limit 1m # do not increase past 8m (8MB) or your logs will be rejected by our server.
24
25
  flush_at_shutdown true # only needed with file buffer
25
26
  </match>
26
27
  ~~~~~
28
+
27
29
  * Restart fluentd to pick up the configuration changes.
28
30
  * `sudo /etc/init.d/td-agent stop`
29
31
  * `sudo /etc/init.d/td-agent start`
@@ -31,44 +33,45 @@ Using fluent-plugin-logdna, you can send the logs you collect with Fluentd to Lo
31
33
  ### Recommended Configuration Parameters
32
34
 
33
35
  * buffer_type
34
- - We recommend setting this to memory for development and file for production (file setting requires a buffer_path).
36
+ * We recommend setting this to memory for development and file for production (file setting requires a buffer_path).
35
37
  * buffer_queue_limit, buffer_chunk_limit
36
- - We do not recommend increasing buffer_chunk_limit past 8MB.
38
+ * We do not recommend increasing buffer_chunk_limit past 8MB.
37
39
  * flush_interval
38
- - Default is 60s. We recommend keeping this well above 5s.
40
+ * Default is 60s. We recommend keeping this well above 5s.
39
41
  * retry_wait, max_retry_wait, retry_limit, disable_retry_limit
40
- - We recommend increasing these values if you are encountering problems.
42
+ * We recommend increasing these values if you are encountering problems.
41
43
 
42
44
  ### Options
43
45
 
44
46
  * App name and log level can also be provided on a line-by-line basis over JSON:
45
47
  * `_app` and `level` will override the config
46
48
 
47
- If you don't have a LogDNA account, you can create one on https://logdna.com or if you're on macOS w/[Homebrew](https://brew.sh) installed:
49
+ If you don't have a LogDNA account, you can create one on [https://logdna.com](https://logdna.com) or if you're on macOS w/[Homebrew](https://brew.sh) installed:
48
50
 
49
- ```
51
+ ~~~~~bash
50
52
  brew cask install logdna-cli
51
53
  logdna register <email>
52
54
  # now paste the api key above
53
- ```
55
+ ~~~~~
54
56
 
55
57
  ### LogDNA Pay-per-gig Pricing
56
58
 
57
59
  Our [paid plans](https://logdna.com/#pricing) start at $1.25/GB per month, pay for what you use / no fixed data buckets / all paid plans include all features.
58
60
 
59
61
  ## Building a debian package for td-agent
62
+
60
63
  If you use td-agent you can build a debian package instead of installing via
61
64
  td-agent-gem. This requires that td-agent is already installed and that you've
62
65
  installed [fpm](http://fpm.readthedocs.io/en/latest/index.html). Then just run
63
66
  `make` in your git directory.
64
67
 
65
- ```
68
+ ~~~~~bash
66
69
  gem install --no-ri --no-rdoc fpm
67
70
  git clone https://github.com/logdna/fluent-plugin-logdna
68
71
  cd fluent-plugin-logdna
69
72
  make
70
73
  sudo dpkg -i fluent-plugin-logdna*.deb
71
- ```
74
+ ~~~~~
72
75
 
73
76
  ## Additional Options
74
77
 
@@ -3,7 +3,7 @@ require 'date'
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'fluent-plugin-logdna'
6
- s.version = '0.2.3'
6
+ s.version = '0.3.1'
7
7
  s.date = Date.today.to_s
8
8
  s.summary = 'LogDNA plugin for Fluentd'
9
9
  s.description = 'Fluentd plugin for supplying output to LogDNA.'
@@ -14,10 +14,26 @@ module Fluent
14
14
  config_param :app, :string, default: nil
15
15
  config_param :file, :string, default: nil
16
16
  config_param :ingester_domain, :string, default: 'https://logs.logdna.com'
17
+ config_param :request_timeout, :string, default: '30'
17
18
 
18
19
  def configure(conf)
19
20
  super
20
21
  @host = conf['hostname']
22
+
23
+ # make these two variables globals
24
+ timeout_unit_map = { s: 1.0, ms: 0.001 }
25
+ timeout_regex = Regexp.new("^([0-9]+)\s*(#{timeout_unit_map.keys.join("|")})$")
26
+
27
+ # this section goes into this part of the code
28
+ num_component = 30.0
29
+ unit_component = 's'
30
+
31
+ timeout_regex.match(@request_timeout) do |match|
32
+ num_component = match[1].to_f
33
+ unit_component = match[2]
34
+ end
35
+
36
+ @request_timeout = num_component * timeout_unit_map[unit_component.to_sym]
21
37
  end
22
38
 
23
39
  def start
@@ -84,7 +100,8 @@ module Fluent
84
100
  url = "/logs/ingest?hostname=#{@host}&mac=#{@mac}&ip=#{@ip}&now=#{now}&tags=#{@tags}"
85
101
  @ingester.headers('apikey' => @api_key,
86
102
  'content-type' => 'application/json')
87
- .post(url, json: body)
103
+ .timeout(connect: @request_timeout, write: @request_timeout, read: @request_timeout)
104
+ .post(url, json: body)
88
105
  end
89
106
  end
90
107
  end
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../../", __FILE__))
2
+ require "test-unit"
3
+ require "fluent/test"
4
+ require "fluent/test/driver/output"
5
+ require "fluent/test/helpers"
6
+
7
+ Test::Unit::TestCase.include(Fluent::Test::Helpers)
8
+ Test::Unit::TestCase.extend(Fluent::Test::Helpers)
@@ -0,0 +1,110 @@
1
+ # https://docs.fluentd.org/plugin-development/api-plugin-output#how-to-write-tests
2
+
3
+ require_relative '../helper'
4
+ require 'fluent/test/driver/output'
5
+ require 'fluent/plugin/out_stdout'
6
+ require 'fluent/plugin/input'
7
+ require 'webmock/test_unit'
8
+ include WebMock::API
9
+
10
+ require 'lib/fluent/plugin/out_logdna.rb'
11
+
12
+ class LogdnaOutputTest < Test::Unit::TestCase
13
+ def setup
14
+ Fluent::Test.setup
15
+
16
+ stub_request(:post, /logs.logdna.com\/logs\/ingest/)
17
+ end
18
+
19
+ # default configuration for tests
20
+ CONFIG = %[
21
+ api_key this-is-my-key
22
+ hostname "localhost"
23
+ app my_app
24
+ mac C0:FF:EE:C0:FF:EE
25
+ ip 127.0.0.1
26
+ tags "my-tag"
27
+ ]
28
+
29
+ def create_driver(conf = CONFIG)
30
+ Fluent::Test::Driver::Output.new(Fluent::LogDNAOutput).configure(conf)
31
+ end
32
+
33
+ sub_test_case 'configuration' do
34
+ test 'instantiate the plugin and check default config values' do
35
+ d = create_driver
36
+ time = event_time
37
+
38
+ # check defaults
39
+ assert_equal 'https://logs.logdna.com', d.instance.ingester_domain
40
+ assert_equal 30, d.instance.request_timeout
41
+ end
42
+
43
+ test 'instantiate the plugin and check setting config values' do
44
+ conf = %[
45
+ api_key this-is-my-key
46
+ hostname "localhost"
47
+ app my_app
48
+ mac C0:FF:EE:C0:FF:EE
49
+ ip 127.0.0.1
50
+ tags "my-tag"
51
+ request_timeout 17s
52
+ ]
53
+
54
+ d = create_driver(conf)
55
+
56
+ # check set config values
57
+ assert_equal 'my-tag', d.instance.tags
58
+ assert_equal 17, d.instance.request_timeout
59
+ end
60
+
61
+ test 'instantiate the plugin with ms request_timeout value' do
62
+
63
+ conf = %[
64
+ api_key this-is-my-key
65
+ hostname "localhost"
66
+ app my_app
67
+ mac C0:FF:EE:C0:FF:EE
68
+ ip 127.0.0.1
69
+ tags "my-tag"
70
+ request_timeout 17000 ms
71
+ ]
72
+
73
+ d = create_driver(conf)
74
+
75
+ # check set config values
76
+ assert_equal 17, d.instance.request_timeout
77
+ end
78
+
79
+ test 'instantiate the plugin with nonesense request_timeout value' do
80
+
81
+ conf = %[
82
+ api_key this-is-my-key
83
+ hostname "localhost"
84
+ app my_app
85
+ mac C0:FF:EE:C0:FF:EE
86
+ ip 127.0.0.1
87
+ tags "my-tag"
88
+ request_timeout "asdf ms"
89
+ ]
90
+
91
+ d = create_driver(conf)
92
+
93
+ # check set config values
94
+ assert_equal 30, d.instance.request_timeout
95
+ end
96
+ end
97
+
98
+ test 'simple #write' do
99
+ d = create_driver
100
+ time = event_time
101
+
102
+ d.run do
103
+ d.feed("output.test", time, {'foo' => 'bar', 'message' => 'myLine'})
104
+ d.feed("output.test", time, {'foo' => 'bar', 'message' => 'myLine'})
105
+ end
106
+
107
+ assert_equal(2, d.formatted.size)
108
+ end
109
+
110
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-logdna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edwin Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-28 00:00:00.000000000 Z
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,8 @@ files:
80
80
  - Rakefile
81
81
  - fluent-plugin-logdna.gemspec
82
82
  - lib/fluent/plugin/out_logdna.rb
83
+ - test/helper.rb
84
+ - test/plugin/test_out_logdna.rb
83
85
  homepage: https://github.com/logdna/fluent-plugin-logdna
84
86
  licenses:
85
87
  - MIT