From 12b3e31c5a6120972a639c81ca1736264aa357e0 Mon Sep 17 00:00:00 2001 From: Leszek Zalewski Date: Tue, 25 Jan 2022 15:16:14 +0100 Subject: [PATCH] Prepare 1.1.0 release --- CHANGELOG.md | 12 ++ Gemfile.lock | 2 +- docs/example-datadog_backlog_size.png | Bin 0 -> 47656 bytes docs/example-datadog_queue_time.png | Bin 0 -> 80006 bytes docs/examples.md | 163 ++++++++++++++++++++++++++ lib/puma/plugin/telemetry/version.rb | 2 +- 6 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 docs/example-datadog_backlog_size.png create mode 100644 docs/example-datadog_queue_time.png create mode 100644 docs/examples.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a91e4a..d41560a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.1.0] + +Out of beta testing, reading for usage. Following is a recap from Alpha & Beta releases. + +### Added +- new metric: `sockets.backlog` (disabled by default), pulls information from Puma + sockets about the state of their backlogs. This together with `queue.backlog` + allows for full insights into total number of requests waiting to be processed +- `config.sockets_telemetry!` option to enable sockets telemetry +- `config.socket_parser` option to allow custom parser implementation as needed +- Datadog widgets examples under `docs/examples.md` + ## [1.1.0 Beta] ### Added diff --git a/Gemfile.lock b/Gemfile.lock index 9c94278..c1c9bf1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - puma-plugin-telemetry (1.1.0.beta) + puma-plugin-telemetry (1.1.0) puma (>= 5.0) GEM diff --git a/docs/example-datadog_backlog_size.png b/docs/example-datadog_backlog_size.png new file mode 100644 index 0000000000000000000000000000000000000000..05726070818feef8e6e86e0697dc5ac8517eccde GIT binary patch literal 47656 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 literal 0 HcmV?d00001 diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 0000000..9f03bef --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,163 @@ +## Keeping track of waiting requests + +There are requests waiting in 2 places: +- socket +- queue + +Their sum is a total number of accepted requests waiting. + +Puma configuration + +```ruby +plugin :telemetry + +Puma::Plugin::Telemetry.configure do |config| + config.enabled = true + config.initial_delay = 10 + + config.puma_telemetry = %w[queue.backlog] + + config.socket_telemetry! + + config.add_target :dogstatsd, client: Datadog::Statsd.new(tags: %w[your tags], namespace: "ruby.puma") +end +``` + +Example Datadog widget and it's configuration. Depending on what you prefer to see, you might replace `rollup(max)` with `rollup(sum)` whenever you want to see maximum value or sum across the aggregated time frame. + +| :point_up: | Remember to update tags after initial setup! | +|---------------|:---------------------------------------------| + +![Datadog Widget, barchart showcasing sockets & queue backlog sizes stacked up](example-datadog_backlog_size.png "Datadog Widget") + +```json +{ + "viz": "timeseries", + "requests": [ + { + "style": { + "palette": "dog_classic", + "type": "solid", + "width": "normal" + }, + "type": "bars", + "formulas": [ + { + "alias": "queue", + "formula": "query1" + }, + { + "alias": "socket", + "formula": "query2" + } + ], + "response_format": "timeseries", + "on_right_yaxis": false, + "queries": [ + { + "query": "max:ruby.puma.queue.backlog{}.rollup(max)", + "data_source": "metrics", + "name": "query1" + }, + { + "query": "max:ruby.puma.sockets.backlog{}.rollup(max)", + "data_source": "metrics", + "name": "query2" + } + ] + } + ], + "yaxis": { + "include_zero": true, + "max": "auto", + "scale": "linear", + "min": "auto", + "label": "" + }, + "markers": [] +} +``` + +## Keeping track of request queue time + +The time request spent waiting to be processed, between it's accepted by Load Balancer till it starts going through Rack Middleware in your application. Holy grail of autoscaling. + +Example configuration of middleware, i.e. in case of Rails it could be placed under `config/initializers/request_queue_time.rb` + +```ruby +Rails.application.config.middleware.insert_after( + 0, + RequestQueueTimeMiddleware, + statsd: Datadog::Statsd.new(namespace: "ruby.puma", tags: %w[your tags]) +) +``` + +If you are utilizing tags in your logs, you might also want to add this measurement as follows: + +```ruby +Rails.application.config.log_tags ||= {} +Rails.application.config.log_tags[:queue_time] = ->(req) { req.env[::RequestQueueTimeMiddleware::ENV_KEY] } +``` + +Example Datadog widget with configuration. + +| :point_up: | Remember to update tags after initial setup! | +|---------------|:---------------------------------------------| + +![Datadog Widget, barchart showcasing sockets & queue backlog sizes stacked up](example-datadog_queue_time.png "Datadog Widget") + +```json +{ + "viz": "timeseries", + "requests": [ + { + "style": { + "palette": "dog_classic", + "type": "solid", + "width": "normal" + }, + "type": "line", + "response_format": "timeseries", + "queries": [ + { + "query": "max:ruby.puma.queue.time.max{}", + "data_source": "metrics", + "name": "query1" + }, + { + "query": "max:ruby.puma.queue.time.95percentile{}", + "data_source": "metrics", + "name": "query2" + }, + { + "query": "max:ruby.puma.queue.time.median{}", + "data_source": "metrics", + "name": "query3" + } + ], + "formulas": [ + { + "alias": "max", + "formula": "query1" + }, + { + "alias": "p95", + "formula": "query2" + }, + { + "alias": "median", + "formula": "query3" + } + ] + } + ], + "yaxis": { + "include_zero": true, + "max": "auto", + "scale": "linear", + "min": "auto", + "label": "" + }, + "markers": [] +} +``` diff --git a/lib/puma/plugin/telemetry/version.rb b/lib/puma/plugin/telemetry/version.rb index 0d0ccf0..b1a614d 100644 --- a/lib/puma/plugin/telemetry/version.rb +++ b/lib/puma/plugin/telemetry/version.rb @@ -3,7 +3,7 @@ module Puma class Plugin module Telemetry - VERSION = "1.1.0.beta" + VERSION = "1.1.0" end end end