promenade 0.12.1 → 0.12.3
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 +4 -4
- data/Gemfile.lock +1 -1
- data/bin/yjit_intergration_test +11 -0
- data/lib/promenade/railtie.rb +2 -0
- data/lib/promenade/version.rb +1 -1
- data/lib/promenade/yjit/middleware.rb +22 -0
- data/lib/promenade/yjit/stats.rb +26 -0
- data/lib/promenade.rb +2 -1
- metadata +6 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1ce2f5d337f4a1fe6de094092a79d85d228dd6b4efa0f0b690f61e0f20db747e
|
|
4
|
+
data.tar.gz: b4b552462b63b3b502206e8bf795ec42d461f97c1d078d21a8fb530f2d07fa88
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ff7629ea8b250ed7ebb2d42b0fd4eb77f8c662f2144ff7a0bd751b363b8cff662306dd2d96d581c6cce7d4e7c58f4e8a4981b9d985b09b36575d30da5dc148ff
|
|
7
|
+
data.tar.gz: 4f6ba22211d7309034f61e2f66444f9dfac8b13a0a329c83445af8ef615224ceb76fb238a4e507357f28b278b35eb5b6e9ee9e98a82599f8e3204a0b634246db
|
data/Gemfile.lock
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "promenade"
|
|
5
|
+
require "promenade/yjit/stats"
|
|
6
|
+
require "prometheus/client"
|
|
7
|
+
require "prometheus/client/formats/text"
|
|
8
|
+
|
|
9
|
+
Promenade.setup
|
|
10
|
+
Promenade::YJIT::Stats.instrument
|
|
11
|
+
puts Prometheus::Client::Formats::Text.marshal_multiprocess
|
data/lib/promenade/railtie.rb
CHANGED
|
@@ -2,11 +2,13 @@ require "promenade/setup"
|
|
|
2
2
|
require "promenade/engine"
|
|
3
3
|
require "promenade/client/rack/http_request_duration_collector"
|
|
4
4
|
require "promenade/client/rack/http_request_queue_time_collector"
|
|
5
|
+
require "promenade/yjit/middleware"
|
|
5
6
|
|
|
6
7
|
module Promenade
|
|
7
8
|
class Railtie < ::Rails::Railtie
|
|
8
9
|
initializer "promenade.configure_rails_initialization" do
|
|
9
10
|
Promenade.setup
|
|
11
|
+
Rails.application.config.middleware.use Promenade::YJIT::Middlware if defined? ::RubyVM::YJIT
|
|
10
12
|
Rails.application.config.middleware.insert_after ActionDispatch::ShowExceptions,
|
|
11
13
|
Promenade::Client::Rack::HTTPRequestDurationCollector
|
|
12
14
|
Rails.application.config.middleware.insert 0,
|
data/lib/promenade/version.rb
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require "promenade/yjit/stats"
|
|
2
|
+
|
|
3
|
+
module Promenade
|
|
4
|
+
module YJIT
|
|
5
|
+
class Middlware
|
|
6
|
+
RACK_AFTER_REPLY = "rack.after_reply".freeze
|
|
7
|
+
|
|
8
|
+
def initialize(app)
|
|
9
|
+
@app = app
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call(env)
|
|
13
|
+
if env.key?(RACK_AFTER_REPLY)
|
|
14
|
+
env[RACK_AFTER_REPLY] << -> {
|
|
15
|
+
::Promenade::YJIT::Stats.instrument
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
@app.call(env)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Promenade
|
|
2
|
+
module YJIT
|
|
3
|
+
class Stats
|
|
4
|
+
RUNTIME_STATS = %i(
|
|
5
|
+
code_region_size
|
|
6
|
+
ratio_in_yjit
|
|
7
|
+
).freeze
|
|
8
|
+
|
|
9
|
+
Promenade.gauge :ruby_yjit_code_region_size do
|
|
10
|
+
doc "Ruby YJIT code size"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Promenade.gauge :ruby_yjit_ratio_in_yjit do
|
|
14
|
+
doc "Shows the ratio of YJIT-executed instructions in %"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.instrument
|
|
18
|
+
return unless defined?(::RubyVM::YJIT) && ::RubyVM::YJIT.enabled?
|
|
19
|
+
|
|
20
|
+
::RubyVM::YJIT.runtime_stats.select { |stat, _| RUNTIME_STATS.include? stat }.each do |stat, value|
|
|
21
|
+
Promenade.metric(:"ruby_yjit_#{stat}").set({}, value)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/promenade.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require "promenade/version"
|
|
2
2
|
require "promenade/setup"
|
|
3
3
|
require "promenade/configuration"
|
|
4
|
-
require "promenade/railtie" if defined? Rails::Railtie
|
|
5
4
|
require "promenade/prometheus"
|
|
6
5
|
|
|
7
6
|
module Promenade
|
|
@@ -25,3 +24,5 @@ module Promenade
|
|
|
25
24
|
end
|
|
26
25
|
end
|
|
27
26
|
end
|
|
27
|
+
|
|
28
|
+
require "promenade/railtie" if defined? Rails::Railtie
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: promenade
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.12.
|
|
4
|
+
version: 0.12.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ed Robinson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-02-
|
|
11
|
+
date: 2024-02-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actionpack
|
|
@@ -283,6 +283,7 @@ files:
|
|
|
283
283
|
- bin/integration_test
|
|
284
284
|
- bin/rails
|
|
285
285
|
- bin/setup
|
|
286
|
+
- bin/yjit_intergration_test
|
|
286
287
|
- exe/promenade
|
|
287
288
|
- lib/promenade.rb
|
|
288
289
|
- lib/promenade/client/rack/exception_handler.rb
|
|
@@ -316,6 +317,8 @@ files:
|
|
|
316
317
|
- lib/promenade/waterdrop/message_subscriber.rb
|
|
317
318
|
- lib/promenade/waterdrop/statistics_subscriber.rb
|
|
318
319
|
- lib/promenade/waterdrop/subscriber.rb
|
|
320
|
+
- lib/promenade/yjit/middleware.rb
|
|
321
|
+
- lib/promenade/yjit/stats.rb
|
|
319
322
|
- promenade.gemspec
|
|
320
323
|
homepage: https://github.com/errm/promenade
|
|
321
324
|
licenses:
|
|
@@ -337,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
337
340
|
- !ruby/object:Gem::Version
|
|
338
341
|
version: '0'
|
|
339
342
|
requirements: []
|
|
340
|
-
rubygems_version: 3.
|
|
343
|
+
rubygems_version: 3.5.3
|
|
341
344
|
signing_key:
|
|
342
345
|
specification_version: 4
|
|
343
346
|
summary: Promenade makes it simple to instrument Ruby apps for prometheus scraping
|