-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsquid.py
63 lines (51 loc) · 1.74 KB
/
squid.py
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Checks Squid failovers from US sites.
# Creates alarm if any are found.
# ====
# It is run every hour from a cron job.
import time
from datetime import datetime, timezone
import json
import requests
from alerts import alarms
config_path = '/config/config.json'
with open(config_path) as json_data:
config = json.load(json_data,)
print('current time', datetime.now(timezone.utc))
sites = ['MWT2', 'AGLT2', 'SWT2_CPB', 'BU_ATLAS_Tier2',
'UTA_SWT2', 'OU_OCHEP_SWT2', 'SWT2_CPB,UTA_SWT2']
failovers = {a: {'servers': 0, 'requests': 0, 'data': 0} for a in sites}
res = requests.get(
'http://wlcg-squid-monitor.cern.ch/failover/failoverATLAS/failover-record-nosquid.tsv')
if (res.status_code == 200):
data = res.content.decode("utf-8")
lines = data.splitlines()
# ['Timestamp', 'Group', 'Sites', 'Host', 'Ip', 'Bandwidth', 'BandwidthRate', 'Hits', 'HitsRate']
for line in lines[1:]:
vals = line.split('\t')
if int(vals[0])+3600 < time.time():
continue
site = vals[2]
if site in sites:
failovers[site]['servers'] += 1
failovers[site]['requests'] += int(vals[7])
failovers[site]['data'] += int(vals[5])
print('failovers:', failovers)
else:
print('problem in receiving connections!')
ALARM = alarms('SLATE', 'Squid', 'failovers')
for site, details in failovers.items():
if details['servers'] == 0:
continue
source = {
"site": site,
"WNs": details['servers'],
"requests": details['requests'],
"data": details['data']
}
print(source)
ALARM.addAlarm(
body='failover',
tags=[site],
source=source
)
print('Done.')