feat(go): expose gateway frame duration histogram

This commit is contained in:
lingniu
2026-07-03 18:54:00 +08:00
parent 71905aca3d
commit 16ee09180c
10 changed files with 182 additions and 9 deletions

View File

@@ -63,6 +63,8 @@ type TCPServerConfig struct {
const frameOperationTimeout = 30 * time.Second
var gatewayFrameDurationBucketsMS = []float64{1, 5, 10, 25, 50, 100, 250, 500, 1000, 5000}
func NewTCPServer(cfg TCPServerConfig) (*TCPServer, error) {
if cfg.Protocol.Protocol == "" {
return nil, errors.New("protocol is required")
@@ -322,10 +324,16 @@ func (s *TCPServer) recordFrameDuration(status envelope.ParseStatus, elapsed tim
if s.metrics == nil {
return
}
elapsedMS := float64(elapsed.Milliseconds())
labels := metrics.Labels{
"protocol": string(s.protocol.Protocol),
"status": string(status),
}
s.metrics.SetGauge("vehicle_gateway_frame_duration_ms", metrics.Labels{
"protocol": string(s.protocol.Protocol),
"status": string(status),
}, float64(elapsed.Milliseconds()))
}, elapsedMS)
s.metrics.ObserveHistogram("vehicle_gateway_frame_duration_ms_histogram", labels, gatewayFrameDurationBucketsMS, elapsedMS)
}
func (s *TCPServer) recordPublishMetric(kind string, status string) {