blob: feda3e812ef1589269339a15be85a432d3dea7df (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import datetime
import json
FIVE_MINUTES = datetime.timedelta(seconds = 300)
def parse_datetime(s):
assert s.endswith('Z')
if '.' in s:
s = s.split('.', 1)[0] + '+00:00'
else:
s = s[:-1] + '+00:00'
return datetime.datetime.fromisoformat(s)
async def process(request):
now = datetime.datetime.now(datetime.timezone.utc)
obj = json.loads(await request.text())
assert obj['version'] == '1'
alerts = []
for a in obj['alerts']:
startTime = parse_datetime(a['startsAt'])
endTime = parse_datetime(a['endsAt'])
if now - startTime < FIVE_MINUTES or now - endTime < FIVE_MINUTES:
alerts.append(f'{a["labels"]["alertname"]} {a["status"]}')
if alerts:
return f'[{obj["status"]}] {", ".join(alerts)}'
else:
return f'[{obj["status"]}]'
|