2017-01-13 1 views
0

Ich frage mich, wie ich auf einer Hauptseite "Monitoring.php" ein paar verschiedene Server zeigen konnte, um ihre CPU/RAM-Nutzung zu bekommen.Wie CPU/RAM-Nutzung von anderen Servern erhalten?

Dies ist der aktuelle Code, den ich verwende. Aber die Sache ist, ich bekomme nur die CPU/RAM-Auslastung des aktuellen Servers, wo die .php-Dateien gespeichert sind.

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>'; 

Antwort

0
  1. ein PHP-Skript erstellen, die die Daten in einen gemeinsamen Datenspeicher wie mysql, redis usw.
  2. Fügen Sie das PHP-Skript speichert Job cron es in einem Intervall für die auf jedem Server laufen, zu tun crontab -e , es bringt Ihnen einen Editor Fenster wo; Setzen Sie die Script-Intervall-Logik.
  3. ändern monitor.php Datei, um Inhalte aus der gemeinsamen Datenbank zu erhalten.

Beispiel:

Cron-Skript

// 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); 

crontab

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

die cron wird alle 10 Minuten in einzelnen Servern & speichern die Daten auf einen Lauf Kommo n Datenspeicher.

+0

Vielen Dank! Es klappt! – Maybe

0

Wenn Sie keine 3rd-Party-Tools verwenden möchten, die Ihr Skript zugreifen will ich sehen würde, diese einfache Optionen

Laufen Ihr Skript auf jedem Server, und speichern die Informationen für jeden Server in eine gemeinsame MYSQL- oder Memcache-Instanz.

Oder Sie erstellen ein Skript wie wie showstatus.php auf jedem Server, der alle erforderlichen Informationen in JSON zurückgibt. Dann kann Ihr tatsächlicher Überwachungsserver den JSON von jedem Server erfassen und verarbeiten.

Verwandte Themen