1. 程式人生 > >基於zabbix自動化線上實戰 基礎篇 -- Nginx監控詳解

基於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監控新增已經完成。

關注微信: