Skip to content

Commit 425478c

Browse files
authored
metrics: add gauge with compression goal if enabled (#18230)
1 parent 1b3b3ee commit 425478c

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

docs/static/spec/openapi/logstash-api.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,11 @@ components:
23462346
encode:
23472347
type: object
23482348
properties:
2349+
goal:
2350+
- enum:
2351+
- speed
2352+
- balanced
2353+
- size
23492354
ratio:
23502355
type: object
23512356
description: the ratio of event size in bytes to its representation on disk

logstash-core/src/main/java/org/logstash/ackedqueue/ZstdEnabledCompressionCodec.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import co.elastic.logstash.api.NamespacedMetric;
55
import com.github.luben.zstd.Zstd;
66

7+
import java.util.Locale;
8+
79
/**
810
* A {@link ZstdEnabledCompressionCodec} is a {@link CompressionCodec} that can decode deflate-compressed
911
* bytes and performs deflate compression when encoding.
@@ -34,6 +36,7 @@ public enum Goal {
3436
this.internalLevel = internalLevel.internalLevel;
3537

3638
final NamespacedMetric encodeNamespace = queueMetric.namespace("compression", "encode");
39+
encodeNamespace.gauge("goal", internalLevel.name().toLowerCase(Locale.ROOT));
3740
encodeRatioMetric = encodeNamespace.namespace("ratio")
3841
.register("lifetime", AtomicIORatioMetric.FACTORY);
3942
encodeTimerMetric = encodeNamespace.namespace("spend")

qa/integration/specs/monitoring_api_spec.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,12 @@
208208
shared_examples "pipeline metrics" do
209209
# let(:pipeline_id) { defined?(super()) or fail NotImplementedError }
210210
let(:settings_overrides) do
211-
super().merge({'pipeline.id' => pipeline_id})
211+
super().dup.tap do |overrides|
212+
overrides['pipeline.id'] = pipeline_id
213+
if logstash_service.settings.feature_flag == "persistent_queues"
214+
overrides['queue.compression'] = %w(none speed balanced size).sample
215+
end
216+
end
212217
end
213218

214219
it "can retrieve queue stats" do
@@ -242,6 +247,11 @@
242247
queue_compression_stats = queue_stats.fetch("compression")
243248
expect(queue_compression_stats.dig('decode', 'ratio', 'lifetime')).to be >= 1
244249
expect(queue_compression_stats.dig('decode', 'spend', 'lifetime')).not_to be_nil
250+
if settings_overrides['queue.compression'] != 'none'
251+
expect(queue_compression_stats.dig('encode', 'goal')).to eq(settings_overrides['queue.compression'])
252+
expect(queue_compression_stats.dig('encode', 'ratio', 'lifetime')).to be <= 1
253+
expect(queue_compression_stats.dig('encode', 'spend', 'lifetime')).not_to be_nil
254+
end
245255
else
246256
expect(queue_stats["type"]).to eq("memory")
247257
end

0 commit comments

Comments
 (0)