zabbix监控PHPAPC缓存-创新互联

参考文章

创新互联网站建设服务商,为中小企业提供成都网站设计、做网站服务,网站设计,网站托管、服务器租用等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联。

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缓存

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:zabbix监控PHPAPC缓存-创新互联
链接分享:http://pwwzsj.com/article/iscci.html