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 +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
|