NAS nede: Real-life test af robustheden i mit dataindsamlingssystem.

Min trofaste NAS gør knuder, og er derfor offline indtil jeg kan få en reservedel hjem (reparationsvideo kommer…).

Det er en passende lejlighed til at verificere, at mit dataindsamlingssystem til elektricitet, gas og vand kan håndtere at databasen, hvor data normalt skrives til, er nede uden at det resulterer i datatab.

Dataindsamlerens frontend består af en raspberry pi, og i min python kode har jeg implementeret følgende:


tStamp = time.strftime("%Y-%m-%d_%H:%M:%S", time.localtime(time.time()))
page = urllib2.urlopen("http://192.168.1.2:8080/storepower1.php?p=" + str(pwr) + "&t=" + tStamp)

res=page.read()
if res == "OK":
print "Sample successfully submitted, checking if any old samples in buffer need to be sent"

lines = [line.rstrip('\n') for line in open('/home/pi/scrpts/log/power_samplebuffer.log')] # read all entrys from buffer

if len(lines) > 0: # 1. Are there any samples in the file?
for line in lines: # 2. For all samples, read and submit, then delete from buffer
[t, p] = line.split("!")
print "tid: " + t + ", power: " + p
page = urllib2.urlopen("http://192.168.1.2:8080/storepower1.php?p=" + p + "&t=" + t)

fBuf = open('/home/pi/scrpts/log/power_samplebuffer.log', 'w')
fBuf.seek(0)
fBuf.truncate()
fBuf.close()

else:
print "Communication failure, sample saved locally for later submitting"
f = open('/home/pi/scrpts/log/power_samplebuffer.log', 'a')
f.write(tStamp + "!" + str(pwr) + "\n")
f.close()

Så ovre på 192.168.1.2:8080 har jeg implementeret et API, der modtager sample og skriver den til databasen. Hvis det API ikke returnerer “OK”, vil ovenstående programstump gemme samplen i en lokal fil. Hver gang en ny sample modtages, tjekkes der om der er hul igennem. Hvis svaret er “OK” vil eventuelle gemte samples sendes til serveren.

Min NAS har været nede i adskillige dage, så der burde være en ophobning af gemte samples som venter på at blive skudt afsted. Lad os se på det:


pi@sensormodule ~/scrpts/log $ ls -lrth power*
-rw-r--r-- 1 pi pi 0 Nov 2 2015 power_samplebuffer_test.log
-rw-r--r-- 1 root root 5.3M May 24 07:30 power_samplebuffer.log
pi@sensormodule ~/scrpts/log $ tail -n 5 power_samplebuffer.log
2016-05-24_07:30:27!1993
2016-05-24_07:30:28!1989
2016-05-24_07:30:30!1985
2016-05-24_07:30:32!1976
2016-05-24_07:30:34!1664
pi@sensormodule ~/scrpts/log $ cat power_samplebuffer.log | wc -l
225876
pi@sensormodule ~/scrpts/log $ cat power_samplebuffer.log | wc -l
225878
pi@sensormodule ~/scrpts/log $ cat power_samplebuffer.log | wc -l
225879
pi@sensormodule ~/scrpts/log $pi@sensormodule ~/scrpts/log $

Oh, yes! 225.000 samples venter på at blive skudt afsted. Dejligt at se, når tingene virker som forventet!

Indtil videre intet datatab! 🙂

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.