@@ -47,7 +47,7 @@ def __init__(self, config, publishers):
4747 self .open_alerts = self .load_alerts ()
4848 # below is used to store events to later send if mutilple failures occur
4949 # events cannot be stored in open_alerts as they are not JSON serializable.
50- self .zenduty_events = {}
50+ self .delayed_events = {}
5151
5252 def load_alerts (self ):
5353 try :
@@ -79,7 +79,7 @@ async def run(self, states: List[State]):
7979 for event_type in self .config ["events" ]:
8080 event : Event = globals ()[event_type ](check , context )
8181
82- if event_type == "ZendutyEvent" :
82+ if event_type in [ "ZendutyEvent" , "TelegramEvent" ] :
8383 alert_identifier = self .generate_alert_identifier (check )
8484 alert = self .open_alerts .get (alert_identifier )
8585 if alert is None :
@@ -89,11 +89,12 @@ async def run(self, states: List[State]):
8989 "failures" : 1 ,
9090 "last_window_failures" : None ,
9191 "sent" : False ,
92+ "event_type" : event_type ,
9293 }
9394 else :
9495 alert ["failures" ] += 1
95- self .zenduty_events [alert_identifier ] = event
96- continue # Skip sending immediately for ZendutyEvent
96+ self .delayed_events [alert_identifier ] = event
97+ continue # Skip sending immediately for ZendutyEvent or TelegramEvent
9798
9899 sent_events .append (event .send ())
99100
@@ -177,8 +178,8 @@ async def process_zenduty_events(self, current_time):
177178 for identifier , info in self .open_alerts .items ():
178179 self .check_zd_alert_status (identifier , current_time )
179180 check_config = self .config ["checks" ]["global" ][info ["type" ]]
180- alert_threshold = check_config .get ("zenduty_alert_threshold " , 5 )
181- resolution_threshold = check_config .get ("zenduty_resolution_threshold " , 3 )
181+ alert_threshold = check_config .get ("alert_threshold " , 5 )
182+ resolution_threshold = check_config .get ("resolution_threshold " , 3 )
182183 # Resolve the alert if raised and failed < $threshold times in the last 5m window
183184 resolved = False
184185 if (
@@ -187,7 +188,10 @@ async def process_zenduty_events(self, current_time):
187188 ):
188189 logger .debug (f"Resolving Zenduty alert { identifier } " )
189190 resolved = True
190- if info ["sent" ]:
191+ if (
192+ info ["sent" ]
193+ and info .get ("event_type" , "ZendutyEvent" ) == "ZendutyEvent"
194+ ):
191195 response = await send_zenduty_alert (
192196 identifier , identifier , resolved = True
193197 )
@@ -208,16 +212,16 @@ async def process_zenduty_events(self, current_time):
208212 logger .debug (f"Raising Zenduty alert { identifier } " )
209213 self .open_alerts [identifier ]["sent" ] = True
210214 self .open_alerts [identifier ]["last_alert" ] = current_time .isoformat ()
211- event = self .zenduty_events .get (identifier )
215+ event = self .delayed_events .get (identifier )
212216 if event :
213217 to_alert .append (event .send ())
214218
215219 await asyncio .gather (* to_alert )
216220 for identifier in to_remove :
217221 if self .open_alerts .get (identifier ):
218222 del self .open_alerts [identifier ]
219- if self .zenduty_events .get (identifier ):
220- del self .zenduty_events [identifier ]
223+ if self .delayed_events .get (identifier ):
224+ del self .delayed_events [identifier ]
221225
222226 with open (self .open_alerts_file , "w" ) as file :
223227 json .dump (self .open_alerts , file )
0 commit comments