Gehört Ihr auch zu den Menschen, die ständig per ssh mit dem Server verbunden sind, um sich die Auslastung anzuschauen?
Vermutlich Ja, sonst würdet Ihr auf “normalen” Blogs lesen.
Es gibt ein paar Dinge die ich persönlich regelmäßig überprüfe, dazu gehört die CPU Auslastung, die offenen Verbindungen zu den Clients, die Ramauslastung und was der ach so anfällige (und optimierte) Apache so treibt.
Manchmal verursacht ein Besucher etwas mehr Last und da will man natürlich wissen, ist das wieder einer der Scheiß Crawler oder ein Scriptkiddy, dass mit seinen tools spielt (eigentlich ist es ja egal, weil sich da mein hoodog drum kümmert … wissen will man es aber trotzdem *g).
Für solche Zwecke gibt es ja schon massig Anwendungen auf dem Markt, die alles genau analysieren, dokumentieren und dabei mehr Last verbrauchen als der eigentliche Webserver bei einem Besucher.
Kritisch wird das Ganze, wenn man im Angriff steht und Flooder mit einem DDOS den Server attackieren (und plötzlich ein Bruchteil der Bots ausreichen dich abzuschießen).
Ich habe mich deshalb gestern Nacht einmal hingesetzt und mir eine kleine Seite gebastelt, die mir die wichtigen Infos auf einen Blick darstellt.
Die Seite speichert nichts, es läuft nicht ständig irgend etwas im Hintergrund sonder die Infos werden zum aktuellen Zeitpunkt quasi taufrisch präsentiert.
Da ich den Apache als Webserver einsetze, muss man natürlich die entsprechende Zeile grep “apache” auf nginx und co umstellen, falls man einen anderen Webserver verwendet.
Im oberen Bereich ist der Load, die Auslastung der CPU / Ramverbauch und die aktuell gefahren Prozesse gelistet.
Darunter die aktuellen Online Besucher, die IP habe ich hier mal in einen Link zur Ripe-DB umgewandelt, falls man auf die schnelle nach dem ISP schauen möchte.
Ganz unten noch ein paar allgemeine Information zur Hardware.
Die Seite wurde auf Debian und Ubuntu Webservern getestet.
Ich würde an dieser Stelle noch den dringenden Rat geben, die Seite in ein passwortgeschützten Ordner zu legen.
<html> <title>hoohead.de sss (simple server stats)</title> <body> <table border="0"><colgroup width="200" span="2"></colgroup> <tr> <th>grep</th> <th>value</th> </tr> <?php $load = shell_exec("uptime"); preg_match('/(average:)(.*?)(\n)/i', $load , $load1); echo "<tr><td>Load : </td><td>".$load1[2]."</td></tr>\n"; $mem = shell_exec("cat /proc/meminfo"); preg_match('/(MemTotal:)(.*?)(\n)/i', $mem , $match1); preg_match('/(MemFree:)(.*?)(\n)/i', $mem , $match2); echo "<tr><td>CPU usage : </td><td>". (shell_exec("ps -eo pcpu | awk '{cpu_load+=$1} END {print cpu_load}'")/shell_exec("grep -c processor /proc/cpuinfo"))." % </td></tr>\n"; echo "<tr><td>Memory free : </td><td>".$match2[2]."</td></tr>\n"; echo "<tr><td>Apache processes : </td><td>".shell_exec('ps aux | grep "apache" | wc -l')."</td></tr>\n"; echo "<tr><td>all processes : </td><td>".shell_exec('ps aux | wc -l')."</td></tr>\n"; $free = shell_exec('df -h /'); $freeav = explode("\n",$free); preg_match ('/( )\s( [0-9]{1,4}.[a-z]{1,2}.*?)(\/)/i', $freeav[1], $freeav2); echo "<tr><td>Disk Space: <br>all used free %used: </td><td><br>".$freeav2[2]."</td></tr>\n"; echo "<tr><td>--------------------------------</td><td>count - ip -------------</td></tr>\n"; $ips = shell_exec("netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr"); preg_match_all ('/(\d+)\s([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})/i', $ips, $ips2); for ($i = 0; $i< (count($ips2[2])); $i++) { $ips = str_replace($ips2[2][$i],'<a href="https://apps.db.ripe.net/search/query.html?searchtext='.$ips2[2][$i].'"> '.$ips2[2][$i].' </a>',$ips); } echo "<tr><td>Online : </td><td>".str_replace("\n","<br>\n",$ips)."</td></tr>\n"; echo "<tr><td>--------------------------------</td><td>-----------------------</td></tr>\n"; $cpuinf = shell_exec("cat /proc/cpuinfo"); preg_match('/(model name)(.*?)(\n)/i', $cpuinf , $cpuinfname); preg_match('/(cpu MHz)(.*?)(\n)/i', $cpuinf , $cpuinfmhz); preg_match('/(cache size)(.*?)(\n)/i', $cpuinf , $cpuinfcache); echo "<tr><td>CPU Information: </td><td>".str_replace(":","",$cpuinfname[2])."</td></tr>\n"; echo "<tr><td>CPU Mhz: </td><td>".str_replace(":","",$cpuinfmhz[2])."</td></tr>\n"; echo "<tr><td>CPU Cache: </td><td>".str_replace(":","",$cpuinfcache[2])."</td></tr>\n"; echo "<tr><td>CPU Cores: </td><td>".shell_exec("grep -c processor /proc/cpuinfo")."</td></tr>\n"; echo "<tr><td>Memory total: </td><td>".$match1[2]."</td></tr>\n"; //echo "<tr><td>System: </td><td>".shell_exec("uname -a")."</td></tr>\n"; echo "</table>"; echo '<p>2012 by <a href="http://hoohead.hoohost.org">hoohead</a></p>'; ?> </body> </html>
Quelle: hoohead