sidekiq-datadog-monitor 0.0.0 → 0.0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f45794395b62656e91167f2a556b145732800b08bc3a0b244145000a9dad33ea
4
- data.tar.gz: a974754085c6e22572e8a8121996487fb5480e3beb550797a64c4e19a2f29486
3
+ metadata.gz: 7465b128d6d438118a8d64e3ce288f35c128e7442f1e0fc7e58f20960c6dc6a1
4
+ data.tar.gz: 79b460c74b8e795eb66dceefeb43ab1f7a902599ba089bd09438f2e1cba780bd
5
5
  SHA512:
6
- metadata.gz: 83f1261fc742416237eca7175e268b7fb8ccdd30b1a7838ae7d7b0701446a8fad4c780e19366b7755ed6d38249dbde064c6303180ae7e7913fa1073b0ec57ad2
7
- data.tar.gz: 23ebf0bf41c49d6ce143e340f6376a75b016d35b64ba36aebe53095986dad969dea0c7ce9790c70bcb39151cfc5bdba87c6554aac681f9e56d13fe9d121a2e89
6
+ metadata.gz: 1ab63b86d1abba345dd6ebc265d833e439ab3b8920982a8309c5a6f358088d21c57ccdffceda70f1443b61f03d9783b8412064f548e9d4df56ee11fbd62d46a0
7
+ data.tar.gz: 3fde4c5e786a6732691ab65a192098b4db5327fd803be0716e5e9aa8c1afa7915a8bdd7695827d5d1b3708eb83c8eef106eb90747cabbe26d727b0f8c91027e8
data/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  # Sidekiq::Datadog::Monitor
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/sidekiq/datadog/monitor`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Library that gather sidekiq jobs metrics (currently, only size and latency)
4
+ and send it to datadog
6
5
 
7
6
  ## Installation
8
7
 
9
8
  Add this line to your application's Gemfile:
10
9
 
11
10
  ```ruby
