-
-
Save thomasmb/5354937 to your computer and use it in GitHub Desktop.
<?php | |
//add your server aliases here | |
$servers = array( | |
"185.14.184.234" => "mcfly.bensmann.no", | |
"185.14.184.xxx" => "another.server.com", | |
); | |
//this script is triggered by this command from the terminal or cron: | |
//echo "time=`uptime`&df=`df -h`" | curl -s -d @- http://domain.com/path/to/script.php | |
//record data | |
if(isset( $_POST['time'], $_POST['df'] )){ | |
//getting the server load | |
preg_match('/\d+\.\d{2}/', $_POST['time'],$load); | |
//get available disk space | |
preg_match('/\d+%/', $_POST['df'],$df); | |
if(!count($load) || !count($df)) | |
return false; | |
$stats = array( | |
"df" => $df[0], | |
"load" => $load[0], | |
"ip" => $_SERVER["REMOTE_ADDR"] | |
); | |
save_to_stats($stats); | |
}else{ | |
output_stats_table(); | |
} | |
function save_to_stats($stats){ | |
$data = json_decode( file_get_contents("stats.json"), true ); | |
$data[ $stats['ip'] ] = $stats; | |
file_put_contents("stats.json", json_encode($data), LOCK_EX); | |
} | |
function output_stats_table(){ | |
global $servers; | |
//display data | |
$data = json_decode( file_get_contents("stats.json"), true ); | |
?> | |
<table id="projects"> | |
<?php foreach($data as $server => $stats): ?> | |
<tr> | |
<td class="server-name" style="width:400px; text-transform:lowercase;"><?php echo $servers[$stats['ip']] ; ?></td> | |
<td class="server-disk-space"><?php echo $stats['load']; ?></td> | |
<td class="projectsBars"> | |
<?php for( $i = 1, $j = number_of_bars($stats['df']); $i <= $j; $i++ ): ?> | |
<div class="barSegment value<?php echo $i; ?>"></div> | |
<?php endfor; ?> | |
</td> | |
</tr> | |
<?php endforeach; ?> | |
</table> | |
<?php | |
}; | |
function number_of_bars($df){ | |
$value = (int) str_replace('%', '', $df) / 10; | |
return round( ($value > 8 ? 8 : $value) * .8 ); | |
} |
@haincha Is stats.json getting created and populated OK?
I'm probably having the same problem @haincha is having, however I'm guessing it's a configuration issue with apache. When I fire off the ...echo/curl... command I do not get any errors, however the stats.json file is not being generated (I assume this file is generated in the same directory as the php script. I'm sure you're busy, but if you have a minute to suggest what I should look at, I would greatly appreciate it.
[UPDATE] Looks like it was a permissions issue on the directory containing the script. Now I'm getting an error in the Status Board app on iOS. Invalid JSON "graph" must be a JSON object.
I'm also struggling with this script. I can't seem to get my stats.json file populated. I don't experience any errors when I run the command from terminal to echo the server status...but when I land on the script page all I see is a blank white screen. Any suggestions? I'm super excited to get this up and running! Thank you!
Not working here either, Debian squeeze. Even chmod 777 dir+files. Can only see the load.
stats.json gives me this:
{"98.22.33.11":{"df":"0%","load":"0.05","ip":"98.22.33.11"}
Any chance you could provide any assistance? Plugging in my server's info and loading the script, it doesn't load. I run server from home, so it has a local IP, then I have my domain.com, running the echo | curl from my server doesn't load anything. No errors are produced, just keeps a blank page.