@@ -47,7 +47,7 @@ def __init__(self, config, publishers):
47
47
self .open_alerts = self .load_alerts ()
48
48
# below is used to store events to later send if mutilple failures occur
49
49
# events cannot be stored in open_alerts as they are not JSON serializable.
50
- self .zenduty_events = {}
50
+ self .delayed_events = {}
51
51
52
52
def load_alerts (self ):
53
53
try :
@@ -79,7 +79,7 @@ async def run(self, states: List[State]):
79
79
for event_type in self .config ["events" ]:
80
80
event : Event = globals ()[event_type ](check , context )
81
81
82
- if event_type == "ZendutyEvent" :
82
+ if event_type in [ "ZendutyEvent" , "TelegramEvent" ] :
83
83
alert_identifier = self .generate_alert_identifier (check )
84
84
alert = self .open_alerts .get (alert_identifier )
85
85
if alert is None :
@@ -89,11 +89,12 @@ async def run(self, states: List[State]):
89
89
"failures" : 1 ,
90
90
"last_window_failures" : None ,
91
91
"sent" : False ,
92
+ "event_type" : event_type ,
92
93
}
93
94
else :
94
95
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
97
98
98
99
sent_events .append (event .send ())
99
100
@@ -177,8 +178,8 @@ async def process_zenduty_events(self, current_time):
177
178
for identifier , info in self .open_alerts .items ():
178
179
self .check_zd_alert_status (identifier , current_time )
179
180
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 )
182
183
# Resolve the alert if raised and failed < $threshold times in the last 5m window
183
184
resolved = False
184
185
if (
@@ -187,7 +188,10 @@ async def process_zenduty_events(self, current_time):
187
188
):
188
189
logger .debug (f"Resolving Zenduty alert { identifier } " )
189
190
resolved = True
190
- if info ["sent" ]:
191
+ if (
192
+ info ["sent" ]
193
+ and info .get ("event_type" , "ZendutyEvent" ) == "ZendutyEvent"
194
+ ):
191
195
response = await send_zenduty_alert (
192
196
identifier , identifier , resolved = True
193
197
)
@@ -208,16 +212,16 @@ async def process_zenduty_events(self, current_time):
208
212
logger .debug (f"Raising Zenduty alert { identifier } " )
209
213
self .open_alerts [identifier ]["sent" ] = True
210
214
self .open_alerts [identifier ]["last_alert" ] = current_time .isoformat ()
211
- event = self .zenduty_events .get (identifier )
215
+ event = self .delayed_events .get (identifier )
212
216
if event :
213
217
to_alert .append (event .send ())
214
218
215
219
await asyncio .gather (* to_alert )
216
220
for identifier in to_remove :
217
221
if self .open_alerts .get (identifier ):
218
222
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 ]
221
225
222
226
with open (self .open_alerts_file , "w" ) as file :
223
227
json .dump (self .open_alerts , file )
0 commit comments