22
33
44class EventMetrics (BaseMetrics ):
5- """Metrics for event processing and Kafka."""
5+ """Metrics for domain-level event processing.
6+
7+ Transport-level Kafka metrics (produced/consumed/errors) are handled
8+ automatically by KafkaTelemetryMiddleware on the broker.
9+ """
610
711 def _create_instruments (self ) -> None :
8- # Core event metrics
912 self .event_published = self ._meter .create_counter (
1013 name = "events.published.total" , description = "Total number of events published" , unit = "1"
1114 )
@@ -18,33 +21,6 @@ def _create_instruments(self) -> None:
1821 name = "event.processing.errors.total" , description = "Total number of event processing errors" , unit = "1"
1922 )
2023
21- # Event bus metrics
22- self .event_bus_queue_size = self ._meter .create_up_down_counter (
23- name = "event.bus.queue.size" , description = "Size of event bus message queue" , unit = "1"
24- )
25-
26- # Event replay metrics
27- self .event_replay_operations = self ._meter .create_counter (
28- name = "event.replay.operations.total" , description = "Total number of event replay operations" , unit = "1"
29- )
30-
31- # Kafka-specific metrics
32- self .kafka_messages_produced = self ._meter .create_counter (
33- name = "kafka.messages.produced.total" , description = "Total number of messages produced to Kafka" , unit = "1"
34- )
35-
36- self .kafka_messages_consumed = self ._meter .create_counter (
37- name = "kafka.messages.consumed.total" , description = "Total number of messages consumed from Kafka" , unit = "1"
38- )
39-
40- self .kafka_production_errors = self ._meter .create_counter (
41- name = "kafka.production.errors.total" , description = "Total number of Kafka production errors" , unit = "1"
42- )
43-
44- self .kafka_consumption_errors = self ._meter .create_counter (
45- name = "kafka.consumption.errors.total" , description = "Total number of Kafka consumption errors" , unit = "1"
46- )
47-
4824 def record_event_published (self , event_type : str , event_category : str | None = None ) -> None :
4925 if event_category is None :
5026 event_category = event_type .split ("." )[0 ] if "." in event_type else event_type
@@ -54,12 +30,6 @@ def record_event_published(self, event_type: str, event_category: str | None = N
5430 def record_event_processing_duration (self , duration_seconds : float , event_type : str ) -> None :
5531 self .event_processing_duration .record (duration_seconds , attributes = {"event_type" : event_type })
5632
57- def record_event_replay_operation (self , operation : str , status : str ) -> None :
58- self .event_replay_operations .add (1 , attributes = {"operation" : operation , "status" : status })
59-
60- def record_event_stored (self , event_type : str , collection : str ) -> None :
61- self .event_published .add (1 , attributes = {"event_type" : event_type , "aggregate_type" : collection })
62-
6333 def record_events_processing_failed (
6434 self , topic : str , event_type : str , consumer_group : str , error_type : str
6535 ) -> None :
@@ -72,50 +42,3 @@ def record_events_processing_failed(
7242 "error_type" : error_type ,
7343 },
7444 )
75-
76- def record_event_store_duration (self , duration : float , operation : str , collection : str ) -> None :
77- self .event_processing_duration .record (duration , attributes = {"operation" : operation , "collection" : collection })
78-
79- def record_event_store_failed (self , event_type : str , error_type : str ) -> None :
80- self .event_processing_errors .add (
81- 1 , attributes = {"event_type" : event_type , "error_type" : error_type , "operation" : "store" }
82- )
83-
84- def record_event_query_duration (self , duration : float , query_type : str , collection : str ) -> None :
85- self .event_processing_duration .record (
86- duration , attributes = {"operation" : f"query_{ query_type } " , "collection" : collection }
87- )
88-
89- def record_processing_duration (
90- self , duration_seconds : float , topic : str , event_type : str , consumer_group : str
91- ) -> None :
92- self .event_processing_duration .record (
93- duration_seconds , attributes = {"topic" : topic , "event_type" : event_type , "consumer_group" : consumer_group }
94- )
95-
96- def record_kafka_message_produced (self , topic : str , partition : int = - 1 ) -> None :
97- self .kafka_messages_produced .add (
98- 1 , attributes = {"topic" : topic , "partition" : str (partition ) if partition >= 0 else "auto" }
99- )
100-
101- def record_kafka_message_consumed (self , topic : str , consumer_group : str ) -> None :
102- self .kafka_messages_consumed .add (1 , attributes = {"topic" : topic , "consumer_group" : consumer_group })
103-
104- def record_kafka_production_error (self , topic : str , error_type : str ) -> None :
105- self .kafka_production_errors .add (1 , attributes = {"topic" : topic , "error_type" : error_type })
106-
107- def record_kafka_consumption_error (self , topic : str , consumer_group : str , error_type : str ) -> None :
108- self .kafka_consumption_errors .add (
109- 1 , attributes = {"topic" : topic , "consumer_group" : consumer_group , "error_type" : error_type }
110- )
111-
112- def update_event_bus_queue_size (self , delta : int , queue_name : str = "default" ) -> None :
113- self .event_bus_queue_size .add (delta , attributes = {"queue" : queue_name })
114-
115- def set_event_bus_queue_size (self , size : int , queue_name : str = "default" ) -> None :
116- key = f"_event_bus_size_{ queue_name } "
117- current_val = getattr (self , key , 0 )
118- delta = size - current_val
119- if delta != 0 :
120- self .event_bus_queue_size .add (delta , attributes = {"queue" : queue_name })
121- setattr (self , key , size )
0 commit comments