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 相关文章推荐
《APMServ 5.1.2》使用图解
Oct 23 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php中常用的预定义变量小结
May 09 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
PHP常用的三种设计模式
Feb 17 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 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实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
Javascript Object.extend
2010/05/18 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python实现一个简单的验证码程序
2017/11/03 Python
python如何定义带参数的装饰器
2018/03/20 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
详解Python中第三方库Faker
2020/09/25 Python
Python 图片处理库exifread详解
2021/02/25 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
YII2 全局异常处理深入讲解
2021/03/24 PHP
体育教育专业毕业生自荐信
2013/11/15 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
家长学校工作方案
2014/05/07 职场文书
年会邀请函范文
2015/01/30 职场文书
教师节主持词开场白
2015/05/29 职场文书
初中团委工作总结
2015/08/13 职场文书
python实现简单倒计时功能
2021/04/21 Python
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python