Module: Rage::Telemetry
- Defined in:
- lib/rage/telemetry/telemetry.rb,
lib/rage/telemetry/capacity.rb
Overview
The Rage::Telemetry component provides an interface to monitor various operations and events within the Rage framework.
To start using telemetry, define and register custom handlers that will process the telemetry data.
-
Define Handlers: Create custom telemetry handlers by subclassing Rage::Telemetry::Handler and implementing the desired logic for processing telemetry data.
class MyTelemetryHandler < Rage::Telemetry::Handler handle "controller.action.process", with: :log_action def log_action(controller:) puts "Processing action: #{controller.action_name}" yield end end -
Register Handlers: Register your custom handlers in the Rage configuration.
Rage.configure do config.telemetry.use MyTelemetryHandler.new end
Defined Under Namespace
Modules: Capacity, Spans Classes: Handler, SpanResult
Class Method Summary collapse
-
.available_spans ⇒ Array<String>
Returns the list of all available telemetry spans.
-
.every(interval_ms, &block) ⇒ Object
Registers a block to be executed repeatedly at a fixed interval while the server is running.
Class Method Details
.available_spans ⇒ Array<String>
Returns the list of all available telemetry spans.
35 36 37 |
# File 'lib/rage/telemetry/telemetry.rb', line 35 def self.available_spans __registry.keys end |
.every(interval_ms, &block) ⇒ Object
Registers a block to be executed repeatedly at a fixed interval while the server is running. The block runs inside a fiber, so blocking I/O inside it (e.g. flushing metrics to a collector) will not block the server.
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rage/telemetry/telemetry.rb', line 46 def self.every(interval_ms, &block) Iodine.run_every(interval_ms) do Fiber.schedule do block.call rescue => e Rage.logger.error("#{e.class} (#{e.}):\n#{e.backtrace.join("\n")}") Rage::Errors.report(e) end end end |