zabbix监控php-fpm

zabbix监控php-fpm

   张吉吉     2019年11月28日 05:18     1937    

1、配置php-fpm

使用zabbix去监控php-fpm是需要在php-fpm的配置文件中去配置的。

我的php-fpm的配置文件的位置/usr/local/php/etc/php-fpm.d/www.conf

默认这个参数是不被设置的,只要将注释取消就行。

1.png

 

2、配置nginx

需要在nginx配置上能够访问php status的链接。

location ~ ^/php_status$ {

        fastcgi_pass 192.168.0.220:9000;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi.conf;

}

添加好后重启nginx

service nginx restart

访问下:

2.png

 

3、在zabbix-agent中添加信息

(1)配置文件

和监控其他组件一个道理,需要在配置文件中添加监控信息。

在被监控的主机上的zabbix-agent.conf中添加以下字段:

Include=/etc/zabbix/zabbix_agentd.d/*.conf

让zabbix-agent可以加载zabbix_agentd.d/*.conf的文件

在/etc/zabbix/zabbix_agentd.d中添加userparameter_php.conf文件

加入下边语句:

UserParameter=idle.processe,/etc/zabbix/scripts/php_status.sh idle

UserParameter=total.processes,/etc/zabbix/scripts/php_status.sh total

UserParameter=active.processes,/etc/zabbix/scripts/php_status.sh active

UserParameter=max.active.processes,/etc/zabbix/scripts/php_status.sh mactive

UserParameter=listen.queue.len,/etc/zabbix/scripts/php_status.sh listenqueuelen

UserParameter=listen.queue,/etc/zabbix/scripts/php_status.sh listenqueue

UserParameter=start.since,/etc/zabbix/scripts/php_status.sh since

UserParameter=accepted.conn,/etc/zabbix/scripts/php_status.sh conn

UserParameter=max.children.reached,/etc/zabbix/scripts/php_status.sh reached

UserParameter=slow.requests,/etc/zabbix/scripts/php_status.sh requests

UserParameter=max.listen.queue,/etc/zabbix/scripts/php_status.sh maxlistenqueue

(2)添加脚本

因为上边语句是在/etc/zabbix/scripts目录中读取的脚本,所以我将在/etc/zabbix/scripts中创建文件php_status.sh,并将下边内容写入文件。

脚本的大概意思就是去访问配置好的php status的地址,然后获取对应的数据。

#!/bin/bash

#check php-fpm status

ip=192.168.0.220

port=80

function idle()  {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "idle processes"|awk '{print $3}'

}

function active() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "active processes"|awk '{print $3}'|grep -v "processes"

}

function total() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "total processes"|awk '{print $3}'|grep -v "processes"

}

function mactive() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "max active processes"|awk '{print $4}'

}

function conn() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "accepted conn"|awk '{print $3}'

}

function since() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "start since"|awk '{print $3}'

}

function slow() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "slow requests"|awk '{print $3}'

}

function listenqueue() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "listen queue:"|grep -v "max"|awk '{print $3}'

}

function maxlistenqueue() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "max listen queue:"|awk '{print $4}'

}

function listenqueuelen() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "listen queue len:"|awk '{print $4}'

}

function maxchildren() {

    /usr/bin/curl http://$ip:$port/php_status 2>/dev/null|grep "max children reached:"|awk '{print $4}'

}

$1

 

4、在zabbix server上测试

使用命令

zabbix_get –s 192.168.0.220 –k idle.processe

nginx_status[键值],输入对应的键值即可获取对应的数据

示例:

3.png

5、在zabbix server上添加监控

(1)在configuration中的Templates添加模板

4.png

5.png

(2)添加应用集

6.png

7.png

8.png

(4)定义图形

9.png

最后在从主机中添加此模板即可。


文章评论

0

其他文章