activerecord-db-metrics 0.1.0 → 0.2.0
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5deb7e732b929fe921ee97ea3655c44437c91f5885d5e381e786568ede6d52de
|
|
4
|
+
data.tar.gz: 5890952db210446df53340e1215b95fdcb04f3409c8e580a3397f44c42d52ef9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 91540844ce8fd983e8b67c2dd11a50888f3f05197e43fc48b4ceaec49c9da118b3bb159ec9fd769ce175bcaa2f965abe3012cf37e31257cd5b3c71f85a6ae61e
|
|
7
|
+
data.tar.gz: 743554911c5766c1505d352b5aebaef460e950264379db0f484cb8223be074e21ae4ea31420aa854b36d8ace6620c2c29099de24e6f861fd0f2897045bdbb4f2
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.0] - 2026-04-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Sidekiq server middleware (`ActiveRecord::Db::Metrics::SidekiqMiddleware`) for per-job DB metrics
|
|
12
|
+
|
|
8
13
|
## [0.1.0] - 2025-12-07
|
|
9
14
|
|
|
10
15
|
### Added
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
module Db
|
|
5
|
+
module Metrics
|
|
6
|
+
# Sidekiq server middleware to measure database operations per job
|
|
7
|
+
#
|
|
8
|
+
# @example Setup
|
|
9
|
+
# Sidekiq.configure_server do |config|
|
|
10
|
+
# config.server_middleware do |chain|
|
|
11
|
+
# chain.add ActiveRecord::Db::Metrics::SidekiqMiddleware
|
|
12
|
+
# end
|
|
13
|
+
# end
|
|
14
|
+
class SidekiqMiddleware
|
|
15
|
+
def call(_worker, job, _queue)
|
|
16
|
+
collector = Collector.new
|
|
17
|
+
collector.start_monitoring
|
|
18
|
+
|
|
19
|
+
yield
|
|
20
|
+
|
|
21
|
+
collector.stop_monitoring
|
|
22
|
+
log_db_metrics(job['class'], collector.results)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
# Log database metrics for a job
|
|
28
|
+
# Override this method in a subclass to customize logging behavior
|
|
29
|
+
#
|
|
30
|
+
# @param job_class [String] The job class name
|
|
31
|
+
# @param results [Hash] Metrics results containing :total_queries and :crud_operations_by_table
|
|
32
|
+
def log_db_metrics(job_class, results)
|
|
33
|
+
Rails.logger.info "--- DB Metrics for Job: #{job_class} ---"
|
|
34
|
+
Rails.logger.info "Total DB Queries: #{results[:total_queries]}"
|
|
35
|
+
|
|
36
|
+
results[:crud_operations_by_table].each do |table, counts|
|
|
37
|
+
operations = %i[INSERT SELECT UPDATE DELETE].map do |op|
|
|
38
|
+
"#{op.to_s[0]}:#{counts[op]}"
|
|
39
|
+
end.join(', ')
|
|
40
|
+
total = counts.values.sum
|
|
41
|
+
Rails.logger.info " [#{table.upcase}] #{operations} (Total: #{total})"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Rails.logger.info '------------------------------'
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -6,6 +6,7 @@ require 'active_record'
|
|
|
6
6
|
require_relative 'activerecord/db/metrics/version'
|
|
7
7
|
require_relative 'activerecord/db/metrics/collector'
|
|
8
8
|
require_relative 'activerecord/db/metrics/controller_helper'
|
|
9
|
+
require_relative 'activerecord/db/metrics/sidekiq_middleware'
|
|
9
10
|
|
|
10
11
|
module ActiveRecord
|
|
11
12
|
module Db
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-db-metrics
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Masato Kato
|
|
@@ -52,6 +52,7 @@ files:
|
|
|
52
52
|
- lib/activerecord-db-metrics.rb
|
|
53
53
|
- lib/activerecord/db/metrics/collector.rb
|
|
54
54
|
- lib/activerecord/db/metrics/controller_helper.rb
|
|
55
|
+
- lib/activerecord/db/metrics/sidekiq_middleware.rb
|
|
55
56
|
- lib/activerecord/db/metrics/version.rb
|
|
56
57
|
homepage: https://github.com/00Masato/activerecord-db-metrics
|
|
57
58
|
licenses:
|