系统:centos 5.x
软件:varnish-3.0.x
ps:3.0以下的版本可以通过socket连接到varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决。
代码如下:
$outfile=shell_exec(/usr/bin/varnishstat -x);
$xml=simplexml_load_string($outfile);
echo $xml->getname() .
;
foreach($xml->children() as $child)
{
//$tmpname=;
foreach($child->children() as $subchild)
{
if ($subchild->getname() ==name )
{
$tmpname=$subchild;
}
else if ($subchild->getname() ==value )
{
if ($tmpname!=)
{
$arys[$tmpname]=$subchild;
$tmpname=;
}
}
else
{
continue;
}
}
}
function bytereduce($bytes)
{
if ($bytes>1099511627776)
{
return round($bytes/1099511627776).tb;
}
else if ($bytes > 1073741824)
{
return round($bytes/1073741824).gb;
}
else if ($bytes>1048576)
{
return round($bytes/1048576).mb;
}
else if ($bytes>1024)
{
return round($bytes/1024).kb;
}
else
{
return $bytes.b;
}
}
echo client_conn: .$arys[client_conn] .
;
echo client_req: .$arys[client_req] .
;
echo cache_hit: .$arys[cache_hit] .
;
echo cache_miss: .$arys[cache_miss] .
;
echo cache hit rate: .round(($arys[cache_hit]/$arys[client_req])*100). %
;
echo lru nuked objects: .$arys[n_lru_nuked].
;
echo .bytereduce($arys[s_bodybytes]+$arys[s_hdrbytes]). acc content (.bytereduce($arys[s_hdrbytes]). header .bytereduce($arys[s_bodybytes]). body);
?>
效果如下:
ps:为了查看实时情况,可以在这监控页加个html定时刷新.
好了,这样就方便我们随时查看varnish的状态了.
