zabbix新增php監控
本文主要是針對與新增php-fpm方法,生產環境有個坑,填下,初始環境不是我做的,我是來填坑的,
以原始碼安裝為例:
目錄環境:
/usr/local/php/etc/php-fpm.conf
/usr/local/nginx/conf/nginx.conf
————————————————————
一、開始按照書上配的,發現沒有sock檔案,當然訪問就報錯了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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;
deny all;
}
location ~ ^/(phpfpm_status)$ {
include fastcgi_params;
fastcgi_pass unix: /tmp/php-cgi .sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
} # curl 127.0.0.1/phpfpm_status |
502報錯
檢視了一下nginx的error日誌:
1
|
*100011 connect() to unix: /tmp/php-fcgi .sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /phpfpm_status HTTP/1.1" , upstream: "fastcgi://unix:/tmp/php-fcgi.sock:" , host: "127.0.0.1"
|
二、查了查網上發現:
其中fastcgi_pass為配置nginx與php-fpm的互動路徑,一般有兩種方式
1
2
|
sock方式:fastcgi_pass unix: /tmp/php-cgi .sock;
http方式:fastcgi_pass 127.0.0.1:9000; |
任選其中一種即可,但必須和php-fpm的配置一致。
三、解決方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
重啟nginx # 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;
deny all;
}
location ~ ^/(phpfpm_status)$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
} # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload # curl 127.0.0.1/phpfpm_status pool: www process manager: dynamic start time : 20 /Jun/2017 :17:22:19 +0800
start since: 2245 accepted conn: 40 listen queue: 0 max listen queue: 0 listen queue len: 128 idle processes: 1 active processes: 1 total processes: 2 max active processes: 2 max children reached: 0 slow requests: 0 可以了 php-fpm status狀態值詳解 pool:fpm池子名稱,大多數為www process manager:程式管理方式,值:static,dynamic or ondemand start time :啟動日期,如果reload了php-fpm,時間會更新
start since:執行時長 accepted conn:當前池子接受的請求數 listen queue:請求等待佇列,如果這個值不為0,那麼要增加FPM的程式數量 max listen queue:請求等待佇列最高的數量 listen queue len:socket等待佇列長度 idle processes:空閒程式數量 active processes:活躍程式數量 total processes:總程式數量 max active processes:最大的活躍程式數量(FPM啟動開始算) max children reached:程式最大數量限制的次數,如果這個數量不為0,那說明你的最大程式數量太小了,需要設定大點 |
四、監控指令碼:
(1)shell指令碼,此指令碼是抄襲的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#!/bin/bash source /etc/bashrc > /dev/null 2>&1
source /etc/profile > /dev/null 2>&1
LOG= /var/log/zabbix/phpfpmstatus .log
curl -s http: //localhost/phpfpmstatus >$LOG
pool(){ awk `/pool/ {print $NF}` $LOG
} process_manager(){ awk `/process manager/ {print $NF}` $LOG
} start_since(){ awk `/start since:/ {print $NF}` $LOG
} accepted_conn(){ awk `/accepted conn:/ {print $NF}` $LOG
} listen_queue(){ awk `/^(listen queue:)/ {print $NF}` $LOG
} max_listen_queue(){ awk `/max listen queue:/ {print $NF}` $LOG
} listen_queue_len(){ awk `/listen queue len:/ {print $NF}` $LOG
} idle_processes(){ awk `/idle processes:/ {print $NF}` $LOG
} active_processes(){ awk `/^(active processes:)/ {print $NF}` $LOG
} total_processes(){ awk `/total processes:/ {print $NF}` $LOG
} max_active_processes(){ awk `/max active processes:/ {print $NF}` $LOG
} max_children_reached(){ awk `/max children reached:/ {print $NF}` $LOG
} case "$1" in
pool) pool
;;
process_manager) process_manager
;;
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
;;
*) echo "Usage: $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}"
esac |
(2)python指令碼,這個是自己寫的,寫的不好,還望海涵。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/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" ]
php_url = `http://127.0.0.1/phpfpm_status`
req = urllib2.Request(php_url)
response = urllib2.urlopen(req)
request_list = response.read().split()
# request_status_list=[request_list[1],request_list[4],request_list[11],request_list[14],request_list[17],request_list[21],request_list[25],request_list[28],request_list[31],request_list[34],request_list[38],request_list[42],request_list[45]]
#以下數字位置都是上面截出來的,為了美觀,將位置作為了列表,在用位置列表定位request_list中的值[`www`, `dynamic`, `57795`, `5424`, `0`, `0`, `128`, `2`, `1`, `3`, `3`, `0`, `0`, `www`, `dynamic`, `57795`, `5424`, `0`, `0`, `128`, `2`, `1`, `3`, `3`, `0`, `0`],並追加到request_status_list裡面
#position--->request_list--->(request_status_list+php_status_list)--->php_status_dirt
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}"
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檔案中新增上這個:
1
|
UserParameter=phpfpm[*], /etc/zabbix/scripts/phpfpm_status .py $1
|
或者
1
|
UserParameter=phpfpm[*], /etc/zabbix/scripts/phpfpm_status .sh $1
|
六、將指令碼放置在/etc/zabbix/scripts/目錄下
1
|
chmod +x phpfpm.py
|
七、測試
1
2
3
4
|
[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 |
接下來就是新增監控項了,模版我是在這下的https://www.ttlsa.com/zabbix/zabbix-monitor-php-fpm-status/
本文轉自 wangpengtai 51CTO部落格,原文連結:http://blog.51cto.com/wangpengtai/1940563,如需轉載請自行聯絡原作者
相關文章
- Zabbix新增主機監控-zabbix+grafana從零設計自己的監控平臺Grafana
- zabbix監控
- zabbix6.2新增mysql資料庫監控MySql資料庫
- zabbix5.0-04-給主機新增監控項
- Zabbix監控ActiveMQMQ
- Zabbix監控之遷移Zabbix
- Linux下Zabbix5.0 LTS新增自定義監控項Linux
- zabbix監控平臺
- 【監控】Zabbix安裝
- zabbix的主動模式監控和zabbix-proxy分散式監控模式分散式
- 【Zabbix】如何使用Zabbix進行IPMI監控?
- Zabbix監控安裝部署
- zabbix監控windows DHCP serverWindowsServer
- Zabbix實戰--監控NginxNginx
- Zabbix監控使用進階
- Zabbix監控平臺的搭建
- Zabbix透過Orabbix監控OracleOracle
- zabbix監控閱讀目錄
- Zabbix監控 MS SqlServer2019SQLServer
- 使用Zabbix + Python對Mysql監控PythonMySql
- Zabbix Agent active主動模式監控模式
- zabbix清除歷史監控資料
- Zabbix監控神通資料庫教程資料庫
- 五、自定義Zabbix監控專案
- Zabbix企業分散式監控工具分散式
- Zabbix監控阿里雲SLB操作指引阿里
- 一、自動化監控利器-Zabbix
- Zabbix學習(五)之Zabbix Agent Active 主動模式監控模式
- php效能監控PHP
- zabbix監控頁面自動截圖
- Zabbix+Python監控Oracle資料庫PythonOracle資料庫
- python獲取zabbix監控項圖形Python
- Zabbix如何監控Oracle的告警日誌Oracle
- 分散式監控系統之Zabbix proxy分散式
- Linux監控平臺介紹 zabbix監控介紹 安裝zabbix 忘記Admin密碼如何做Linux密碼
- zabbix 7.0 新增功能亮點(三)— 監控項支援SNMP Hex資料預處理
- 分散式監控系統之Zabbix主動、被動及web監控分散式Web
- 【Zabbix】使用zabbix 3.4自帶Mysql模板,監控Redhat 7.0上的MysqlMySqlRedhat
- Zabbix搭建-zabbix+Grafana從零設計自己的監控平臺Grafana