2017-01-13 1 views
0

Je me demande comment je pourrais montrer sur une page principale "Monitoring.php" un couple de serveurs différents pour obtenir l'utilisation de cpu/ram theire.Comment obtenir l'utilisation du processeur/RAM des serveurs differenet?

Ceci est le code que j'utilise actuellement. Mais la chose est que je reçois seulement l'utilisation de CPU/Ram du serveur actuel, où les fichiers .php sont stockés.

function get_server_cpu_usage(){ 

    $load = sys_getloadavg(); 
    return $load[0]; 

} 


function get_server_memory_usage(){ 

    $free = shell_exec('free'); 
    $free = (string)trim($free); 
    $free_arr = explode("\n", $free); 
    $mem = explode(" ", $free_arr[1]); 
    $mem = array_filter($mem); 
    $mem = array_merge($mem); 
    $memory_usage = $mem[2]/$mem[1]*100; 

    return $memory_usage; 
} 


echo '<h4>Server Memory usage: ' . number_format(get_server_memory_usage(), 2) . '%</h4><div class="meter"><span style="width:' . get_server_memory_usage() . '%"></span></div><br> 
<h4>Server CPU usage: '  . get_server_cpu_usage() . '% </h4><div class="meter"><span style="width:' . get_server_cpu_usage() . '%"></span></div>'; 

Répondre

0
  1. Créer un script php qui stocke les données dans un stockage de données commune comme mysql, redis etc.
  2. Ajoutez le script php pour cron travail à faire dans un intervalle, pour que sur chaque piste de serveur crontab -e , il vous apportera un éditeur fenêtre où; mettre la logique d'intervalle de script.
  3. modifier le fichier monitor.php pour obtenir le contenu de la base de données commune.

exemple:

script Cron

// do.php it runs in every server you have 
    $cpu_usage = get_server_cpu_usage(); 
    $memory_usage = get_server_memory_usage(); 
    // you can use hostname, ip name logic 
    $server_id = get_server_uniqid(); 
    //logic to insert data 
    insert_monitor_data($server_id, $cpu_usage, $server_id); 

fichier crontab

*/10 * * * * /path/to/do.php 

l'Cron se déroulera toutes les 10 minutes dans les serveurs individuels & stocker les données à un commo n magasin de données.

+0

Merci beaucoup! Ça marche! – Maybe

0

Si vous ne souhaitez pas utiliser tous les outils 3ème partie, que votre script accédera je voudrais voir cette option simples

Exécution de votre script sur chaque serveur, et stocker les informations pour chaque serveur une instance MYSQL ou Memcache partagée.

Ou vous créez un script comme showstatus.php sur chaque serveur, qui renvoie toutes les informations requises dans JSON. Ensuite, votre serveur de surveillance peut collecter le JSON de chaque serveur et le traiter.