Enregistrement des données du monitoring




Premier étape, enregistrement des données au format CSV. Les données seront enregistrées et écrasées comme une pile FIFO (First In, First Out). Ce qui veut dire que la première données entrée sera la première à sortir du fichier. On aura une mémoire tampon des données sur un certain nombres d'enregistrement.

Notre fichier CSV pourra être du format que l'on souhaitera grâce à l'utilisation de la classe csv.Dialect.


Voici le code:


import csv

import os


#Enregistrement des valeurs CPU


class PasswdDialect(csv.Dialect):     #Config du fichier CSV

   # Separateur de champ

   delimiter = ";"

   # Separateur de ''chaine''

   quotechar = None

   # Gestion du separateur dans les ''chaines''

   escapechar = None

   doublequote = None

   # Fin de ligne

   lineterminator = "\r\n"

   # Ajout automatique du separateur de chaine (pour ''writer'')

   quoting = csv.QUOTE_NONE

   # Ne pas ignorer les espaces entre le delimiteur de chaine

   # et le texte

   skipinitialspace = False


nbval = 30 # nbrs d'enregistrements

fmon = path + "cpu.txt" # Fichier d enregistrement des valeurs

echelon = 5 #temps echantillonnage des mesures

path= '/home/pi/psutil/' #Modifier le chemin suivant votre installation


#lecture et ecriture des données

try:

   file = open(fmon,"r")

   a = []

   b = []

   reader = csv.reader(file,PasswdDialect())

   row = reader.next()

   for i in range(1,nbval):

       row = reader.next()

       a.append(row[1])

       b.append(row[2])

   file.close()

   file = open(fmon,"wb")

   writer = csv.writer(file,PasswdDialect())

   writer.writerow(('Temps','cpu','temp'))

   writer.writerow((echelon,usagecpu,cpu_temperature))

   for i in range(2,nbval):

       writer.writerow((i*echelon,a[(i-2)],b[(i-2)]))

   file.close()

   


except:

   file = open(fmon,"wb")

   a = []

   b=[]

   writer = csv.writer(file,PasswdDialect())

   writer.writerow(('Temps','cpu','temp'))

   for i in range(1,nbval):

       writer.writerow((i,i,i))

       a.append((i*echelon))

       b.append((i*echelon))

   file.close()


Ce code doit être modifié en fonction des données que l'on veut enregistrer. J'ai intégré ce code à mon fichier de monitoring du raspberry.

Téléchargement du code source Ici




Mise à jour 05/04/2013

Créé avec HelpNDoc Personal Edition: Produire des aides en ligne pour les applications Qt