fluent-plugin-redisstore 0.0.3 → 0.0.4

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