3 # Collect statistics from myops db on site failures and recovery times.
4 # For every site that goes down we need:
8 from monitor.database.info.model import *
11 from datetime import datetime, timedelta
12 from monitor.common import *
14 d_start = datetime(2009, 6, 10)
15 d_end = datetime.now()
17 #print "date_checked,date_changed,timestamp,last_changed,sitename,status"
18 print "date,t,sitename,status,length"
20 if len(sys.argv[1:]) > 0:
21 l = enumerate(sys.argv[1:])
22 l = [(i,HistorySiteRecord.get_by(loginbase=lb)) for i,lb in l ]
24 l = enumerate(HistorySiteRecord.query.all())
33 last_level = site.versions[0].penalty_level
34 last_time = site.versions[0].timestamp
36 length = len(site.versions)
37 for i,v in enumerate(site.versions[1:]):
39 if v.nodes_up < 2 and not start:
40 last_time = v.timestamp
43 if v.nodes_up >= 2 and start and v.penalty_level == 0:
44 time_at_level = Time.dt_to_ts(v.timestamp) - Time.dt_to_ts(last_time)
45 print "%s,%s,%s,%s,%s" % (Time.dt_to_ts(v.timestamp),
46 v.timestamp.strftime("%Y-%m-%d"), v.loginbase, last_level, time_at_level)
49 if last_level != v.penalty_level:
50 last_level = v.penalty_level
52 #print i,length-2, last_level != v.penalty_level, i == length-2
53 #if last_level != v.penalty_level or i == length-2:
54 #if last_level > v.penalty_level: # or i == length-2:
55 #print "last_time ", last_time
56 #print "diff times", v.timestamp
57 #print "timestamp ", v.timestamp
58 #print "lastchange", v.last_changed
59 # time_at_level = Time.dt_to_ts(v.timestamp) - Time.dt_to_ts(last_time)
60 # print "%s,%s,%s,%s,%s" % (Time.dt_to_ts(v.timestamp),
61 # v.timestamp.strftime("%Y-%m-%d"), v.loginbase, last_level, time_at_level)
63 #if last_level != v.penalty_level:
64 # #print "levels mis-match", last_level, v.penalty_level
65 # last_level = v.penalty_level
67 # # print "recording time", v.timestamp
68 # last_time = v.timestamp
74 # v = site.get_as_of(d)
76 # print "%s,%s,%s,%s" % (Time.dt_to_ts(d),
77 # d.strftime("%Y-%m-%d"), v.loginbase, v.penalty_level)