fluent-plugin-sidekiq_metric 0.1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7fb6a02f21d2b9f1a5438cba38f932792cd979ef
4
+ data.tar.gz: 678d2ba649553c195a160a107cf2ee5e9cfd8439
5
+ SHA512:
6
+ metadata.gz: 03f9aa88caee11f47c26ae3f247d781fc86127bfc454b674de586d02907d44912d14996cde4aa1945d8dfa290ac49a7361f04f8a14f25247a2b87144cbd28a66
7
+ data.tar.gz: 8624fabee2556224acd2450859026c7a4eb9426b89eb11313833459f610a68f331240cc7e535696a325e502235d6b61eceed98e0c757c46e8a56e1e7705e9d95
data/.dockerignore ADDED
@@ -0,0 +1,2 @@
1
+ .git
2
+ .bundle
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /gemfiles/.bundle
11
+ *.gemfile.lock
data/Dockerfile ADDED
@@ -0,0 +1,3 @@
1
+ FROM ruby:2.4-alpine3.6
2
+
3
+ RUN apk add --no-cache ca-certificates build-base
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 joker1007
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # fluent-plugin-sidekiq_metric
2
+
3
+ [Fluentd](http://fluentd.org/) input plugin to collect sidekiq metrics.
4
+
5
+ ## Output example
6
+
7
+ ```json
8
+ {
9
+ "processed": 12,
10
+ "failed": 1,
11
+ "scheduled_size": 3,
12
+ "retry_size": 1,
13
+ "dead_size": 0,
14
+ "processes_size":1,
15
+ "default_queue_latency": 0,
16
+ "workers_size": 1,
17
+ "enqueued": 0
18
+ }
19
+ ```
20
+
21
+ If queue_names is set, output becomes following.
22
+ ex: `queue_names queue1, queue2`
23
+
24
+ ```
25
+ {
26
+ "processed": 12,
27
+ "failed": 1,
28
+ "scheduled_size": 3,
29
+ "retry_size": 1,
30
+ "dead_size": 0,
31
+ "processes_size":1,
32
+ "default_queue_latency": 0,
33
+ "workers_size": 1,
34
+ "enqueued": 0,
35
+ "queue1_length": 1,
36
+ "queue2_length": 10
37
+ }
38
+ ```
39
+
40
+ ## Installation
41
+
42
+ ### RubyGems
43
+
44
+ ```
45
+ $ gem install fluent-plugin-sidekiq_metric
46
+ ```
47
+
48
+ ### Bundler
49
+
50
+ Add following line to your Gemfile:
51
+
52
+ ```ruby
53
+ gem "fluent-plugin-sidekiq_metric"
54
+ ```
55
+
56
+ And then execute:
57
+
58
+ ```
59
+ $ bundle
60
+ ```
61
+
62
+ ## Configuration
63
+
64
+ ### tag (string) (required)
65
+
66
+ Tag of the output events.
67
+
68
+ ### redis_url (string) (required)
69
+
70
+ redis URL that sidekiq uses
71
+
72
+ ### namespace (string) (optional)
73
+
74
+ config for redis-namespace
75
+
76
+ ### password (string) (optional)
77
+
78
+ Password for redis authentication
79
+
80
+ ### connect_opts (hash) (optional)
81
+
82
+ Other options for redis connection
83
+
84
+ Default value: `{}`.
85
+
86
+ ### fetch_interval (time) (optional)
87
+
88
+ Interval for fetching to redis
89
+
90
+ Default value: `60`.
91
+
92
+ ### queue_names (array) (optional)
93
+
94
+ Queue names for length aggregation per queue
95
+
96
+ Default value: `[]`.
97
+
98
+ You can copy and paste generated documents here.
99
+
100
+ ## Config Example
101
+
102
+ ```
103
+ <source>
104
+ @type sidekiq_metric
105
+ tag sidekiq
106
+ redis_url redis://redis:6379
107
+ fetch_interval 10s
108
+ queue_names default
109
+ </source>
110
+
111
+ <match sidekiq>
112
+ @type stdout
113
+ </match>
114
+ ```
115
+
116
+ ## Copyright
117
+
118
+ * Copyright(c) 2017- joker1007
119
+ * License
120
+ * MIT License
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs.push("lib", "test")
8
+ t.test_files = FileList["test/**/test_*.rb"]
9
+ t.verbose = true
10
+ t.warning = true
11
+ end
12
+
13
+ task default: [:test]
@@ -0,0 +1,48 @@
1
+ version: "2"
2
+ services:
3
+ redis:
4
+ image: redis:alpine
5
+
6
+ fluentd:
7
+ image: ruby:2.4-alpine3.6
8
+ volumes:
9
+ - .:/app
10
+ - bundle:/usr/local/bundle
11
+ working_dir: /app
12
+ environment:
13
+ REDIS_URL: "redis://redis:6379"
14
+ depends_on:
15
+ - redis
16
+ - sidekiq
17
+ command: ["sh", "./run_fluentd.sh"]
18
+
19
+ test:
20
+ image: ruby:2.4-alpine3.6
21
+ volumes:
22
+ - .:/app
23
+ - bundle:/usr/local/bundle
24
+ working_dir: /app
25
+ environment:
26
+ REDIS_URL: "redis://redis:6379"
27
+ depends_on:
28
+ - redis
29
+ - sidekiq
30
+ command: ["sh", "./run.sh"]
31
+
32
+ sidekiq:
33
+ build:
34
+ context: .
35
+ volumes:
36
+ - .:/app
37
+ - bundle:/usr/local/bundle
38
+ working_dir: /app
39
+ depends_on:
40
+ - redis
41
+ environment:
42
+ REDIS_URL: "redis://redis:6379"
43
+ command: ["sh", "./run_sidekiq.sh"]
44
+
45
+
46
+ volumes:
47
+ bundle:
48
+ driver: local
@@ -0,0 +1,38 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "fluent-plugin-sidekiq_metric"
6
+ spec.version = "0.1.1"
7
+ spec.authors = ["joker1007"]
8
+ spec.email = ["kakyoin.hierophant@gmail.com"]
9
+
10
+ spec.summary = %q{sidekiq metric collector plugin for fluentd.}
11
+ spec.description = %q{sidekiq metric collector plugin for fluentd.}
12
+ spec.homepage = "https://github.com/joker1007/fluent-plugin-sidekiq_metric"
13
+ spec.license = "MIT"
14
+
15
+ begin
16
+ test_files, files = `git ls-files -z`.split("\x0").partition do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ rescue
20
+ test_files, files = Dir.glob("**/*").partition do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
23
+ end
24
+
25
+ spec.files = files
26
+ spec.executables = files.grep(%r{^bin/}) { |f| File.basename(f) }
27
+ spec.test_files = test_files
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.14"
31
+ spec.add_development_dependency "rake", "~> 12.0"
32
+ spec.add_development_dependency "test-unit", "~> 3.0"
33
+ spec.add_development_dependency "sidekiq"
34
+
35
+ spec.add_runtime_dependency "fluentd", [">= 0.14.10", "< 2"]
36
+ spec.add_runtime_dependency "redis"
37
+ spec.add_runtime_dependency "oj"
38
+ end
@@ -0,0 +1,139 @@
1
+ require "fluent/plugin/input"
2
+ require "oj"
3
+ require "redis"
4
+
5
+ module Fluent
6
+ module Plugin
7
+ class SidekiqMetricInput < ::Fluent::Plugin::Input
8
+ Fluent::Plugin.register_input("sidekiq_metric", self)
9
+
10
+ helpers :timer
11
+
12
+ desc 'Tag of the output events.'
13
+ config_param :tag, :string
14
+
15
+ desc "redis URL that sidekiq uses"
16
+ config_param :redis_url, :string
17
+
18
+ desc "config for redis-namespace"
19
+ config_param :namespace, default: nil
20
+
21
+ desc "Password for redis authentication"
22
+ config_param :password, :string, secret: true, default: nil
23
+
24
+ desc "Other options for redis connection"
25
+ config_param :connect_opts, :hash, default: {}
26
+
27
+ desc "Interval for fetching to redis"
28
+ config_param :fetch_interval, :time, default: 60
29
+
30
+ desc "Queue names for length aggregation per queue"
31
+ config_param :queue_names, :array, default: []
32
+
33
+ def configure(conf)
34
+ super
35
+ @connect_opts = @connect_opts.map { |k, v| [k.to_sym, v] }.to_h
36
+ end
37
+
38
+ def start
39
+ super
40
+ @timer = timer_execute(:sidekiq_metric_timer, @fetch_interval, &method(:run))
41
+ end
42
+
43
+ def run
44
+ stats = fetch_stats
45
+ queue_lengths = fetch_queue_lengths
46
+ record = stats.merge(queue_lengths)
47
+ router.emit(@tag, Fluent::EventTime.now, record)
48
+ end
49
+
50
+ ## From sidekiq gem (lib/sidekiq/api.rb)
51
+ def fetch_stats
52
+ pipe1_res = redis.pipelined do
53
+ redis.get('stat:processed'.freeze)
54
+ redis.get('stat:failed'.freeze)
55
+ redis.zcard('schedule'.freeze)
56
+ redis.zcard('retry'.freeze)
57
+ redis.zcard('dead'.freeze)
58
+ redis.scard('processes'.freeze)
59
+ redis.lrange('queue:default'.freeze, -1, -1)
60
+ redis.smembers('processes'.freeze)
61
+ redis.smembers('queues'.freeze)
62
+ end
63
+
64
+ pipe2_res = redis.pipelined do
65
+ pipe1_res[7].each { |key| redis.hget(key, 'busy'.freeze) }
66
+ pipe1_res[8].each { |queue| redis.llen("queue:#{queue}") }
67
+ end
68
+
69
+ s = pipe1_res[7].size
70
+ workers_size = pipe2_res[0...s].map(&:to_i).inject(0, &:+)
71
+ enqueued = pipe2_res[s..-1].map(&:to_i).inject(0, &:+)
72
+
73
+ default_queue_latency =
74
+ if (entry = pipe1_res[6].first)
75
+ job = Oj.load(entry) rescue {}
76
+ now = Time.now.to_f
77
+ thence = job['enqueued_at'.freeze] || now
78
+ now - thence
79
+ else
80
+ 0
81
+ end
82
+
83
+ {
84
+ processed: pipe1_res[0].to_i,
85
+ failed: pipe1_res[1].to_i,
86
+ scheduled_size: pipe1_res[2],
87
+ retry_size: pipe1_res[3],
88
+ dead_size: pipe1_res[4],
89
+ processes_size: pipe1_res[5],
90
+
91
+ default_queue_latency: default_queue_latency,
92
+ workers_size: workers_size,
93
+ enqueued: enqueued
94
+ }
95
+ end
96
+
97
+ ## From sidekiq gem (lib/sidekiq/api.rb)
98
+ def fetch_queue_lengths
99
+ return {} if @queue_names.empty?
100
+
101
+ queues = redis.smembers('queues'.freeze) & @queue_names
102
+ return {} if queues.empty?
103
+
104
+ lengths = redis.pipelined do
105
+ queues.each do |queue|
106
+ redis.llen("queue:#{queue}")
107
+ end
108
+ end
109
+
110
+ i = 0
111
+ array_of_arrays = queues.inject({}) do |memo, queue|
112
+ memo["#{queue}_length"] = lengths[i]
113
+ i += 1
114
+ memo
115
+ end
116
+
117
+ Hash[array_of_arrays]
118
+ end
119
+
120
+ def redis
121
+ @redis ||=
122
+ if @namespace
123
+ client = Redis.new(url: @redis_url, **@connect_opts).tap do |cl|
124
+ cl.auth(@password) if @password
125
+ end
126
+ Redis::Namespace.new(@namespace, redis: client)
127
+ else
128
+ Redis.new(url: @redis_url, **@connect_opts).tap do |cl|
129
+ cl.auth(@password) if @password
130
+ end
131
+ end
132
+ end
133
+
134
+ def clear_redis
135
+ @redis = nil
136
+ end
137
+ end
138
+ end
139
+ end
data/run.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ bundle install
4
+ exec bundle exec rake
data/run_fluentd.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ bundle install
4
+ exec bundle exec fluentd -c ./test/fluentd.conf
data/run_sidekiq.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ bundle install
4
+ exec bundle exec sidekiq -r ./test/sidekiq_config.rb
data/test/fluentd.conf ADDED
@@ -0,0 +1,11 @@
1
+ <source>
2
+ @type sidekiq_metric
3
+ tag sidekiq
4
+ redis_url redis://redis:6379
5
+ fetch_interval 10s
6
+ queue_names default
7
+ </source>
8
+
9
+ <match sidekiq>
10
+ @type stdout
11
+ </match>
data/test/helper.rb ADDED
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../../", __FILE__))
2
+ require "test-unit"
3
+ require "fluent/test"
4
+ require "fluent/test/driver/input"
5
+ require "fluent/test/helpers"
6
+
7
+ Test::Unit::TestCase.include(Fluent::Test::Helpers)
8
+ Test::Unit::TestCase.extend(Fluent::Test::Helpers)
9
+
10
+ require "sidekiq"
11
+
12
+ Sidekiq.configure_client do |config|
13
+ config.redis = {url: ENV["REDIS_URL"]}
14
+ end
15
+
16
+ require_relative "./job"
data/test/job.rb ADDED
@@ -0,0 +1,7 @@
1
+ class Job
2
+ include Sidekiq::Worker
3
+
4
+ def perform
5
+ :done
6
+ end
7
+ end
@@ -0,0 +1,70 @@
1
+ require "helper"
2
+ require "fluent/plugin/in_sidekiq_metric.rb"
3
+
4
+ class Sidekiq_metricInputTest < Test::Unit::TestCase
5
+ setup do
6
+ Fluent::Test.setup
7
+ end
8
+
9
+ DEFAULT_CONF = %q{
10
+ tag test
11
+ redis_url redis://redis:6379
12
+ fetch_interval 3s
13
+ queue_names default
14
+ }
15
+
16
+ test "configure" do
17
+ driver = create_driver(<<~CONF)
18
+ tag test
19
+ redis_url redis://redis:6379
20
+ connect_opts {"foo": "bar", "hoge": "fuga"}
21
+ queue_names queue1, queue2
22
+ CONF
23
+ assert { driver.instance.tag == "test" }
24
+ assert { driver.instance.redis_url == "redis://redis:6379" }
25
+ assert { driver.instance.connect_opts == {foo: "bar", hoge: "fuga"} }
26
+ assert { driver.instance.queue_names == ["queue1", "queue2"] }
27
+ end
28
+
29
+ test "redis" do
30
+ driver = create_driver
31
+ assert { driver.instance.redis.ping == "PONG" }
32
+ end
33
+
34
+ test "fetch_stats" do
35
+ driver = create_driver
36
+ Job.perform_async
37
+ sleep 5
38
+ stats = driver.instance.fetch_stats
39
+ assert_operator(stats[:processed], ">", 0)
40
+ keys = [:processed, :failed, :scheduled_size, :retry_size, :dead_size, :processes_size, :default_queue_latency, :workers_size, :enqueued]
41
+ keys.each do |k|
42
+ assert_kind_of(Integer, stats[k])
43
+ end
44
+ end
45
+
46
+ test "fetch_queue_lengths" do
47
+ driver = create_driver
48
+ queue_lengths = driver.instance.fetch_queue_lengths
49
+ assert_kind_of(Integer, queue_lengths["default_length"])
50
+ end
51
+
52
+ test "emit" do
53
+ driver = create_driver
54
+ driver.run(expect_emits: 2, timeout: 10)
55
+ assert { driver.events.length > 0 }
56
+ driver.events.each do |ev|
57
+ assert_equal("test", ev[0])
58
+ keys = [:processed, :failed, :scheduled_size, :retry_size, :dead_size, :processes_size, :default_queue_latency, :workers_size, :enqueued]
59
+ keys.each do |k|
60
+ assert_kind_of(Integer, ev[2][k])
61
+ end
62
+ end
63
+ end
64
+
65
+ private
66
+
67
+ def create_driver(conf = DEFAULT_CONF)
68
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::SidekiqMetricInput).configure(conf)
69
+ end
70
+ end
@@ -0,0 +1,9 @@
1
+ Sidekiq.configure_server do |config|
2
+ config.redis = {url: ENV["REDIS_URL"]}
3
+ end
4
+
5
+ Sidekiq.configure_client do |config|
6
+ config.redis = {url: ENV["REDIS_URL"]}
7
+ end
8
+
9
+ require_relative "./job"
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-sidekiq_metric
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - joker1007
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sidekiq
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fluentd
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.14.10
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '2'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.14.10
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '2'
89
+ - !ruby/object:Gem::Dependency
90
+ name: redis
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: oj
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ description: sidekiq metric collector plugin for fluentd.
118
+ email:
119
+ - kakyoin.hierophant@gmail.com
120
+ executables: []
121
+ extensions: []
122
+ extra_rdoc_files: []
123
+ files:
124
+ - ".dockerignore"
125
+ - ".gitignore"
126
+ - Dockerfile
127
+ - Gemfile
128
+ - LICENSE
129
+ - README.md
130
+ - Rakefile
131
+ - docker-compose.yml
132
+ - fluent-plugin-sidekiq_metric.gemspec
133
+ - lib/fluent/plugin/in_sidekiq_metric.rb
134
+ - run.sh
135
+ - run_fluentd.sh
136
+ - run_sidekiq.sh
137
+ - test/fluentd.conf
138
+ - test/helper.rb
139
+ - test/job.rb
140
+ - test/plugin/test_in_sidekiq_metric.rb
141
+ - test/sidekiq_config.rb
142
+ homepage: https://github.com/joker1007/fluent-plugin-sidekiq_metric
143
+ licenses:
144
+ - MIT
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 2.6.13
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: sidekiq metric collector plugin for fluentd.
166
+ test_files:
167
+ - test/fluentd.conf
168
+ - test/helper.rb
169
+ - test/job.rb
170
+ - test/plugin/test_in_sidekiq_metric.rb
171
+ - test/sidekiq_config.rb