当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-05 13:17:49 浏览: 评论:0 

这篇文章主要介绍了php实现监控varnish缓存服务器的状态,Varnish是一款高性能的开源HTTP加速器,可以替代Squid、Nginx等服务器,需要的朋友可以参考下

当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,今天就分享给大家,使用网页查看varnish命中率。

系统:centos 5.x

软件:varnish-3.0.x

ps:3.0以下的版本可以通过Socket连接到Varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决,代码如下:

  1. <?php 
  2. $outfile=shell_exec("/usr/bin/varnishstat -x"); 
  3. $xml=simplexml_load_string($outfile); 
  4. echo $xml->getName() . "<br />"
  5. foreach($xml->children() as $child
  6.   { 
  7.       //$tmpName=""; 
  8.       foreach($child->children() as $subChild
  9.       { 
  10.         if ($subChild->getName() =="name" ) 
  11.          { 
  12.             $tmpName=$subChild
  13.         } 
  14.         else  if ($subChild->getName() =="value" ) 
  15.         { 
  16.             if ($tmpName!=""
  17.             { 
  18.                $arys["$tmpName"]=$subChild
  19.                $tmpName=""
  20.             } 
  21.         } 
  22.         else 
  23.          { 
  24.             continue
  25.         } 
  26.       } 
  27.   } 
  28.   function byteReduce($bytes
  29.   { 
  30.       if ($bytes>1099511627776) 
  31.       { 
  32.           return round($bytes/1099511627776)."TB"
  33.       } 
  34.       else if ($bytes > 1073741824) 
  35.       { 
  36.           return round($bytes/1073741824)."GB"
  37.       } 
  38.       else if ($bytes>1048576) 
  39.       { 
  40.           return round($bytes/1048576)."MB"
  41.       } 
  42.       else if ($bytes>1024) 
  43.       { 
  44.           return round($bytes/1024)."KB"
  45.       } 
  46.       else 
  47.       { 
  48.           return $bytes."B"
  49.       } 
  50.   } 
  51.   echo "client_conn: ".$arys["client_conn"] . "<br />"
  52.   echo "client_req: ".$arys["client_req"] . "<br />"
  53.   echo "cache_hit: ".$arys["cache_hit"] . "<br />"
  54.   echo "cache_miss: ".$arys["cache_miss"] . "<br />"
  55.   echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." % <br/>"
  56.   echo "LRU nuked objects: ".$arys[n_lru_nuked]."<br/>"
  57.   echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)"
  58. ?> 

ps:为了查看实时情况,可以在这监控页加个html定时刷新.

Tags: php监控 varnish

分享到: