fluent-plugin-azure-loganalytics 0.2.0 → 0.3.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: 627b14acba519f0bf4383e8a3aa76f33132ce407
4
- data.tar.gz: c0f41426523c8418ec5a568d9fd0ed8b1140db64
3
+ metadata.gz: 57ab3bae479504ce91c4deee0c6bad550af7fd26
4
+ data.tar.gz: 3fd0fc1df4b7f30ccbc0a6e5cfc682faba7a2861
5
5
  SHA512:
6
- metadata.gz: 4ba33693b4b0e870846b49dae5f995ea6392c6613d226919317a8e3de7e3a99f817a6de68d1c829a4443210f39cdbf49cc63928fd0ae13850b7af83b1ecf03bf
7
- data.tar.gz: f27155187992ec1f4894bbe1ee4e67c9b811d7e5b3451fae6f979df0e3b69e21aca189ad1e2ae17b8001f7fe3379a7db23dc2f93847ce99b93ff37a092ee2e07
6
+ metadata.gz: 68477c13d879c7a932a6d8199472148ea17201b9b7f73c19d3adaa7a88612811d62c03fa41acf8bdd2ac63b36f19b019ee064105215705a9c35c6f9f21ac3f17
7
+ data.tar.gz: '0319e82f2f7ede315c91a6d863d06fe4d9548d119541e08e2bb0c47bf7d8709cfebd74b3c943f638e8a45765e53b935d0becd54cf5755432a920be7b2132bc31'
data/ChangeLog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.3.0
2
+
3
+ * Migrate to use fluentd v0.14 API - [PR#1](https://github.com/yokawasa/fluent-plugin-azure-loganalytics/pull/1)
4
+
1
5
  ## 0.2.0
2
6
  * Support for time-generated-field in output configuration
3
7
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -18,11 +18,10 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|gem|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
21
+ gem.add_dependency "fluentd", [">= 0.14.15", "< 2"]
22
22
  gem.add_dependency "rest-client"
23
23
  gem.add_dependency "azure-loganalytics-datacollector-api", [">= 0.1.2"]
24
24
  gem.add_development_dependency "bundler", "~> 1.11"
25
25
  gem.add_development_dependency "rake", "~> 10.0"
26
26
  gem.add_development_dependency "test-unit"
27
27
  end
28
-
@@ -1,15 +1,16 @@
1
1
  # -*- coding: utf-8 -*-
2
+ require 'msgpack'
3
+ require 'time'
4
+ require "azure/loganalytics/datacollectorapi/client"
5
+ require 'fluent/plugin/output'
2
6
 
3
- module Fluent
4
- class AzureLogAnalyticsOutput < BufferedOutput
5
- Plugin.register_output('azure-loganalytics', self)
7
+ module Fluent::Plugin
8
+ class AzureLogAnalyticsOutput < Output
9
+ Fluent::Plugin.register_output('azure-loganalytics', self)
6
10
 
7
- def initialize
8
- super
9
- require 'msgpack'
10
- require 'time'
11
- require "azure/loganalytics/datacollectorapi/client"
12
- end
11
+ helpers :compat_parameters
12
+
13
+ DEFAULT_BUFFER_TYPE = "memory"
13
14
 
14
15
  config_param :customer_id, :string,
15
16
  :desc => "Your Operations Management Suite workspace ID"
@@ -32,18 +33,24 @@ module Fluent
32
33
  config_param :tag_field_name, :string, :default => "tag",
33
34
  :desc => "This is required only when add_time_field is true"
34
35
 
36
+ config_section :buffer do
37
+ config_set_default :@type, DEFAULT_BUFFER_TYPE
38
+ config_set_default :chunk_keys, ['tag']
39
+ end
40
+
35
41
  def configure(conf)
42
+ compat_parameters_convert(conf, :buffer)
36
43
  super
37
- raise ConfigError, 'no customer_id' if @customer_id.empty?
38
- raise ConfigError, 'no shared_key' if @shared_key.empty?
39
- raise ConfigError, 'no log_type' if @log_type.empty?
44
+ raise Fluent::ConfigError, 'no customer_id' if @customer_id.empty?
45
+ raise Fluent::ConfigError, 'no shared_key' if @shared_key.empty?
46
+ raise Fluent::ConfigError, 'no log_type' if @log_type.empty?
40
47
  if @add_time_field and @time_field_name.empty?
41
- raise ConfigError, 'time_field_name must be set if add_time_field is true'
48
+ raise Fluent::ConfigError, 'time_field_name must be set if add_time_field is true'
42
49
  end
43
50
  if @add_tag_field and @tag_field_name.empty?
44
- raise ConfigError, 'tag_field_name must be set if add_tag_field is true'
51
+ raise Fluent::ConfigError, 'tag_field_name must be set if add_tag_field is true'
45
52
  end
46
- @timef = TimeFormatter.new(@time_format, @localtime)
53
+ @timef = Fluent::TimeFormatter.new(@time_format, @localtime)
47
54
  end
48
55
 
49
56
  def start
@@ -67,6 +74,14 @@ module Fluent
67
74
  record.to_msgpack
68
75
  end
69
76
 
77
+ def formatted_to_msgpack_binary?
78
+ true
79
+ end
80
+
81
+ def multi_workers_ready?
82
+ true
83
+ end
84
+
70
85
  def write(chunk)
71
86
  records = []
72
87
  chunk.msgpack_each { |record|
@@ -75,11 +90,11 @@ module Fluent
75
90
  begin
76
91
  res = @client.post_data(@log_type, records, @time_generated_field)
77
92
  if not Azure::Loganalytics::Datacollectorapi::Client.is_success(res)
78
- $log.fatal "DataCollector API request failure: error code: "
93
+ log.fatal "DataCollector API request failure: error code: "
79
94
  + "#{res.code}, data=>" + records.to_json
80
95
  end
81
96
  rescue Exception => ex
82
- $log.fatal "Exception occured in posting to DataCollector API: "
97
+ log.fatal "Exception occured in posting to DataCollector API: "
83
98
  + "'#{ex}', data=>" + records.to_json
84
99
  end
85
100
  end
data/test/helper.rb CHANGED
@@ -23,7 +23,10 @@ unless ENV.has_key?('VERBOSE')
23
23
  $log = nulllogger
24
24
  end
25
25
 
26
+ require 'fluent/test/driver/output'
27
+ require 'fluent/test/helpers'
26
28
  require 'fluent/plugin/out_azure-loganalytics'
27
29
 
28
30
  class Test::Unit::TestCase
31
+ include Fluent::Test::Helpers
29
32
  end
@@ -16,68 +16,77 @@ class AzureLogAnalyticsOutputTest < Test::Unit::TestCase
16
16
  tag_field_name tag
17
17
  ]
18
18
 
19
- def create_driver(conf = CONFIG, tag='azure-loganalytics.test')
20
- Fluent::Test::BufferedOutputTestDriver.new(Fluent::AzureLogAnalyticsOutput, tag).configure(conf)
19
+ def create_driver(conf = CONFIG)
20
+ Fluent::Test::Driver::Output.new(Fluent::Plugin::AzureLogAnalyticsOutput).configure(conf)
21
21
  end
22
22
 
23
23
  def test_configure
24
- #### set configurations
25
- # d = create_driver %[
26
- # path test_path
27
- # compress gz
28
- # ]
29
- #### check configurations
30
- # assert_equal 'test_path', d.instance.path
31
- # assert_equal :gz, d.instance.compress
24
+ d = create_driver
25
+ assert_equal '<Customer ID aka WorkspaceID String>', d.instance.customer_id
26
+ assert_equal '<Primary Key String>', d.instance.shared_key
27
+ assert_equal 'ApacheAccessLog', d.instance.log_type
28
+ assert_true d.instance.add_time_field
29
+ assert_true d.instance.localtime
30
+ assert_true d.instance.add_tag_field
31
+ assert_equal 'tag', d.instance.tag_field_name
32
32
  end
33
33
 
34
34
  def test_format
35
- # d = create_driver
36
- # time = Time.parse("2011-01-02 13:14:15 UTC").to_i
37
- # d.emit({"a"=>1}, time)
38
- # d.emit({"a"=>2}, time)
39
-
40
- # d.expect_format %[2011-01-02T13:14:15Z\ttest\t{"a":1}\n]
41
- # d.expect_format %[2011-01-02T13:14:15Z\ttest\t{"a":2}\n]
42
-
43
- # d.run
35
+ d = create_driver
36
+ time = event_time("2011-01-02 13:14:15 UTC")
37
+ d.run(default_tag: 'test') do
38
+ d.feed(time, {"a"=>1})
39
+ d.feed(time, {"a"=>2})
40
+ end
41
+ formatted = d.formatted
42
+ unpacker = Fluent::Engine.msgpack_factory.unpacker
43
+ formatted.each_with_index {|f, idx|
44
+ unpacker.feed_each(f).each {|e|
45
+ assert_equal idx+1, e["a"]
46
+ assert_equal "test", e["tag"]
47
+ assert_equal "#{time.to_i}", e["time"]
48
+ }
49
+ }
44
50
  end
45
51
 
46
52
  def test_write
47
53
  d = create_driver
48
54
 
49
- time = Time.parse("2016-12-10 13:14:15 UTC").to_i
50
- d.emit(
51
- {
52
- :Log_ID => "5cdad72f-c848-4df0-8aaa-ffe033e75d57",
53
- :date => "2016-12-10 09:44:32 JST",
54
- :processing_time => "372",
55
- :remote => "101.202.74.59",
56
- :user => "-",
57
- :method => "GET / HTTP/1.1",
58
- :status => "304",
59
- :size => "-",
60
- :referer => "-",
61
- :agent => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:27.0) Gecko/20100101 Firefox/27.0",
62
- :eventtime => "2016-12-10T09:44:32Z"
63
- }, time)
64
-
65
- d.emit(
66
- {
67
- :Log_ID => "7260iswx-8034-4cc3-uirtx-f068dd4cd659",
68
- :date => "2016-12-10 09:45:14 JST",
69
- :processing_time => "105",
70
- :remote => "201.78.74.59",
71
- :user => "-",
72
- :method => "GET /manager/html HTTP/1.1",
73
- :status =>"200",
74
- :size => "-",
75
- :referer => "-",
76
- :agent => "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
77
- :eventtime => "2016-12-10T09:45:14Z"
78
- }, time)
55
+ time = event_time("2016-12-10 13:14:15 UTC")
56
+ d.run(default_tag: 'azure-loganalytics.test') do
57
+ d.feed(
58
+ time,
59
+ {
60
+ :Log_ID => "5cdad72f-c848-4df0-8aaa-ffe033e75d57",
61
+ :date => "2016-12-10 09:44:32 JST",
62
+ :processing_time => "372",
63
+ :remote => "101.202.74.59",
64
+ :user => "-",
65
+ :method => "GET / HTTP/1.1",
66
+ :status => "304",
67
+ :size => "-",
68
+ :referer => "-",
69
+ :agent => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:27.0) Gecko/20100101 Firefox/27.0",
70
+ :eventtime => "2016-12-10T09:44:32Z"
71
+ })
79
72
 
