fix: use frame protocol for metrics timing

This commit is contained in:
lingniu
2026-07-01 13:40:25 +08:00
parent 981879136f
commit 932b386c69
2 changed files with 24 additions and 1 deletions

View File

@@ -63,7 +63,7 @@ public class IngestMetrics implements IngestInterceptor, Ordered {
Timer.Sample s = ctx.attr(ATTR_TIMER_SAMPLE); Timer.Sample s = ctx.attr(ATTR_TIMER_SAMPLE);
if (s != null) { if (s != null) {
stopTimer(ctx, event.source() == null ? "unknown" : event.source().name()); stopTimer(ctx, protocolTag(ctx));
} }
} }

View File

@@ -1,6 +1,7 @@
package com.lingniu.ingest.observability; package com.lingniu.ingest.observability;
import com.lingniu.ingest.api.ProtocolId; 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.IngestContext;
import com.lingniu.ingest.api.pipeline.RawFrame; import com.lingniu.ingest.api.pipeline.RawFrame;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
@@ -41,6 +42,28 @@ class IngestMetricsTest {
.isEqualTo(1); .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 @Test
void countsErrorsAsUnknownWhenThereIsNoFrameProtocolContext() { void countsErrorsAsUnknownWhenThereIsNoFrameProtocolContext() {
SimpleMeterRegistry registry = new SimpleMeterRegistry(); SimpleMeterRegistry registry = new SimpleMeterRegistry();