fluent-plugin-riak2 0.0.4 → 0.0.5

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: 03e66f7515f40f6b25b945a90dd5e8fd0e3e2bf6
4
- data.tar.gz: 3c32370f5c55cd950c8c439e8919f8fffed7e98d
3
+ metadata.gz: ad3f880d225f6869f8b4086695341e479f7535ed
4
+ data.tar.gz: a3b7636d8e86ce1afffb5aa91947c5e242b8ed3f
5
5
  SHA512:
6
- metadata.gz: d050d1bf3fe03dfc50ba78cffce9df5862d5190de55e6f5727274a485d6d880ab948b791e1363101d8b828322ed07bd3707ef52aa9296890c00fc2bd4f3c43b8
7
- data.tar.gz: e33348d42363c08598e4450c32201284351e526458cd817a0b0828ff33c73777e385c1d918c6961a0cddeade29c05a2c5be5f8a100d29e8fc2f04ace964e1f35
6
+ metadata.gz: fed5a2cbbd620bc2b682ac5de6b91267c8ea09a9829c0ed08c3af7d34a42c4a8147afc74e77533acfe7c6601fc74b87612cf4170a945806c9ff592da7bd16604
7
+ data.tar.gz: 1af9e4bbc5f851f53730106c962e52d676cc821ef975e02f87dc57ad20e77b2817dcb15652e35a70fc2e142b450dde7b9db380080fe3e12b320861dcdedd8654
@@ -0,0 +1,13 @@
1
+ 0.0.5
2
+ =====
3
+
4
+ - update to support riak 2.0 bucket types
5
+ - update record to support riak search 2.0 (yokozuna) style json extraction
6
+ - write to a metadata crdt map bucket names
7
+
8
+ 0.0.4
9
+ =====
10
+
11
+ - hard fork from https://github.com/kuenishi/fluent-plugin-riak , see README for more info
12
+ - bare minimum to support riak-ruby-client v2.1
13
+ - change UUID to v1 (timestamp based)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency "fluentd", "~> 0.10"
21
21
  gem.add_dependency "riak-client", "~> 2.1.0"
22
- gem.add_dependency "uuidtools", ">= 2.1.3"
22
+ gem.add_dependency "uuidtools", "~> 2.1.3"
23
23
  gem.add_development_dependency "rake", ">= 0.9.2"
24
24
  gem.add_development_dependency "simplecov", ">= 0.5.4"
25
25
  gem.add_development_dependency "rr", ">= 1.0.0"
@@ -8,7 +8,9 @@ class Riak2Output < BufferedOutput
8
8
  include SetTagKeyMixin
9
9
  config_set_default :include_time_key, true
10
10
 
11
+ config_param :bucket_type, :string, :default => "fluentlog" # we assume that search is on and this bucket type has an search index attached to it.
11
12
  config_param :bucket_name, :string, :default => "fluentlog"
13
+ config_param :riak2_metadata_bucket_type, :string, :default => ""
12
14
  config_param :nodes, :string, :default => "localhost:8087"
13
15
 
14
16
  def initialize
@@ -30,10 +32,31 @@ class Riak2Output < BufferedOutput
30
32
 
31
33
  def start
32
34
  $log.debug " => #{@buffer.chunk_limit} #{@buffer.queue_limit} "
33
- @conn = Riak::Client.new(:nodes => @nodes)
34
- @bucket = @conn.bucket(@bucket_name)
35
+ @client = Riak::Client.new(:nodes => @nodes)
36
+ @bucket = @client.bucket(@bucket_name)
35
37
  @buf = {}
36
38
 
