欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php怎么监控varnish缓存服务器状态?

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

效果,如下图: php怎么监控varnish缓存服务器状态?

备注,为了查看实时情况,可以在在监控页加个html定时刷新,可以随时查看varnish缓存服务器状态。