以源码安装为例:
目录环境:
/usr/local/php/etc/php-fpm.conf
/usr/local/nginx/conf/nginx.conf
------------------------------------------------------------
一、修改配置
# vim /usr/local/php/etc/php-fpm.conf
末行添加:
pm.status_path = /phpfpm_status
# pkill php-fpm
# /usr/local/php/sbin/php-fpm# vim /usr/local/nginx/conf/nginx.conf
添加:
server {
listen 127.0.0.1:80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 10.1.12.0/24;
deny all;
}
location ~ ^/(phpfpm_status)$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
}
重启nginx
# /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf -s reload
二、监控脚本
(1)nginx监控脚本
#!/usr/bin/env python
#__*__coding:utf8__*__
import urllib2,sys,os
def Nginx_status():
nginx_stats_dirt = {}
nginx_url = "http://127.0.0.1/nginx_status"
req = urllib2.Request(nginx_url)
response = urllib2.urlopen(req)
request_list = response.read().split(" ")
nginx_stats_dirt["active"] = request_list[0].split()[2]
nginx_stats_dirt["accepts"] = request_list[2].split()[0]
nginx_stats_dirt["handled"] = request_list[2].split()[1]
nginx_stats_dirt["requests"] = request_list[2].split()[2]
nginx_stats_dirt["reading"] = request_list[3].split()[1]
nginx_stats_dirt["writing"] = request_list[3].split()[3]
nginx_stats_dirt["waiting"] = request_list[3].split()[5]
if len(sys.argv) is not 2 or str(sys.argv[1]) not in nginx_stats_dirt.keys():
print "Usage: nginx_stauts.py $1 {active|accepts|handled|requests|reading|writing|waiting}"
exit(1)
else:
print nginx_stats_dirt[str(sys.argv[1])]
if __name__ == '__main__':
try:
Nginx_status()
except urllib2.URLError,e:
print "%s,there may be something wrong with nginx!" %e
(2)php监控脚本
#!/usr/bin/env python
#__*__coding:utf8__*__
import urllib2,sys,os
def Php_status():
php_status_dirt = {}
request_status_list = []
php_status_list = ["pool","process_manager","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"]
php_url = 'http://127.0.0.1/phpfpm_status'
req = urllib2.Request(php_url)
response = urllib2.urlopen(req)
request_list = response.read().split()
position=[1,4,11,14,17,21,25,28,31,34,38,42,45]
for i in position:
request_status_list.append(request_list[i])
for i in range(len(php_status_list)):
php_status_dirt[php_status_list[i]] = request_status_list[i]
if len(sys.argv) is not 2 or str(sys.argv[1]) not in php_status_dirt.keys():
print "Usage: php_stauts.py $1 {pool|process_manager|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}"
exit(1)
else:
print php_status_dirt[str(sys.argv[1])]
if __name__ == '__main__':
try:
Php_status()
except urllib2.URLError,e:
print "%s,there may be something wrong with php!" %e
三、配置监控扩展
被监控主机端,zabbix_agentd.conf文件中添加上这个:
UserParameter=phpfpm[*],/etc/zabbix/scripts/phpfpm_status.py $1
UserParameter=nginx[*],/etc/zabbix/scripts/nginx_status.py $1
四、测试
[root@zabbix_server-12-155 ~]# zabbix_get -s 10.1.12.177 -k phpfpm[s]
Usage: php_stauts.py $1 {pool|process_manager|start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}
[root@zabbix_server-12-155 ~]# zabbix_get -s 10.1.12.177 -k phpfpm[pool]
www