Class: Puma::Plugin::Telemetry::Config
- Inherits:
-
Object
- Object
- Puma::Plugin::Telemetry::Config
- Defined in:
- lib/puma/plugin/telemetry/config.rb
Overview
Configuration object for plugin
Constant Summary collapse
- DEFAULT_PUMA_TELEMETRY =
[ # Total booted workers. 'workers.booted', # Total number of workers configured. 'workers.total', # Current number of threads spawned. 'workers.spawned_threads', # Maximum number of threads that can run . 'workers.max_threads', # Number of requests performed so far. 'workers.requests_count', # Number of requests waiting to be processed. 'queue.backlog', # Free capacity that could be utilized, i.e. if backlog # is growing, and we still have capacity available, it # could mean that load balancing is not performing well. 'queue.capacity' ].freeze
- TARGETS =
{ dogstatsd: Telemetry::Targets::DatadogStatsdTarget, io: Telemetry::Targets::IOTarget }.freeze
Instance Attribute Summary collapse
-
#enabled ⇒ Object
Whenever telemetry should run with puma - default: false.
-
#frequency ⇒ Object
Seconds between publishing telemetry - default: 5.
-
#initial_delay ⇒ Object
Number of seconds to delay first telemetry - default: 5.
-
#puma_telemetry ⇒ Object
Which metrics to publish from puma stats.
-
#socket_parser ⇒ Object
Symbol representing method to parse the
Socket::Option, or the whole implementation as a lambda. -
#socket_telemetry ⇒ Object
Whenever to publish socket telemetry.
-
#targets ⇒ Object
List of targets which are meant to publish telemetry.
Instance Method Summary collapse
- #add_target(name_or_target, **args) ⇒ Object
- #enabled? ⇒ Boolean
-
#initialize ⇒ Config
constructor
A new instance of Config.
- #socket_telemetry! ⇒ Object
- #socket_telemetry? ⇒ Boolean
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
79 80 81 82 83 84 85 86 87 |
# File 'lib/puma/plugin/telemetry/config.rb', line 79 def initialize @enabled = false @initial_delay = 5 @frequency = 5 @targets = [] @puma_telemetry = DEFAULT_PUMA_TELEMETRY @socket_telemetry = false @socket_parser = :unpack end |
Instance Attribute Details
#enabled ⇒ Object
Whenever telemetry should run with puma
- default: false
40 41 42 |
# File 'lib/puma/plugin/telemetry/config.rb', line 40 def enabled @enabled end |
#frequency ⇒ Object
Seconds between publishing telemetry
- default: 5
48 49 50 |
# File 'lib/puma/plugin/telemetry/config.rb', line 48 def frequency @frequency end |
#initial_delay ⇒ Object
Number of seconds to delay first telemetry
- default: 5
44 45 46 |
# File 'lib/puma/plugin/telemetry/config.rb', line 44 def initial_delay @initial_delay end |
#puma_telemetry ⇒ Object
Which metrics to publish from puma stats. You can select a subset from default ones that interest you the most.
- default: DEFAULT_PUMA_TELEMETRY
59 60 61 |
# File 'lib/puma/plugin/telemetry/config.rb', line 59 def puma_telemetry @puma_telemetry end |
#socket_parser ⇒ Object
Symbol representing method to parse the Socket::Option, or
the whole implementation as a lambda. Available options:
:inspect, based on theSocket::Option#inspectmethod, it's the safest and slowest way to extract the info.inspectoutput might not be available, i.e. on AWS Fargate:unpack, parse binary data given bySocket::Option. Fastest way (12x compared toinspect) but depends on kernel headers and fields ordering within the struct. It should almost always match though. DEFAULT- proc/lambda,
Socket::Optionwill be given as an argument, it should return the value ofunackedfield as an integer.
77 78 79 |
# File 'lib/puma/plugin/telemetry/config.rb', line 77 def socket_parser @socket_parser end |
#socket_telemetry ⇒ Object
Whenever to publish socket telemetry.
- default: false
63 64 65 |
# File 'lib/puma/plugin/telemetry/config.rb', line 63 def socket_telemetry @socket_telemetry end |
#targets ⇒ Object
List of targets which are meant to publish telemetry.
Target should implement #call method accepting
a single argument - so it can be even a simple proc.
- default: []
54 55 56 |
# File 'lib/puma/plugin/telemetry/config.rb', line 54 def targets @targets end |
Instance Method Details
#add_target(name_or_target, **args) ⇒ Object
101 102 103 104 105 106 107 108 109 |
# File 'lib/puma/plugin/telemetry/config.rb', line 101 def add_target(name_or_target, **args) return @targets.push(name_or_target) unless name_or_target.is_a?(Symbol) target = TARGETS.fetch(name_or_target) do raise Telemetry::Error, "Unknown Target: #{name_or_target.inspect}, #{args.inspect}" end @targets.push(target.new(**args)) end |
#enabled? ⇒ Boolean
89 90 91 |
# File 'lib/puma/plugin/telemetry/config.rb', line 89 def enabled? !!@enabled end |
#socket_telemetry! ⇒ Object
93 94 95 |
# File 'lib/puma/plugin/telemetry/config.rb', line 93 def socket_telemetry! @socket_telemetry = true end |
#socket_telemetry? ⇒ Boolean
97 98 99 |
# File 'lib/puma/plugin/telemetry/config.rb', line 97 def socket_telemetry? @socket_telemetry end |