基於zabbix自動化線上實戰 基礎篇 -- Nginx監控詳解
一、nginx監控說明:
1、監控指標:
基本活動指標
錯誤指標
效能指標
2、nginx 處理請求流程(圖形):
註釋:Accepts(接受)、Handled(已處理)、Requests(請求數)是一直在增加的計數器。Active(活躍)、Waiting(等待)、Reading(讀)、Writing(寫)隨著請求量而增減
名稱 |
描述 |
|
Accepts(接受) |
NGINX 所接受的客戶端連線數 |
資源: 功能 |
Handled(已處理) |
成功的客戶端連線數 |
資源: 功能 |
Active(活躍) |
當前活躍的客戶端連線數 |
資源: 功能 |
Dropped(已丟棄,計算得出) |
丟棄的連線數(接受 – 已處理) |
工作:錯誤* |
Requests(請求數) |
客戶端請求數 |
工作:吞吐量 |
NGINX worker 程序接受 OS 的連線請求時 Accepts 計數器增加,而Handled 是當實際的請求得到連線時(通過建立一個新的連線或重新使用一個空閒的)。這兩個計數器的值通常都是相同的,如果它們有差別則表明連線被Dropped, 往往這是由於資源限制,比如已經達到 NGINX 的worker_connections的限制。
二、監控配置:
1、主要是基於nginx的status模組.在編譯安裝時候加上--with-http_stub_status_module.模組編譯
2、修改配置檔案開啟nginx_status:
location /nginx_status {
stub_status on;
access_log off;
allow 192.168.1.100; 訪問IP
deny all;
}
3、開啟web 監控:
註釋:
Active:當前活躍的連線數。
Accepts:接受的請求數
Handled:處理的請求數(正常伺服器響應,這兩項應該是可以相等的)
Requests:客戶端處理的請求數。(吞吐量)
Reading:當接收到請求時,連線離開 Waiting 狀態,並且該請求本身使 Reading 狀態計數增加。在這種狀態下 NGINX 會讀取客戶端請求首部。請求首部是比較小的,因此這通常是一個快速的操作。
Writing:請求被讀取之後,其使 Writing 狀態計數增加,並保持在該狀態,直到響應返回給客戶端。這意味著,該請求在Writing 狀態時, 一方面 NGINX 等待來自上游系統的結果(系統放在 NGINX “後面”),另外一方面,NGINX也在同時響應。請求往往會在 Writing 狀態花費大量的時間。
Waiting:活躍的連線也可以處於 Waiting 子狀態,如果有在此刻沒有活躍請求的話。新連線可以繞過這個狀態並直接變為到 Reading 狀態,最常見的是在使用“accept filter(接受過濾器)” 和 “deferred accept(延遲接受)”時,在這種情況下,NGINX 不會接收worker 程序的通知,直到它具有足夠的資料才開始響應。如果連線設定為 keep-alive ,那麼它在傳送響應後將處於等待狀態
三、新增監控:
1、新增指令碼:
[[email protected]]# cat nginx_status.sh
#!/bin/bash
# Script to fetch nginx statuses fortribily monitoring systems
# Author: xiaoluo
function active {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| grep 'Active' | awk'{print $NF}'
}
function reading {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| grep 'Reading' | awk'{print $2}'
}
function writing {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| grep 'Writing' | awk'{print $4}'
}
function waiting {
/usr/bin/curl "http://192.168.10.234/status"2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| awk NR==3 | awk'{print $1}'
}
function handled {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| awk NR==3 | awk'{print $2}'
}
function requests {
/usr/bin/curl"http://192.168.10.234/status" 2>/dev/null| awk NR==3 | awk'{print $3}'
}
# Run the requested function
$1
2、zabbix配置檔案新增自定義監控:
UserParameter=nginx[*],/usr/local/zabbix/scripts/nginx_status.sh$1
3、web介面新增item即可,以連結狀態為例(類似的新增即可):
總結,匯出nginx監控新增已經完成。
關注微信: