@@ -12,17 +12,22 @@ import (
1212)
1313
1414type metrics struct {
15- logger log.Logger
16- partitionDelay * kitprometheus.Gauge
17- recordsConsumed * kitprometheus.Counter
18- lock sync.RWMutex
19- topicPartitionToOffset map [string ]map [int32 ]int64
15+ logger log.Logger
16+ partitionDelay * kitprometheus.Gauge
17+ recordsConsumed * kitprometheus.Counter
18+ endpointLatencyHistogram * kitprometheus.Summary
19+ lock sync.RWMutex
20+ topicPartitionToOffset map [string ]map [int32 ]int64
2021}
2122
2223func (m * metrics ) IncrementRecordsConsumed (count int ) {
2324 m .recordsConsumed .Add (float64 (count ))
2425}
2526
27+ func (m * metrics ) RecordEndpointLatency (latency float64 ) {
28+ m .endpointLatencyHistogram .Observe (latency )
29+ }
30+
2631func (m * metrics ) UpdateOffset (topic string , partition int32 , offset int64 ) {
2732 m .lock .Lock ()
2833 currentOffset , exists := m.topicPartitionToOffset [topic ][partition ]
@@ -58,6 +63,7 @@ type MetricsPublisher interface {
5863 PublishOffsetMetrics (highWaterMarks map [string ]map [int32 ]int64 )
5964 UpdateOffset (topic string , partition int32 , delay int64 )
6065 IncrementRecordsConsumed (count int )
66+ RecordEndpointLatency (latency float64 )
6167}
6268
6369func NewMetricsPublisher () MetricsPublisher {
@@ -70,11 +76,16 @@ func NewMetricsPublisher() MetricsPublisher {
7076 Name : "kafka_consumer_partition_delay" ,
7177 Help : "Kafka consumer partition delay" ,
7278 }, []string {"partition" , "topic" })
79+ endpointLatencySummary := kitprometheus .NewSummaryFrom (stdprometheus.SummaryOpts {
80+ Name : "kafka_consumer_endpoint_latency_histogram_seconds" ,
81+ Help : "Kafka consumer endpoint latency histogram in seconds" ,
82+ }, []string {})
7383 return & metrics {
74- logger : logger ,
75- partitionDelay : partitionDelay ,
76- recordsConsumed : recordsConsumed ,
77- lock : sync.RWMutex {},
84+ logger : logger ,
85+ partitionDelay : partitionDelay ,
86+ recordsConsumed : recordsConsumed ,
87+ endpointLatencyHistogram : endpointLatencySummary ,
88+ lock : sync.RWMutex {},
7889 topicPartitionToOffset : make (map [string ]map [int32 ]int64 ),
7990 }
8091}
0 commit comments