fluent-plugin-redisstore 0.0.3 → 0.0.4

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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ vendor/bundle
data/README.rdoc CHANGED
@@ -28,6 +28,14 @@ this sources folked 'fluent-plugin-redis'. (https://github.com/yuki24/fluent-plu
28
28
  order asc(asc|desc, zset/list, nil)
29
29
  </match>
30
30
 
31
+ # use hiredis for better performance
32
+ # this configuration requires "gem install hiredis"
33
+ <match pattern>
34
+ type redisstore
35
+ driver hiredis
36
+ ...
37
+ </match>
38
+
31
39
  == Copyright
32
40
 
33
41
  Copyright:: Copyright (c) 2013 moaikids
@@ -0,0 +1 @@
1
+ dummy.log
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'fluentd'
4
+ gem 'fluent-plugin-redisstore', :path => '../'
5
+ gem 'dummer'
@@ -0,0 +1,15 @@
1
+ = Benchmark
2
+
3
+ == worker
4
+
5
+ bundle exec fluentd -c default.conf
6
+ # or
7
+ bundle exec fluentd -c hiredis.conf
8
+
9
+ == dummer
10
+
11
+ bundle exec dummer -c dummer.conf
12
+
13
+ == monitor
14
+
15
+ bundle exec ruby monitor.rb
@@ -0,0 +1,21 @@
1
+ <source>
2
+ type tail
3
+ path dummy.log
4
+ pos_file /var/tmp/_var_log_dummy.pos
5
+ format none
6
+ tag dummy
7
+ </source>
8
+ <match dummy>
9
+ type redisstore
10
+ host 127.0.0.1
11
+ timeout 15.0
12
+ store_type zset
13
+ key_name method
14
+ key_suffix _suffix
15
+ score_name uri
16
+ value_name reqtime
17
+ key_expire 604800
18
+ value_expire 259200
19
+ value_length 10
20
+ flush_interval 0.1
21
+ </match>
@@ -0,0 +1,13 @@
1
+ configure 'sample' do
2
+ output "dummy.log"
3
+ rate 100000
4
+ delimiter "\t"
5
+ labeled true
6
+ field :id, type: :integer, countup: true, format: "%04d"
7
+ field :time, type: :datetime, format: "[%Y-%m-%d %H:%M:%S]", random: false
8
+ field :level, type: :string, any: %w[DEBUG INFO WARN ERROR]
9
+ field :method, type: :string, any: %w[GET POST PUT]
10
+ field :uri, type: :string, any: %w[/api/v1/people /api/v1/textdata /api/v1/messages]
11
+ field :reqtime, type: :float, range: 0.1..5.0
12
+ field :foobar, type: :string, length: 8
13
+ end
@@ -0,0 +1,22 @@
1
+ <source>
2
+ type tail
3
+ path dummy.log
4
+ pos_file /var/tmp/_var_log_dummy.pos
5
+ format none
6
+ tag dummy
7
+ </source>
8
+ <match dummy>
9
+ type redisstore
10
+ driver hiredis
11
+ host 127.0.0.1
12
+ timeout 15.0
13
+ store_type zset
14
+ key_name method
15
+ key_suffix _suffix
16
+ score_name uri
17
+ value_name reqtime
18
+ key_expire 604800
19
+ value_expire 259200
20
+ value_length 10
21
+ flush_interval 0.1
22
+ </match>
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'terminal-table'
5
+ require 'pp'
6
+ require 'redis'
7
+ require 'hiredis'
8
+
9
+ class RedisInfo
10
+ def initialize(host,port)
11
+ @redis = Redis.new(:host => host, :port => port, driver: :hiredis)
12
+ end
13
+ def get_total_commands_processed
14
+ @redis.info["total_commands_processed"].to_i
15
+ end
16
+ end
17
+
18
+ chk = RedisInfo.new("127.0.0.1","6379")
19
+ previous = 0
20
+
21
+ res = []
22
+ (1..30).each do |i|
23
+ current = chk.get_total_commands_processed
24
+ res << current - previous
25
+ previous = current
26
+ sleep 1
27
+ end
28
+
29
+ res.shift
30
+ puts "#{1.0 * res.inject(:+) / res.size} req/s"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-redisstore"
4
- gem.version = "0.0.3"
4
+ gem.version = "0.0.4"
5
5
  gem.authors = ["moaikids"]
6
6
  gem.licenses = ["Apache License Version 2.0"]
7
7
  gem.summary = %q{Redis(zset/set/list/string) output plugin for Fluentd}
@@ -12,6 +12,8 @@ module Fluent
12
12
  def configure(conf)
13
13
  super
14
14
 
15
+ @driver = conf.has_key?('driver') ? conf['driver'] : nil
16
+
15
17
  @host = conf.has_key?('host') ? conf['host'] : 'localhost'
16
18
  @port = conf.has_key?('port') ? conf['port'].to_i : 6379
17
19
  @db_number = conf.has_key?('db_number') ? conf['db_number'].to_i : nil
@@ -32,9 +34,26 @@ module Fluent
32
34
 
33
35
  def start
34
36
  super
37
+
38
+ opt = {
39
+ :host => @host,
40
+ :port => @port,
41
+ :db => @db_number,
42
+ :timeout => @timeout,
43
+ :thread_safe => true,
44
+ }
45
+
46
+ if @driver
47
+ opt[:driver] = @driver.to_sym
48
+ end
49
+
50
+ @redis = Redis.new(opt)
35
51
  end
36
52
 
37
53
  def shutdown
54
+ super
55
+
56
+ @redis.quit
38
57
  end
39
58
 
40
59
  def format(tag, time, record)
@@ -43,9 +62,6 @@ module Fluent
43
62
  end
44
63
 
45
64
  def write(chunk)
46
- @redis = Redis.new(:host => @host, :port => @port, :timeout => @timeout,
47
- :thread_safe => true, :db => @db_number)
48
-
49
65
  @redis.pipelined {
50
66
  chunk.open { |io|
51
67
  begin
@@ -70,8 +86,6 @@ module Fluent
70
86
  end
71
87
  }
72
88
  }
73
-
74
- @redis.quit
75
89
  end
76
90
 
77
91
  def operation_for_zset(record)
@@ -88,7 +102,7 @@ module Fluent
88
102
  end
89
103
  v = traverse(record, @value_name)
90
104
  sk = @key_prefix + k + @key_suffix
91
-
105
+
92
106
  @redis.zadd sk , s, v
93
107
  if @key_expire > 0
94
108
  @redis.expire sk , @key_expire
@@ -110,7 +124,7 @@ module Fluent
110
124
  end
111
125
  v = traverse(record, @value_name)
112
126
  sk = @key_prefix + k + @key_suffix
113
-
127
+
114
128
  @redis.sadd sk, v
115
129
  if @key_expire > 0
116
130
  @redis.expire sk, @key_expire
@@ -130,14 +144,14 @@ module Fluent
130
144
  @redis.rpush sk, v
131
145
  else
132
146
  @redis.lpush sk, v
133
- end
147
+ end
134
148
  if @key_expire > 0
135
149
  @redis.expire sk, @key_expire
136
150
  end
137
151
  if @value_length > 0
138
152
  script = generate_ltrim_script(sk, @value_length, @order)
139
153
  @redis.eval script
140
- end
154
+ end
141
155
  end
142
156
 
143
157
  def operation_for_string(record)
@@ -148,7 +162,7 @@ module Fluent
148
162
  end
149
163
  v = traverse(record, @value_name)
150
164
  sk = @key_prefix + k + @key_suffix
151
-
165
+
152
166
  @redis.set sk, v
153
167
  if @key_expire > 0
154
168
  @redis.expire sk, @key_expire
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-redisstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-20 00:00:00.000000000 Z
12
+ date: 2016-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -81,10 +81,18 @@ executables: []
81
81
  extensions: []
82
82
  extra_rdoc_files: []
83
83
  files:
84
+ - .gitignore
84
85
  - AUTHORS
85
86
  - Gemfile
86
87
  - README.rdoc
87
88
  - Rakefile
89
+ - benchmarking/.gitignore
90
+ - benchmarking/Gemfile
91
+ - benchmarking/README.rdoc
92
+ - benchmarking/default.conf
93
+ - benchmarking/dummer.conf
94
+ - benchmarking/hiredis.conf
95
+ - benchmarking/monitor.rb
88
96
  - fluent-plugin-redisstore.gemspec
89
97
  - lib/fluent/plugin/out_redisstore.rb
90
98
  homepage: https://github.com/moaikids/fluent-plugin-redisstore
@@ -102,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
110
  version: '0'
103
111
  segments:
104
112
  - 0
105
- hash: -1048563133641840096
113
+ hash: 2621668993962248223
106
114
  required_rubygems_version: !ruby/object:Gem::Requirement
107
115
  none: false
108
116
  requirements:
@@ -111,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
119
  version: '0'
112
120
  segments:
113
121
  - 0
114
- hash: -1048563133641840096
122
+ hash: 2621668993962248223
115
123
  requirements: []
116
124
  rubyforge_project:
117
125
  rubygems_version: 1.8.23