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 the `Socket::Option#inspect` method, it’s the safest and slowest way to extract the info. ‘inspect` output might not be available, i.e. on AWS Fargate
-
‘:unpack`, parse binary data given by `Socket::Option`. Fastest way (12x compared to `inspect`) but depends on kernel headers and fields ordering within the struct. It should almost always match though. DEFAULT
-
proc/lambda, ‘Socket::Option` will be given as an argument, it should return the value of `unacked` field 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 |