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 相关文章推荐
多重?l件?合查?(二)
Oct 09 PHP
php录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
给php新手谈谈我的学习心得
Feb 25 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php组合排序简单实现方法
Oct 15 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
php DES加密算法实例分析
Sep 18 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 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
用Flash图形化数据(一)
2006/10/09 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
python 网络编程常用代码段
2016/08/28 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
java程序员面试交流
2012/11/29 面试题
新闻专业个人自我评价
2013/09/21 职场文书
毕业生就业自荐书
2013/12/15 职场文书
中学家长会邀请函
2014/01/17 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
合同纠纷调解书
2015/05/20 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
七年级上册生物的课件
2019/08/07 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
keepalived + nginx 实现高可用方案
2022/12/24 Servers