80
- data = d.run
73
+ d.feed(
74
+ time,
75
+ {
76
+ :Log_ID => "7260iswx-8034-4cc3-uirtx-f068dd4cd659",
77
+ :date => "2016-12-10 09:45:14 JST",
78
+ :processing_time => "105",
79
+ :remote => "201.78.74.59",
80
+ :user => "-",
81
+ :method => "GET /manager/html HTTP/1.1",
82
+ :status =>"200",
83
+ :size => "-",
84
+ :referer => "-",
85
+ :agent => "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
86
+ :eventtime => "2016-12-10T09:45:14Z"
87
+ })
88
+ end
89
+ data = d.events
81
90
  puts data
82
91
  # ### FileOutput#write returns path
83
92
  # path = d.run
@@ -85,4 +94,3 @@ class AzureLogAnalyticsOutputTest < Test::Unit::TestCase
85
94
  # assert_equal expect_path, path
86
95
  end
87
96
  end
88
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-azure-loganalytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoichi Kawasaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-22 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.58
19
+ version: 0.14.15
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.10.58
29
+ version: 0.14.15
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2'
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  requirements: []
143
143
  rubyforge_project:
144
- rubygems_version: 2.6.2
144
+ rubygems_version: 2.5.2
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: Azure Functions output plugin for Fluentd