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 +18 -0
- data/README.rdoc +8 -0
- data/benchmarking/.gitignore +1 -0
- data/benchmarking/Gemfile +5 -0
- data/benchmarking/README.rdoc +15 -0
- data/benchmarking/default.conf +21 -0
- data/benchmarking/dummer.conf +13 -0
- data/benchmarking/hiredis.conf +22 -0
- data/benchmarking/monitor.rb +30 -0
- data/fluent-plugin-redisstore.gemspec +1 -1
- data/lib/fluent/plugin/out_redisstore.rb +24 -10
- metadata +12 -4
data/.gitignore
ADDED
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,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.
|
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.
|
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:
|
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:
|
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:
|
122
|
+
hash: 2621668993962248223
|
115
123
|
requirements: []
|
116
124
|
rubyforge_project:
|
117
125
|
rubygems_version: 1.8.23
|