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


Posted in PHP onDecember 30, 2014

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

系统:centos 5.x
软件:varnish-3.0.x

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

<?php

$outfile=shell_exec("/usr/bin/varnishstat -x");

$xml=simplexml_load_string($outfile);

echo $xml->getName() . "<br />";

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"] . "<br />";

  echo "client_req: ".$arys["client_req"] . "<br />";

  echo "cache_hit: ".$arys["cache_hit"] . "<br />";

  echo "cache_miss: ".$arys["cache_miss"] . "<br />";

  echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." % <br/>";

  echo "LRU nuked objects: ".$arys[n_lru_nuked]."<br/>";

  echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";

?>

效果如下:

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

ps:为了查看实时情况,可以在这监控页加个html定时刷新.
好了,这样就方便我们随时查看varnish的状态了.

PHP 相关文章推荐
E路文章系统PHP
Dec 11 PHP
php join函数应用
May 04 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
php ios推送(代码)
Jul 01 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php抽象类用法实例分析
Jul 07 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
php在线解压ZIP文件的方法
Dec 30 #PHP
php站内搜索关键词变亮的实现方法
Dec 30 #PHP
php使用PDO操作MySQL数据库实例
Dec 30 #PHP
discuz目录文件资料汇总
Dec 30 #PHP
浅谈php冒泡排序
Dec 30 #PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 #PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 #PHP
You might like
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
收集json解析的四种方法分享
2014/01/17 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
canvas实现钟表效果
2017/02/13 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
python简单判断序列是否为空的方法
2015/06/30 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
极简的HTML5模版
2015/07/09 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
学前教育毕业生自荐信
2013/10/29 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
大学学习生活感言
2014/01/18 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
电子专业求职信
2014/06/19 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python