您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php实现监控varnish缓存服务器的状态_PHP

2025/11/14 18:34:50发布6次查看
当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,今天就分享给大家,使用网页查看varnish命中率。
系统: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的状态了.
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product