Skip to content

Commit 328bb09

Browse files
committed
0.7.0: Apply tags from yabeda_tags to all metrics inside a job
1 parent 302157f commit 328bb09

File tree

9 files changed

+59
-5
lines changed

9 files changed

+59
-5
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
77

8+
## 0.7.0 - 2020-07-15
9+
10+
### Changed
11+
12+
- Tags from `yabeda_tags` method are applied to all metrics collected inside a job, not only sidekiq-specific. See [#14](https://github.com/yabeda-rb/yabeda-sidekiq/issues/14). @Envek
13+
814
## 0.6.0 - 2020-07-15
915

1016
### Added

lib/yabeda/sidekiq.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ module Sidekiq
8888

8989
class << self
9090
def labelize(worker, job, queue)
91-
{ queue: queue, worker: worker_class(worker, job), **custom_tags(worker, job).to_h }
91+
{ queue: queue, worker: worker_class(worker, job) }
9292
end
9393

9494
def worker_class(worker, job)

lib/yabeda/sidekiq/server_middleware.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ module Yabeda
44
module Sidekiq
55
# Sidekiq worker middleware
66
class ServerMiddleware
7+
# rubocop: disable Metrics/AbcSize, Metrics/MethodLength:
78
def call(worker, job, queue)
8-
labels = Yabeda::Sidekiq.labelize(worker, job, queue)
9+
custom_tags = Yabeda::Sidekiq.custom_tags(worker, job).to_h
10+
labels = Yabeda::Sidekiq.labelize(worker, job, queue).merge(custom_tags)
911
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
1012
begin
1113
job_instance = ::Sidekiq::Job.new(job)
1214
Yabeda.sidekiq_job_latency.measure(labels, job_instance.latency)
13-
yield
15+
Yabeda.with_tags(**custom_tags) do
16+
yield
17+
end
1418
Yabeda.sidekiq_jobs_success_total.increment(labels)
1519
rescue Exception # rubocop: disable Lint/RescueException
1620
Yabeda.sidekiq_jobs_failed_total.increment(labels)
@@ -20,6 +24,7 @@ def call(worker, job, queue)
2024
Yabeda.sidekiq_jobs_executed_total.increment(labels)
2125
end
2226
end
27+
# rubocop: enable Metrics/AbcSize, Metrics/MethodLength:
2328

2429
private
2530

lib/yabeda/sidekiq/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
module Yabeda
44
module Sidekiq
5-
VERSION = "0.6.0"
5+
VERSION = "0.7.0"
66
end
77
end

spec/spec_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
require "active_job/queue_adapters/sidekiq_adapter"
1010
require "pry"
1111

12+
require_relative "support/custom_metrics"
1213
require_relative "support/jobs"
1314
require_relative "support/sidekiq_inline_middlewares"
1415

spec/support/custom_metrics.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
Yabeda.configure do
4+
group :test do
5+
counter :whatever
6+
end
7+
end

spec/support/jobs.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,19 @@ def perform(*_args)
88
end
99
end
1010

11+
class SampleComplexJob
12+
include Sidekiq::Worker
13+
14+
def perform(*_args)
15+
Yabeda.test.whatever.increment({ explicit: true })
16+
"My job is complex"
17+
end
18+
19+
def yabeda_tags
20+
{ implicit: true }
21+
end
22+
end
23+
1124
class FailingPlainJob
1225
include Sidekiq::Worker
1326

spec/yabeda/sidekiq_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,26 @@
9797
)
9898
end
9999
end
100+
101+
describe "#yabeda_tags worker method" do
102+
it "uses custom labels for both sidekiq and application metrics" do
103+
Yabeda.sidekiq.jobs_executed_total.values.clear # This is a hack
104+
Yabeda.sidekiq.job_runtime.values.clear # This is a hack also
105+
Yabeda.test.whatever.values.clear # And this
106+
107+
Sidekiq::Testing.inline! do
108+
SampleComplexJob.perform_async
109+
end
110+
111+
expect(Yabeda.sidekiq.jobs_executed_total.values).to eq(
112+
{ queue: "default", worker: "SampleComplexJob", implicit: true } => 1,
113+
)
114+
expect(Yabeda.sidekiq.job_runtime.values).to include(
115+
{ queue: "default", worker: "SampleComplexJob", implicit: true } => kind_of(Numeric),
116+
)
117+
expect(Yabeda.test.whatever.values).to include(
118+
{ explicit: true, implicit: true } => 1,
119+
)
120+
end
121+
end
100122
end

yabeda-sidekiq.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
2323
spec.require_paths = ["lib"]
2424

2525
spec.add_dependency "sidekiq"
26-
spec.add_dependency "yabeda", "~> 0.2"
26+
spec.add_dependency "yabeda", "~> 0.6"
2727

2828
spec.add_development_dependency "activejob", ">= 6.0"
2929
spec.add_development_dependency "bundler", "~> 2.0"

0 commit comments

Comments
 (0)