fix: use frame protocol for metrics timing
This commit is contained in:
@@ -63,7 +63,7 @@ public class IngestMetrics implements IngestInterceptor, Ordered {
|
||||
|
||||
Timer.Sample s = ctx.attr(ATTR_TIMER_SAMPLE);
|
||||
if (s != null) {
|
||||
stopTimer(ctx, event.source() == null ? "unknown" : event.source().name());
|
||||
stopTimer(ctx, protocolTag(ctx));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.lingniu.ingest.observability;
|
||||
|
||||
import com.lingniu.ingest.api.ProtocolId;
|
||||
import com.lingniu.ingest.api.event.VehicleEvent;
|
||||
import com.lingniu.ingest.api.pipeline.IngestContext;
|
||||
import com.lingniu.ingest.api.pipeline.RawFrame;
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
@@ -41,6 +42,28 @@ class IngestMetricsTest {
|
||||
.isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void recordsFrameDurationAgainstTheFrameProtocolCapturedInBefore() {
|
||||
SimpleMeterRegistry registry = new SimpleMeterRegistry();
|
||||
IngestMetrics metrics = new IngestMetrics(registry);
|
||||
IngestContext context = new IngestContext("trace-4");
|
||||
|
||||
metrics.before(frame(ProtocolId.JT808), context);
|
||||
metrics.after(new VehicleEvent.Heartbeat(
|
||||
"event-1",
|
||||
"VIN001",
|
||||
ProtocolId.UNKNOWN,
|
||||
Instant.parse("2026-07-01T00:00:01Z"),
|
||||
Instant.parse("2026-07-01T00:00:02Z"),
|
||||
"trace-4",
|
||||
Map.of()), context);
|
||||
|
||||
assertThat(registry.timer("ingest_frame_duration_seconds", "protocol", "JT808").count())
|
||||
.isEqualTo(1);
|
||||
assertThat(registry.find("ingest_frame_duration_seconds").tag("protocol", "unknown").timer())
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void countsErrorsAsUnknownWhenThereIsNoFrameProtocolContext() {
|
||||
SimpleMeterRegistry registry = new SimpleMeterRegistry();
|
||||
|
||||
Reference in New Issue
Block a user