Comment obtenir l’utilisation moyenne du processeur / processeur d’un ordinateur?

En ce moment, je travaille sur un programme avec PHP et Perl pour lire les données système de l’ordinateur et nous utilisons SNMP pour collecter des données (ou plutôt, forcées). Après avoir récupéré les données, nous devions stocker les données dans une firebase database, puis utiliser les données pour tracer un graphique linéaire.

Pour le moment, j’utilise ce script perl pour récupérer l’utilisation du processeur / processeur d’un ordinateur.

$MIB1 = ".1.3.6.1.2.1.25.3.3.1.2"; #Cpu Processors $HOST = shift; #or localhost for testing $count = 0; #print out all the processors of the computer and their values #SNMP is used with perl because of the libraries #snmpwalk resortingeves information from the computers by the computer name and MIB #as there are many values, they are stored in an array to be used (@values) = &snmpwalk("$HOST","$MIB1"); foreach $value (@values) { $count++; if ($value) { #fixes the value for presentation $goodvalue = &ssortingp_comment($value); #prints out the result. $count will count out the processor number print "CPU Usage of Processor $count: $goodvalue%\n"; } if ($value > 90){ #warns user if the processor usage is over 90% print "Warning: CPU Usage over 90%! \n" } else { warn "No response from host :$HOST:\n"; } #provides error } 

Le code, ou plutôt, SNMP, récupère plusieurs processeurs individuels et beaucoup devraient savoir qu’il peut y avoir plusieurs processeurs sur un seul ordinateur, ce qui rend le stockage de ces données dans une firebase database peu pratique (par exemple, a 4 et celui à travers la salle a 100.)

Je me demandais donc si quelqu’un pouvait aider à améliorer ce code ou le modifier pour pouvoir les append tous ensemble, trouver une valeur moyenne des utilisations du processeur / processeur et la stocker dans une firebase database. Parce que je ne sais pas trop comment s’y prendre, car la boucle ne recherche qu’un seul processeur à la fois, et on peut ne pas savoir combien il y en a.

Merci d’avance.

Utilisez l’hôte et le numéro de processeur comme une double clé, et le groupe par pour obtenir la moyenne.

Voici un exemple avec sqlite3.

Commencez par créer la table:

 CREATE TABLE cpu (host ssortingng, cpu integer, load integer, primary key (host, cpu)); 

Ensuite, insérez des données de test (cela serait fait par votre script perl):

 INSERT INTO cpu (host, cpu, load) VALUES ("appserv", 1, 25); INSERT INTO cpu (host, cpu, load) VALUES ("appserv", 2, 15); INSERT INTO cpu (host, cpu, load) VALUES ("dbserv", 1, 10); INSERT INTO cpu (host, cpu, load) VALUES ("dbserv", 2, 30); INSERT INTO cpu (host, cpu, load) VALUES ("dbserv", 3, 5); INSERT INTO cpu (host, cpu, load) VALUES ("dbserv", 4, 5); 

Maintenant, vous pouvez obtenir la charge moyenne pour chaque hôte, qui peut être récupérée et tracée en utilisant PHP:

 SELECT host, avg(load) FROM cpu GROUP BY host; appserv|20.0 dbserv|12.5 

La moyenne totale pour tous les hôtes:

 SELECT avg(load) FROM cpu; 15.0 

Ou trouver des hôtes avec une charge élevée:

 SELECT host FROM cpu WHERE load > 25; dbserv 

Vous voudrez probablement créer un tableau de tous vos ordinateurs et le lier à la table cpu ci-dessus, en échangeant la chaîne hôte avec un computer_id.

Tout ceci suppose que vous utilisiez une firebase database relationnelle (SQLite, MySQL, Oracle, etc.).