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 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
PHP mkdir()定义和用法
Jan 14 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
php获取参数的几种方法总结
Feb 18 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
php的sso单点登录实现方法
Jan 08 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php封装的mysqli类完整实例
Oct 18 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP实现微信申请退款功能
Oct 01 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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的知识
2006/11/17 PHP
php 删除数组元素
2009/01/16 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
window.dialogArguments 使用说明
2011/04/11 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JavaScript Split()方法
2015/12/18 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
React如何避免重渲染
2018/04/10 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
Python循环语句中else的用法总结
2016/09/11 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
python实现机器人卡牌
2019/10/06 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Python爬虫开发与项目实战
2020/12/16 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
数字天堂软件测试面试题
2012/12/23 面试题
财务分析个人的自荐书范文
2013/11/24 职场文书
小学语文国培研修日志
2015/11/13 职场文书
600字作文之感受大自然
2019/11/27 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
Python - 10行代码集2000张美女图
2021/05/23 Python
OpenCV-Python实现轮廓拟合
2021/06/08 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js