sidekiq-datadog-monitor 0.0.0 → 0.0.0.5

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