Skip to content

Instantly share code, notes, and snippets.

@nansenat16
Created March 23, 2013 16:27
Show Gist options
  • Save nansenat16/5228311 to your computer and use it in GitHub Desktop.
Save nansenat16/5228311 to your computer and use it in GitHub Desktop.
<html>
<head>
<title>Mongodb Status <?php echo date('Y/m/d H:i:s');?></title>
<style type="text/css">
table,td{border:1px solid #000;}
.coll{margin-left:50px;}
</style>
</head>
<body>
<h3>MongoDB Status</h3>
<?php
function format_byte($int,$n=0){
$k=array('Byte','KB','MB','GB','TB');
for($n;$n<count($k);$n++){
if($int<1024){
return round($int,2).' '.$k[$n];
}else{
$int=round($int/1024,1);
}
}
}
function status_db($ary){
echo '<table>';
echo '<tr><td>DB name</td><td>'.$ary['db'].'</td></tr>';
echo '<tr><td>DataSize</td><td>'.format_byte($ary['dataSize']).'</td></tr>';
echo '<tr><td>StorageSize</td><td>'.format_byte($ary['storageSize']).'</td></tr>';
echo '<tr><td>indexSize</td><td>'.format_byte($ary['indexSize']).'</td></tr>';
echo '<tr><td>fileSize</td><td>'.format_byte($ary['fileSize']).'</td></tr>';
echo '</table><br />';
}
function status_coll($ary){
echo '<div class="coll"><table>';
echo '<tr><td>Collection name</td><td>'.$ary['ns'].'</td></tr>';
echo '<tr><td>Count</td><td>'.$ary['count'].'</td></tr>';
if($ary['count']>0){
echo '<tr><td>avgObjSize</td><td>'.format_byte($ary['avgObjSize']).'</td></tr>';
}
echo '<tr><td>storageSize</td><td>'.format_byte($ary['storageSize']).'</td></tr>';
echo '</table></div><br />';
}
$m=new Mongo('mongodb://127.0.0.1:27017');
$dbs=$m->admin->command(array('listDatabases'=>1));
$dbs=$dbs['databases'];
for($n=0;$n<count($dbs);$n++){
$dbname=$dbs[$n]['name'];
$r=$m->$dbname->command(array('dbStats'=>1));
status_db($r);
$coll=$m->$dbname->getCollectionNames();
for($c=0;$c<count($coll);$c++){
$cr=$m->$dbname->command(array('collStats'=>$coll[$c]));
if($cr['count']>0){
$t1=$m->$dbname->$coll[$c]->find(array(),array('_id'=>1))->sort(array('_id'=>1))->limit(1);
$t1=iterator_to_array($t1);
$t1=$t1[key($t1)]['_id'];
$t2=$m->$dbname->$coll[$c]->find(array(),array('_id'=>1))->sort(array('_id'=>0))->limit(1);
$t2=iterator_to_array($t2);
$t2=$t2[key($t2)]['_id'];
echo date('Y/m/d H:i:s',$t1->getTimestamp()).'&nbsp;~&nbsp;'.date('Y/m/d H:i:s',$t2->getTimestamp());
}
status_coll($cr);
}
echo '<hr />';
}
?>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment