zabbix监控PHP APC缓存
admin
2023-07-01 01:23:20
0

参考文章

http://john88wang.blog.51cto.com/2165294/1579158

https://github.com/zbal/zabbix/blob/master/scripts/zabbix_php-apc_check.sh



1.监控原理

将APC源码包中的apc.php放到/usr/local/bin/ 目录下

添加nginx子配置文件php-apc_status.conf

server
{
        listen      80;
        server_name 127.0.0.1;
        access_log  off;
        client_max_body_size 5m;

        autoindex off;
        location / {
            root  /usr/local/zabbix/bin/;
            index index.php;
            autoindex off;
        }

        location ~ \.php$ {
            root           /usr/local/zabbix/bin/;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
            include        fastcgi_params;
        }

}


通过links这个命令可以在命令行下方为HTML页面

links 127.0.0.1/apc.php -dump 2>/dev/null


如果没有这个命令可以用过yum -y install links 安装


2.编写PHP-APC状态信息获取脚本

php-apc_status.sh

#!/bin/bash
#This script is used to get php apc cache data from  apc.php page
#you need put nginx sub-config file php-apc_status.conf under conf/conf.d/ directory
apc_metric=$1
apc_status_url="http://127.0.0.1/apc.php"
apc_status_file=/tmp/php-apc_status.txt
/usr/bin/links $apc_status_url -dump 2>/dev/null > $apc_status_file
#echo $apc_status

#we need to convert GBytes,Mbytes,KBytes to Bytes
#echo "308.345 * 1024 * 1024 * 1024"|bc|cut -f1 -d.
#331082922721
convert_size() {
  value=$1
  unit=$2

  echo $value | grep -E '^[0-9.]+$' 2>&1 > /dev/null
  if [ $? -ne 0 ]; then
    echo "$value is not number"
    exit 1
  fi

  case $unit in
    Bytes)
          echo "$value"
        ;;
   KBytes) 
          echo "$value * 1024" | bc | cut -f1 -d. 
        ;;
   MBytes) 
          echo "$value * 1024 * 1024" | bc | cut -f1 -d. 
        ;;
   GBytes) 
          echo "$value * 1024 * 1024 * 1024" | bc | cut -f1 -d. 
        ;;
  esac
}

#get apc metric data 
case $apc_metric in
            version)
                  cat $apc_status_file|grep "APC Version"|awk '{print $3}'
                 ;;
 cached_files_count)
                  cat $apc_status_file|grep "Cached Files"|head -1|awk '{print $3}'
                 ;;
  cached_files_size)
                  convert_size   $(cat $apc_status_file|grep "Cached Files"|awk '{print $4 " " $5}'|sed -e 's/(//' -e 's/)//')        
                 ;;
               hits)
                  cat $apc_status_file|grep  "Hits"|head -1|awk '{print $2}' 
                 ;;
              phits)
                  cat $apc_status_file|grep "Free"|head -1|awk '{print $7}'|sed -e 's/(//' -e s'/)//' -e 's/%//'
                 ;;
             misses)
                  cat $apc_status_file|grep  "Misses"|head -1|awk '{print $2}'
                 ;;
       request_rate)
                  cat $apc_status_file|grep  "Request Rate"|head -1|awk '{print $5}'
                 ;;        
           hit_rate)
                  cat $apc_status_file|grep "Hit Rate"|head -1|awk '{print $3}'
                 ;;
          miss_rate)
                  cat $apc_status_file|grep "Miss Rate"|head -1| awk '{print $3}'
                 ;;
        insert_rate)
                  cat $apc_status_file|grep "Insert Rate"|head -1| awk '{print $3}'
                 ;;
   cache_full_count) 
                  cat $apc_status_file|grep "Cache full count"|head -1|awk '{print $4}'
                 ;;
           shm_size)
                   #apc.shm_size can be 400M or 2G , convert M or G to Bytes
                   shm=$(cat $apc_status_file|grep "apc.shm_size"|head -1| awk '{print $2}')
                   if [ $(echo "$shm"|grep 'M$') ];then 
                     size=$(echo $shm|sed 's/M//')
                     echo "$size * 1024 * 1024"|bc
                   elif [ $(echo "$shm"|grep 'G$') ];then
                     size=$(echo $shm|sed 's/G//')
                     echo "$size * 1024 * 1024 * 1024"|bc
                   fi
                 ;;      
           mem_free) 			
                  convert_size $(cat $apc_status_file|grep "Free"|head -1|awk '{print $2 " " $3}')
                 ;;
           mem_used) 			
                  convert_size $(cat $apc_status_file|grep "Used"|head -1|awk '{print $2 " " $3}')
                 ;;
          mem_pused)
                  cat $apc_status_file|grep "Used"|head -1|awk '{print $4}'|sed -e 's/(//' -e 's/)//' -e 's/%//'
                 ;;
          
      fragmentation) 		
                  cat $apc_status_file|grep "Fragmentation:"|head -1|awk '{print $2}'|sed -e 's/%//'
                 ;;
                  *)
                  echo "please input the right parameter"
                 ;;     
esac

3.添加zabbix 子配置文件php-apc_status_zabbix.conf

UserParameter=php-apc[*],/usr/local/zabbix/bin/php-apc_status.sh $1


4.创建zabbix的PHP-APC 模板

zabbix监控PHP  APC缓存

相关内容

热门资讯

美国这次,真没占到任何便宜 看来,美国这次,真没占到任何便宜。我之前说过,美国重新定义了什么是“自卫”、什么是“停火”,现在是美...
浙江能工取得低能耗夜景照明装置... 国家知识产权局信息显示,浙江能工建设集团有限公司取得一项名为“一种低能耗夜景照明装置”的专利,授权公...
芯片三巨头齐聚!COMPUTE... 来源:市场资讯 (来源:财联社) 《科创板日报》5月30日讯 6月1日至5日,COMPUTEX 20...
全国科技工作者日,向他们致敬! 中国教科文卫体工会 中国科学院工会 联合开展 “建功‘十五五’ 科创向未来 ——致敬新时代科技追梦人...
美防长:美伊谈判仍在继续,保留... △赫格塞思(资料图)当地时间5月30日,美国国防部长赫格塞思在新加坡香格里拉对话会上表示,美方力求美...
原创 华... 华为公布了一个名叫“韬定律”的东西。说出来你可能不信,这套新玩法,要把西方称霸了60年的芯片底层逻辑...
原创 华... 在华为畅享90 Plus和90 Pro Max取得出众的市场成绩之后,有消息指出,华为畅享90系列接...
一颗流星在美国马萨诸塞州上空爆... 当地时间5月30日,一颗流星在美国东北部马萨诸塞州近海上空爆炸,并引发巨响。该州多地居民均听到爆炸声...
鸿蒙智家框架合作协议签约仪式在... 5月29日,鲁班兄弟装饰工程有限公司与华为终端有限公司在华为云南区域总部举行鸿蒙智家框架合作协议签约...
中国科学院工程热物理所在超临界... 以超临界二氧化碳(S-CO₂)为代表的新型超临界流体正以其独特优势,在制冷、发电、储能等领域拓展应用...