zabbix监控php-fpm

作用:

    监控php-fpm的状态,

    可以对(slow requests)缓慢请求的做告警处理,

    可以对(max children reached )大到进程最大数量限制的次数也做 告警处理等

相关工具的版本和系统信息

系统:CentOS6.8

zabbix-agent :4.0

zabbix-server: 4.2.3

nginx:1.6

php:5.4

准备工作

1、进入到php目录:cd /data/software/php

2、查看有没有log目录,没有就创建 mkdir log

3、先检查有没有打开php-fpm_status,没有自己加上下面这句

    pm.status_path = /php_status

4、为了更新详细给开发查看,打开慢日志请求

slowlog = log/slow_log.log  # 日志文件

request_slowlog_timeout = 1  # 多少秒才算是慢请求

5、保存退出,重新加载php,service php-fpm reload,加载过程注意看看有没有报错

6、然后检查状态  ps ax | grep php

7、进入nginx目录:cd /data/software/nginx

8、添加php-fpm状态网页

	server {
		listen 80;
		server_name empty;
		root /dev/null;

            location ~ \.php|^/php_status$ {
                include fastcgi.conf;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_connect_timeout 180;
                fastcgi_read_timeout 600;
                fastcgi_send_timeout 600;
                allow 127.0.0.1;
                deny all;
                expires off;
                access_log off;
            }
    }

9、重新加载nginx,service nginx reload

10、检查网页:curl http://127.0.0.1/php_status

pool:                 nobody    # PHP用户
process manager:      static   # 进程管理方式,现今大多都为dynamic,不要使用static
start time:           11/Jul/2019:09:57:01 +0800
start since:          3563          # 已运行了多少秒
accepted conn:        1682     # pool接收到的请求数
listen queue:         0              # 处于等待状态中的连接数
max listen queue:     0          # 从php-fpm启动到现在处于等待连接的最大数量
listen queue len:     128        # 处于等待连接队列的套接字大小
idle processes:       79          # 处于空闲状态的进程数
active processes:     1          # 处于活动状态的进程数
total processes:      80          # 进程总数
max active processes: 6       # 从php-fpm启动到现在最多有几个进程处于活动状态
max children reached: 0       # 当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数
slow requests:        0             # php-fpm慢请求数

配置zabbix

1、检查配置目录放在哪

grep 'Include=' /etc/zabbix/zabbix_agentd.conf 
# Include=
Include=/data/software/zabbix/conf/*.conf
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

2、进入该目录/data/software/zabbix/conf/

3、添加配置信息 vim php-fpm_status.conf

UserParameter=php_status[*],/bin/bash /data/software/zabbix/scripts/php_status.sh "$1"

4、添加获取php-fpm的状态信息脚本:vim /data/software/zabbix/scripts/php_status.sh

#!/bin/bash

PHPFPM_COMMAND=$1
PHPFPM_PORT=80  #根据监听不同端口进行调整

function start_since() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^start since:/ {print $NF}'
}

function accepted_conn() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^accepted conn:/ {print $NF}'
}

function listen_queue() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue:/ {print $NF}'
}

function max_listen_queue() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max listen queue:/ {print $NF}'
}

function listen_queue_len() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^listen queue len:/ {print $NF}'
}

function idle_processes() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^idle processes:/ {print $NF}'
}

function active_processes() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^active processes:/ {print $NF}'
}

function total_processes() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^total processes:/ {print $NF}'
}

function max_active_processes() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max active processes:/ {print $NF}'
}

function max_children_reached() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^max children reached:/ {print $NF}'
}

function slow_requests() {
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/php_status" |awk '/^slow requests:/ {print $NF}'
}

case $PHPFPM_COMMAND in
    start_since)
        start_since ;;

    accepted_conn)
    	accepted_conn ;;

    listen_queue)
    	listen_queue ;;

    max_listen_queue)
    	max_listen_queue ;;

    listen_queue_len)
    	listen_queue_len ;;

    idle_processes)
    	idle_processes ;;

    active_processes)
    	active_processes ;;

    total_processes)
        total_processes ;;

    max_active_processes)
        max_active_processes ;;

    max_children_reached)
        max_children_reached ;;

    slow_requests)
        slow_requests ;;

    *)
    	echo $"USAGE:$0 {start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached|slow_requests}"

esac

5、测试:sh /data/software/zabbix/scripts/php_status.sh max_children_reached

6、重启zabbix-agent:service zabbix-agent restart

7、添加模板

8、添加监控项

9、添加触发器

 

添加的结果如下

10、添加所需要监控的服务器,然后就完成了

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值