39
+ # $log.debug "riak2_metadata_bucket_type => #{@riak2_metadata_bucket_type}"
40
+ # $log.debug "bucket_type => #{@bucket_type}"
41
+
42
+ if not @riak2_metadata_bucket_type.empty? then
43
+ # Here we are storing our bucket type and bucket name in a metadata map. This allows clients to query that map to see a list of all fluentd buckets.
44
+
45
+ # bucket_type/name/key is returns a metadata map
46
+ metadata_bucket_type = @riak2_metadata_bucket_type # config defined bucket type
47
+ metadata_bucket_name = "fluent-plugin-riak2-metadata" # bucket name
48
+ metadata_key = "fluent-plugin-riak2-metadata-key" # root level key for our metadata map
49
+
50
+ # our metadata map has a kv where:
51
+ # 1. key is set_of_logfile_buckets_key
52
+ # 2. value is a set of strings. each string represents the bucket type and name for a single logfile
53
+ set_of_logfile_buckets_key = "all_buckets" # inner key for our set of all logfile bucket type/name
54
+
55
+ mdbucket = @client.bucket(metadata_bucket_name)
56
+ Riak::Crdt::DEFAULT_BUCKET_TYPES[:map] = metadata_bucket_type
57
+ map = Riak::Crdt::Map.new(mdbucket, metadata_key)
58
+ map.sets[set_of_logfile_buckets_key].add "#{@bucket_type} #{@bucket_name}"
59
+ end
37
60
  super
38
61
  end
39
62
 
@@ -43,38 +66,38 @@ class Riak2Output < BufferedOutput
43
66
 
44
67
  def write(chunk)
45
68
  $log.debug " <<<<<===========\n"
46
-
47
69
  records = []
48
- tags = []
49
70
  chunk.msgpack_each { |time, tag, record|
50
71
  record[@tag_key] = tag
51
- tags << tag
52
72
  records << record
53
73
  $log.debug record
54
74
  }
55
- put_now(records, tags)
75
+ put_now(records)
56
76
  end
57
77
 
58
78
  private
59
79
 
60
- # TODO: add index for some analysis
61
- def put_now(records, tags)
80
+ def put_now(records)
62
81
  if not records.empty? then
63
- today = Date.today
64
- key = "#{today.to_s}-#{UUIDTools::UUID.timestamp_create.to_s}"
65
- robj = Riak::RObject.new(@bucket, key)
66
- robj.raw_data = records.to_json
67
- robj.indexes['year_int'] << today.year
68
- robj.indexes['month_bin'] << "#{today.year}-#{"%02d" % today.month}"
69
- tags.each do |tag|
70
- robj.indexes['tag_bin'] << tag
71
- end
72
- robj.content_type = 'application/json'
73
- robj.store
74
- robj
75
- end
76
- end
82
+ threads = []
83
+ records.each { |record|
84
+ #if you put log statements here, you must take care to NOT forward fluentd's logs to riak. you will trigger a recursive avalance of riak storage activity.
85
+ now = DateTime.now.iso8601(9)
86
+ key = "#{now}-#{UUIDTools::UUID.timestamp_create.to_s}"
87
+ # $log.debug "#{@bucket_name} #{key} \n"
77
88
 
78
- end
89
+ # we are doing the somewhat granular storage, instead of chunked, at the record level. This probably should be a config option.
90
+ threads << Thread.new {
91
+ robj = Riak::RObject.new(@bucket, key)
92
+ robj.content_type = "application/json"
93
+ raw_data = "{\"msg_s\":\"#{record["msg"]}\",\"time_dt\":\"#{record["time"]}\",\"src_s\":\"fluentd\"}"
94
+ # $log.debug "raw_data #{raw_data}\n"
95
+ robj.raw_data = raw_data
96
+ robj.store(type: @bucket_type)
97
+ }
98
+ }
99
+ end # if
100
+ end # put_now
101
+ end # class Riak2Output
79
102
 
80
- end
103
+ end # Module
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-riak2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kota UENISHI
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-01 00:00:00.000000000 Z
12
+ date: 2014-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -43,14 +43,14 @@ dependencies:
43
43
  name: uuidtools
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ~>
47
47
  - !ruby/object:Gem::Version
48
48
  version: 2.1.3
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  version: 2.1.3
56
56
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,7 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - .gitignore
105
+ - CHANGELOG
105
106
  - Gemfile
106
107
  - LICENSE
107
108
  - README.md