|
1 | 1 | # frozen_string_literal: true |
2 | 2 | require_relative '../../helper' |
3 | 3 | require 'fluent/plugin/filter_throttle' |
| 4 | +require 'fluent/plugin/prometheus' |
4 | 5 |
|
5 | 6 | SingleCov.covered! |
6 | 7 |
|
@@ -178,5 +179,33 @@ def create_driver(conf='') |
178 | 179 |
|
179 | 180 | assert driver.logs.any? { |log| log.include?('rate back down') } |
180 | 181 | end |
| 182 | + |
| 183 | + it 'emit metrics when enabled and rate exceeds - multiple keys' do |
| 184 | + driver = create_driver <<~CONF |
| 185 | + group_key "group1,group2" |
| 186 | + group_bucket_period_s 1 |
| 187 | + group_bucket_limit 5 |
| 188 | + group_emit_metrics true |
| 189 | + CONF |
| 190 | + |
| 191 | + driver.run(default_tag: "test") do |
| 192 | + driver.feed([[event_time, {"msg": "test", "group1": "a", "group2": "b"}]] * 100) |
| 193 | + driver.feed([[event_time, {"msg": "test", "group1": "b", "group2": "b"}]] * 50) |
| 194 | + driver.feed([[event_time, {"msg": "test", "group1": "c"}]] * 25) |
| 195 | + driver.feed([[event_time, {"msg": "test", "group2": "c"}]] * 10) |
| 196 | + end |
| 197 | + |
| 198 | + groups = driver.filtered_records.group_by { |r| r[:group1] } |
| 199 | + groups.each { |k, g| groups[k] = g.group_by { |r| r[:group2] } } |
| 200 | + |
| 201 | + assert_equal(5, groups["a"]["b"].size) |
| 202 | + assert_equal(5, groups["b"]["b"].size) |
| 203 | + assert_equal(5, groups["c"][nil].size) |
| 204 | + assert_equal(5, groups[nil]["c"].size) |
| 205 | + assert_equal(95, driver.instance.registry.get(:fluentd_throttle_rate_limit_exceeded).get(labels: {group1: "a", group2: "b"})) |
| 206 | + assert_equal(45, driver.instance.registry.get(:fluentd_throttle_rate_limit_exceeded).get(labels: {group1: "b", group2: "b"})) |
| 207 | + assert_equal(20, driver.instance.registry.get(:fluentd_throttle_rate_limit_exceeded).get(labels: {group1: "c", group2: nil})) |
| 208 | + assert_equal(5, driver.instance.registry.get(:fluentd_throttle_rate_limit_exceeded).get(labels: {group1: nil, group2: "c"})) |
| 209 | + end |
181 | 210 | end |
182 | 211 | end |
0 commit comments