fluent-plugin-azure-loganalytics 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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