honeybadger 5.27.4 → 5.28.0
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/CHANGELOG.md +8 -0
- data/lib/honeybadger/agent.rb +25 -0
- data/lib/honeybadger/config/defaults.rb +5 -0
- data/lib/honeybadger/event.rb +1 -1
- data/lib/honeybadger/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8183362165e34fd5896b5936721badd08db0d24935a10a46c63120ac6e76066
|
4
|
+
data.tar.gz: 51c0d0aaf04df683e5f1ef05ba342d50d8cc7693566567ace67e52a22244191c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730c1514c746b72bc460d392e4fd6e2c7bb423ddc95d6a8b085f0955ef3feccba775570a904c5385d0899899c5003b304e48d2e99b90ad1fd25edf7d3f611dc6
|
7
|
+
data.tar.gz: dd930b1ac2f63c9d201a0c4cd128041092f7d28649d363c65bf73bad64323d982b6a4a99fb90d1a782e17dbda411529bf794484b4ebfdcb46e7be09473be29d2
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
3
|
|
4
|
+
## [5.28.0](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.27.4...v5.28.0) (2025-05-02)
|
5
|
+
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
* add sampling ([#689](https://github.com/honeybadger-io/honeybadger-ruby/issues/689)) ([0692ab0](https://github.com/honeybadger-io/honeybadger-ruby/commit/0692ab07d33843dc2612c36713b0f126ecba6b35))
|
10
|
+
|
11
|
+
|
4
12
|
## [5.27.4](https://github.com/honeybadger-io/honeybadger-ruby/compare/v5.27.3...v5.27.4) (2025-04-30)
|
5
13
|
|
6
14
|
|
data/lib/honeybadger/agent.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'forwardable'
|
2
|
+
require 'zlib'
|
2
3
|
|
3
4
|
require 'honeybadger/version'
|
4
5
|
require 'honeybadger/config'
|
@@ -434,6 +435,10 @@ module Honeybadger
|
|
434
435
|
|
435
436
|
return if event.halted?
|
436
437
|
|
438
|
+
return unless sample_event?(event)
|
439
|
+
|
440
|
+
strip_metadata(event)
|
441
|
+
|
437
442
|
events_worker.push(event.as_json)
|
438
443
|
end
|
439
444
|
|
@@ -570,6 +575,26 @@ module Honeybadger
|
|
570
575
|
|
571
576
|
private
|
572
577
|
|
578
|
+
def strip_metadata(event)
|
579
|
+
event.delete(:_hb)
|
580
|
+
end
|
581
|
+
|
582
|
+
def sample_event?(event)
|
583
|
+
# Always send metrics events
|
584
|
+
return true if event[:event_type] == "metric.hb"
|
585
|
+
|
586
|
+
sample_rate = config[:'events.sample_rate']
|
587
|
+
sample_rate = event.dig(:_hb, :sample_rate) if event.dig(:_hb, :sample_rate).is_a?(Numeric)
|
588
|
+
|
589
|
+
return true if sample_rate >= 100
|
590
|
+
|
591
|
+
if event[:request_id] # Send all events for a given request
|
592
|
+
Zlib.crc32(event[:request_id].to_s) % 100 < sample_rate
|
593
|
+
else # Otherwise just take a random sample
|
594
|
+
rand(100) < sample_rate
|
595
|
+
end
|
596
|
+
end
|
597
|
+
|
573
598
|
def validate_notify_opts!(opts)
|
574
599
|
return if opts.has_key?(:exception)
|
575
600
|
return if opts.has_key?(:error_message)
|
@@ -129,6 +129,11 @@ module Honeybadger
|
|
129
129
|
default: nil,
|
130
130
|
type: Array
|
131
131
|
},
|
132
|
+
:'events.sample_rate' => {
|
133
|
+
description: 'Percentage of events to send to the API (0-100). A value of 0 means no events are sent, 100 means all events are sent.',
|
134
|
+
default: 100,
|
135
|
+
type: Integer
|
136
|
+
},
|
132
137
|
plugins: {
|
133
138
|
description: 'An optional list of plugins to load. Default is to load all plugins.',
|
134
139
|
default: nil,
|
data/lib/honeybadger/event.rb
CHANGED
data/lib/honeybadger/version.rb
CHANGED