12
- gem 'sidekiq-datadog-monitor'
11
+ gem 'sidekiq-datadog-monitor', '0.0.1'
13
12
  ```
14
13
 
15
14
  And then execute:
@@ -22,7 +21,31 @@ Or install it yourself as:
22
21
 
23
22
  ## Usage
24
23
 
25
- TODO: Write usage instructions here
24
+ To start sending metrics
25
+
26
+ ```ruby
27
+ # Import the library
28
+ require 'sidekiq/datadog/monitor/data'
29
+
30
+ # Initiate a Sidekiq::Datadog::Monitor client instance.
31
+ Sidekiq::Datadog::Monitor::Data.initialize!(
32
+ {agent_host: 'localhost',
33
+ agent_port: 8125,
34
+ env: 'production', # optional
35
+ tag: 'tag', # optional
36
+ queue: 'queue name', # optional
37
+ cron: "*/30 * * * *" # default: "*/1 * * * *"
38
+ }
39
+ )
40
+
41
+ ```
42
+ `agent_host` and `agent_port` instantiate DogStatsD client
43
+
44
+ `env`, `tag`, `queue` settings for background job that will gather and send Sidekiq metrics
45
+
46
+ `cron` - schedule settings for background job that will gather and send Sidekiq metrics
47
+
48
+
26
49
 
27
50
  ## Development
28
51
 
@@ -0,0 +1,13 @@
1
+ module Sidekiq
2
+ module Datadog
3
+ class Config
4
+ class << self
5
+ def reload_schedule
6
+ Sidekiq.configure_server do |config|
7
+ Sidekiq::Scheduler.dynamic = true
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -2,7 +2,7 @@ require "sidekiq/datadog/monitor/version"
2
2
 
3
3
  module Sidekiq
4
4
  module Datadog
5
- module Monitor
5
+ module Monitor
6
6
  class Error < StandardError; end
7
7
  end
8
8
  end
@@ -1,5 +1,9 @@
1
- require 'datadog/statsd'
1
+ require "sidekiq/datadog/monitor"
2
+ require "sidekiq/datadog/config"
2
3
  require 'sidekiq/datadog/monitor/metrics_worker'
4
+ require 'sidekiq-scheduler'
5
+ require 'sidekiq/api'
6
+
3
7
  module Sidekiq
4
8
  module Datadog
5
9
  module Monitor
@@ -8,16 +12,22 @@ module Sidekiq
8
12
  attr_reader :agent_port, :agent_host, :tag, :env, :queue, :cron
9
13
 
10
14
  def initialize!(options)
11
- @agent_port = options[:agent_port]
12
- @agent_host = options[:agent_host]
15
+ @agent_port, @agent_host = options.fetch_values(:agent_port, :agent_host)
13
16
  @tag = options[:tag] || ''
14
17
  @env = options[:env] || ''
15
18
  @queue = options[:queue] || ''
16
19
  @cron = options[:cron] || "*/1 * * * *"
17
20
 
21
+ Sidekiq::Datadog::Config.reload_schedule
22
+
18
23
  start
24
+
25
+ rescue StandardError => e
26
+ raise Sidekiq::Datadog::Monitor::Error.new(e.message)
19
27
  end
20
28
 
29
+ private
30
+
21
31
  def start
22
32
  Sidekiq.set_schedule('send_metrics',
23
33
  { "cron"=> cron, 'class' => 'Sidekiq::Datadog::Monitor::MetricsWorker', 'queue' => queue })
@@ -1,5 +1,5 @@
1
+ require "sidekiq/datadog/monitor/data"
1
2
  require 'datadog/statsd'
2
- require 'sidekiq'
3
3
 
4
4
  module Sidekiq
5
5
  module Datadog
@@ -23,13 +23,13 @@ module Sidekiq
23
23
 
24
24
  def post_queue_size(queue_name, size)
25
25
  statsd.gauge('sidekiq.queue.size', size,
26
- tags: ["queue_name:#{queue_name}", "environment:#{Data.env}", Data.tag])
26
+ tags: ["queue_name:#{queue_name}", "env:#{Data.env}", Data.tag])
27
27
  end
28
28
 
29
29
  def post_queue_latency(queue_name)
30
30
  latency = Sidekiq::Queue.new(queue_name).latency
31
31
  statsd.gauge('sidekiq.queue.latency', latency,
32
- tags: ["queue_name:#{queue_name}", "environment:#{Data.env}", Data.tag])
32
+ tags: ["queue_name:#{queue_name}", "env:#{Data.env}", Data.tag])
33
33
  end
34
34
  end
35
35
  end
@@ -1,7 +1,7 @@
1
1
  module Sidekiq
2
2
  module Datadog
3
3
  module Monitor
4
- VERSION = "0.0.0"
4
+ VERSION = "0.0.0.5"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-datadog-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - aleksa_castle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-19 00:00:00.000000000 Z
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,9 +56,6 @@ dependencies:
56
56
  name: sidekiq
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.2'
62
59
  - - ">="
63
60
  - !ruby/object:Gem::Version
64
61
  version: 2.2.1
@@ -66,19 +63,27 @@ dependencies:
66
63
  prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '2.2'
72
66
  - - ">="
73
67
  - !ruby/object:Gem::Version
74
68
  version: 2.2.1
75
69
  - !ruby/object:Gem::Dependency
76
- name: dogstatsd-ruby
70
+ name: sidekiq-scheduler
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
73
  - - "~>"
80
74
  - !ruby/object:Gem::Version
81
- version: '4.8'
75
+ version: 3.0.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: dogstatsd-ruby
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
82
87
  - - ">="
83
88
  - !ruby/object:Gem::Version
84
89
  version: 4.8.1
@@ -86,9 +91,6 @@ dependencies:
86
91
  prerelease: false
87
92
  version_requirements: !ruby/object:Gem::Requirement
88
93
  requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '4.8'
92
94
  - - ">="
93
95
  - !ruby/object:Gem::Version
94
96
  version: 4.8.1
@@ -103,6 +105,7 @@ files:
103
105
  - README.md
104
106
  - bin/console
105
107
  - bin/setup
108
+ - lib/sidekiq/datadog/config.rb
106
109
  - lib/sidekiq/datadog/monitor.rb
107
110
  - lib/sidekiq/datadog/monitor/data.rb
108
111
  - lib/sidekiq/datadog/monitor/metrics_worker.rb