FreeVis
Dit is een heeeeel erg simpel scriptje dat ik in een uurtje gemaakt heb. Ik heb dit maar gedaan omdat phpsysinfo en dingen die er op lijken allemaal configuratie nodig hebben, terwijl ik alleen mn memoryusage belangrijk vind. Dit gooi je gewoon ergens in je webdirectory en het werkt al. Het maakt gebruik van procps. Ik heb het getest op een 2.4 box met procps 2.0.11 en op mijn eigen 2.6.9 (bling,bling) box met procps 3.2.1. Het werkt op beide boxjes, dus ik neem aan dt er geen problems zijn. Je kunt natuurlijk de layout en zo veranderen naar eigen wens, ik heb nu gewoon de standaard gepakt, dus mijn naam staat er ook nog in en zo.. Nu heb ik in versie 0.2 ook het uitlezen van de mountpoints toegevoegd. Dit maakt gebruik van het df commando van de GNU coreutils. Dit bleek wat moeilijker te zijn vanwege compatibiliteit.
[code]
<html>
<head>
<title>FreeVis 0.2.1</title>
</head>
<body bgcolor="#FFFAAA">
<b>FreeVis 0.2.1</b><br>
<i>By JoRRiZZa</i><br><br>
<?php
//laat beschikbare geheugen zien dmv procps free
//
//http://procps.sourceforge.net/
//
//niet rechtstreeks via fread van het /proc systeem
//want dat werkt schijnbaar niet altijd
//dit werkt altijd
//data extraheren uit de output, en maak hem bruikbaar
//ik overdrijf een beetje met de str_replace
//maar dat komt omdat de output van free -o
//niet altijd het zelfde is. Dus vandaar...
$free = shell_exec('free -o');
$free = str_replace('Mem:', '', $free);
$free = str_replace('Swap:', '', $free);
$free = str_replace("\r", '', $free);
$free = str_replace("\n", '', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' -', '-', $free);
$free = str_replace('- ', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('-total-used-free-shared-buffers-cached-', '', $free);
$free_array = explode('-', $free);
$mem_tot = $free_array[0];
$mem_use = $free_array[1];
$swp_tot = $free_array[6];
$swp_use = $free_array[7];
//procenten
if ($mem_tot != 0) {
$mem_proc = round($mem_use/$mem_tot*100);
} else {
$mem_proc = 0;
}
if ($swp_tot != 0) {
$swp_proc = round($swp_use/$swp_tot*100);
} else {
$swp_proc = 0;
}
//breedte balken berekenen
$breedte = 300;
$gekleurd_mem = $breedte/100*$mem_proc;
$ongekleurd_mem = $breedte-$gekleurd_mem;
$gekleurd_swp = $breedte/100*$swp_proc;
$ongekleurd_swp = $breedte-$gekleurd_swp;
//kleur bepalen
//groen onder de 80%, rood daarboven
if ($mem_proc <= 80) {
$mem_kleur = 'green';
} else {
$mem_kleur = 'red';
}
if ($swp_proc <= 80) {
$swp_kleur = 'green';
} else {
$swp_kleur = 'red';
}
//nu het tabelletje tekenen met de kleurtjes...
?>
<table border="0" cellpadding="0" cellspacing="0">
Memory: <?php echo $mem_use.'K/'.$mem_tot.'K'; ?><br>
<tr><td width="20"></td><td width="<?php echo $gekleurd_mem; ?>" bgcolor="<?php echo $mem_kleur; ?>"></td><td width="<?php echo $ongekleurd_mem; ?>" bgcolor="grey"></td><td><?php echo $mem_proc; ?>%</td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
Swap: <?php echo $swp_use.'K/'.$swp_tot.'K'; ?><br>
<tr><td width="20"></td><td width="<?php echo $gekleurd_swp; ?>" bgcolor="<?php echo $swp_kleur; ?>"></td><td width="<?php echo $ongekleurd_swp; ?>" bgcolor="grey"></td><td><?php echo $swp_proc; ?>%</td></tr>
</table>
<br>
<?php
//sinds v0.2 hebben we ook het uitlezen van het gebruik van de
//mountpoints.
//commando
$filesys = shell_exec('df');
//schoonmaken
$filesys = str_replace(' ', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace("Filesystem-1K-blocks-Used-Available-Use%-Mounted-on\n", '', $filesys);
//daadwerkelijk splijten
$filesys = split("\n", $filesys);
//functie per output-regel
$i = 0;
while ($i <= count($filesys)) {
if ($filesys[$i] != "") {
$data = explode('-', $filesys[$i]);
//nu hebben we de data voor 1 mountpoint in een array
$dev = $data[0];
$blocks_tot = $data[1];
$blocks_use = $data[2];
$blocks_free = $data[3];
$blocks_proc = str_replace('%', '', $data[4]);
$mountpoint = $data[5];
if ($dev != 'none' && $dev != 'tmpfs') {
//breedte balken berekenen
$breed = 300;
$gekleurd = $breed/100*$blocks_proc;
$ongekleurd = $breed-$gekleurd;
//kleur bepalen
if ($blocks_proc <= 80) {
$kleur = 'green';
} else {
$kleur = 'red';
}
//tekenen table
echo 'Dev: '.$dev.' Mnt: '.$mountpoint.' '.$blocks_use.'/'.$blocks_tot.' Blocks<br>';
echo '<table border="0" cellpadding="0" cellspacing="0">';
echo '<tr><td width="20"></td><td width="'.$gekleurd.'" bgcolor="'.$kleur.'"></td><td width="'.$ongekleurd.'" bgcolor="grey"></td><td> '.$blocks_proc.'%</td></tr>';
echo '</table>';
}
}
$i++;
}
?>
</body>
</html>
[/code]
Reacties
0