目錄
1.監控Nginx服務狀態信息
(1)通過Nginx監控模塊,監控Nginx的7種狀態
(2)開啟Nginx狀態模塊
(3)配置監控項
(4)創建模板
(5)用默認鍵值添加Nginx-status端口監控項,并配置觸發器
(6)基于模板創建圖形
(7)模板創建完畢后關聯被監控的主機
2.監控PHP服務狀態信息
(1)安裝PHP服務配置
(2)配置PHP狀態信息
(3)修改Nginx配置文件
(4)自定義監控項
(5)創建自定義PHP模板
(6)關聯模板到監控主機
(7)測試PHP訪問
這篇文章繼續給大家介紹zabbix監控,監控Nginx、PHP等服務,其實非常簡單,難點在于如何去取這個值,包括監控業務,難點在于思路是否清晰,思維是否活躍,如何去進行判斷是否有這個業務,并且業務正常運行。
1.監控Nginx服務狀態信息
(1)通過Nginx監控模塊,監控Nginx的7種狀態
Nginx 的狀態模塊展示了七種不同的狀態(四種計數器和三種狀態)。以下是這七種狀態的含義:
1. active:當前 Nginx 正在處理的連接數,包括等待請求處理或正在響應請求的連接數。
2. accepts:Nginx 啟動后已經接受的連接總數。
3. handled:Nginx 工作進程已成功處理的連接總數。與 accepts 計數器不同,此計數器可能會多個小于 accepts 數量,在某些情況下,客戶端可能已經斷開了連接而無法正常處理。
4. requests:已經接收到、處理并響應的請求數量,該值通常應與 handled 值相等。
5. reading:當前正在讀取客戶端請求頭部字段的連接數。
6. writing:當前正在向客戶端發送響應數據的連接數。
7. waiting:空閑 keep-alive 連接,既沒有讀也沒有寫。可以處理下一個請求的連接。
通過理解這些狀態可以幫助我們了解 Nginx 正在處理哪些連接,并且在調試和優化性能時非常有用。 當 active 連接數隨著來自客戶端的請求增加而增加時,可能需要考慮優化配置以確保足夠的性能水平和穩定性。
(2)開啟Nginx狀態模塊
[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
server {listen 88;location /nginx_status {stub_status;}
}
[root@Web01 ~]# systemctl restart nginx
(3)配置監控項
[root@Web01 ~]# curl -s 127.0.0.1:88/nginx_status
Active connections: 1
server accepts handled requests4 4 3
Reading: 0 Writing: 1 Waiting: 0
用awk以此取值,并設置為key
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.connections,curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'
UserParameter=nginx.accepts,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'
UserParameter=nginx.handled,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'
UserParameter=nginx.requests,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'
UserParameter=nginx.Reading,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $2}'
UserParameter=nginx.Writing,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $4}'
UserParameter=nginx.Waiting,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $6}'
[root@Web01 ~]# systemctl restart zabbix-agent.service
測試取值
[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.connections
1
(4)創建模板
基于模板創建監控項,也可以先添加監控項在復制到模板
其他六項也同理,不再截圖
(5)用默認鍵值添加Nginx-status端口監控項,并配置觸發器
配置觸發器
(6)基于模板創建圖形
(7)模板創建完畢后關聯被監控的主機
Web02同理
2.監控PHP服務狀態信息
(1)安裝PHP服務配置
上傳PHP RPM包,安裝
(2)配置PHP狀態信息
[root@Web01 ~]# cat /etc/php-fpm.d/www.conf|grep pm.status_path
pm.status_path = /status
[root@Web01 ~]# systemctl restart php-fpm
(3)修改Nginx配置文件
[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf
server {listen 88;location /nginx_status {stub_status;}location /status {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
[root@Web01 ~]# systemctl restart nginx
[root@Web01 ~]# curl 127.0.0.1:88/status
pool: www #pool的名稱
process manager: dynamic #進程管理方式,現今大多都為dynamic,不要使用static
start time: 16/May/2023:21:30:31 +0800 #php-fpm上次啟動的時間
start since: 133 #php-fpm已運行了多少秒
accepted conn: 1 #pool接受到的請求數
listen queue: 0 #處于等待狀態中的連接數,如果不為0,需要增加php-fpm進程數
max listen queue: 0 #從php-fpm啟動到現在處于等待連接的最大數量
listen queue len: 128 #處于等待連接隊列的套接字大小
idle processes: 4 #處于空閑狀態的進程數
active processes: 1 #處于活動狀態的進程數
total processes: 5 #進程總數
max active processes: 1 #從php-fpm啟動到現在最多有幾個進程處于活動狀態
max children reached: 0 #當php-fpm試圖啟動更多的children進程時,卻達到了進程數的限制,達到一次記錄一次,如果不為0,需要增加php-fpm pool進程的最大數
slow requests: 0 #當啟用了php-fpm slow-log功能時,如果出現了php-fpm慢請求,這個計數器會增加,一般不當的mysql查詢會觸發這個值
(4)自定義監控項
[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/php.conf
UserParameter=fpm.accepted,curl -s 127.0.0.1:88/status|grep accepted|awk '{print $NF}'
UserParameter=fpm.idle,curl -s 127.0.0.1:88/status|grep idle|awk '{print $NF}'
UserParameter=fpm.active,curl -s 127.0.0.1:88/status|grep ^active|awk '{print $NF}'
UserParameter=fpm.total,curl -s 127.0.0.1:88/status|grep total|awk '{print $NF}'
UserParameter=fpm.children,curl -s 127.0.0.1:88/status|grep children|awk '{print $NF}'
[root@Web01 ~]# systemctl restart zabbix-agent
[root@Web01 ~]# zabbix_agentd -p | grep ^fpm #客戶端查看能否正常獲取值
zabbix_agentd [7902]: Warning: EnableRemoteCommands parameter is deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead
fpm.accepted [t|56]
fpm.idle [t|5]
fpm.active [t|1]
fpm.total [t|6]
fpm.children [t|0][root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.accepted #服務端查看能否正常獲取客戶端的值
62
(5)創建自定義PHP模板
基于模板添加監控項
依次添加其他配置項,除自定義的外再多添加個端口監控,zabbix自帶的
基于模板配置觸發器
3分鐘之內受到限制次數的最大數等于5則報警?
基于模板配置圖形
(6)關聯模板到監控主機
(7)測試PHP訪問
[root@Web02 ~]# for i in `seq 100`;do ab -n2000 -c20 127.0.0.1:88/status;done
發現fpm連接數上漲?