欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:運(yùn)維 NGINX

柚子快報激活碼778899分享:運(yùn)維 NGINX

http://yzkb.51969.com/

二十 nginx 監(jiān)控

1 nginx的基礎(chǔ)監(jiān)控

進(jìn)程監(jiān)控端口監(jiān)控

注意: 這兩個是必須要加在zabbix監(jiān)控,加觸發(fā)器有問題及時告警。

web 服務(wù)器 nginx 以其高性能與抗并發(fā)能力越來越多的被用戶使用

作為一款服務(wù)器產(chǎn)品,其運(yùn)行狀態(tài)是運(yùn)維密切關(guān)注的,因此,對 nginx 的實(shí)時監(jiān)控就必須要關(guān)注的了

nginx 提供了 ngx_http_stub_status_module,ngx_http_reqstat_module模塊,這個模塊提供了基本的監(jiān)控功能

作為官方企業(yè)版的 nginx plus 通過 ngx_http_status_module 提供了更加完善的監(jiān)控功能: http://demo.nginx.com/status.html

2 監(jiān)控的主要指標(biāo)

我們需要對以下主要的指標(biāo)進(jìn)行監(jiān)控:

2.1 基本活躍指標(biāo)

Accepts(接受)、Handled(已處理)、Requests(請求數(shù))是一直在增加的計數(shù)器。Active(活躍)、Waiting(等待)、Reading(讀)、Writing(寫)隨著請求量而增減。

名稱描述指標(biāo)類型Accepts(接受)NGINX 所接受的客戶端連接數(shù)資源: 功能Handled(已處理)成功的客戶端連接數(shù)資源: 功能Dropped(已丟棄,計算得出)丟棄的連接數(shù)(接受 - 已處理)工作:錯誤*Requests(請求數(shù))客戶端請求數(shù)工作:吞吐量

NGINX worker 進(jìn)程接受 OS 的連接請求時 Accepts 計數(shù)器增加,而Handled 是當(dāng)實(shí)際的請求得到連接時(通過建立一個新的連接或重新使用一個空閑的)。這兩個計數(shù)器的值通常都是相同的,如果它們有差別則表明連接被Dropped,往往這是由于資源限制,比如已經(jīng)達(dá)到 NGINX 的worker_connections的限制。

2.2 每秒請求數(shù) – QPS

按照固定時間間隔采樣請求數(shù)據(jù),計算出單位時間的請求量可以看到你的 web 服務(wù)器的請求情況

通過持續(xù)的 QPS 監(jiān)控,可以立刻發(fā)現(xiàn)是否被惡意攻擊或?qū)Ψ?wù)的可用性進(jìn)行評估

雖然當(dāng)問題發(fā)生時,通過 QPS 不能定位到確切問題的位置,但是他卻可以在第一時間提醒你環(huán)境可能出問題了

2.3 服務(wù)器錯誤率

通過監(jiān)控固定時間間隔內(nèi)的錯誤代碼(4XX代碼表示客戶端錯誤,5XX代碼表示服務(wù)器端錯誤),可以了解到客戶端收到的結(jié)果是否是正確的錯誤率突然的飆升很可能是你的網(wǎng)站漏洞發(fā)出的信號

如果你希望通過 access log 分析錯誤率,那么你需要配置 nginx 的日志模塊,讓 nginx 將響應(yīng)碼寫入訪問日志

2.4 請求處理時間

請求處理時間也可以被記錄在 access log 中,通過分析 access log,統(tǒng)計請求的平均響應(yīng)時間,通過持續(xù)觀察,可以發(fā)現(xiàn)上游服務(wù)器的問題

3、指標(biāo)的收集

介紹了這么多的監(jiān)控指標(biāo),事實(shí)上,上面介紹的僅僅是基本的監(jiān)控指標(biāo),針對實(shí)際的情況,還有很多指標(biāo)十分具有監(jiān)控的必要

那么,怎么去收集這些指標(biāo)進(jìn)行監(jiān)控呢?

通過在編譯時加入 nginx 的 ngx_http_stub_status_module 模塊我們可以實(shí)時監(jiān)控以下基本的指標(biāo):

3.1 nginx Stub Status 監(jiān)控模塊安裝

先使用命令查看是否已經(jīng)安裝這個模塊:

# -V大寫會顯示版本號和模塊等信息、v小寫僅顯示版本信息

[root@localhost ~]# nginx -V

如果沒有此模塊,需要重新安裝,編譯命令如下:

./configure –with-http_stub_status_module

具體的使用方法是在執(zhí)行 ./configure 時,指定 --with-http_stub_status_module,然后通過配置:

server {

listen 80;

server_name localhost;

location /nginx-status {

stub_status on;

access_log on;

allow 10.0.105.207; #允許本地電腦訪問

deny all;

}

}

此處默認(rèn)只有本地訪問,如果遠(yuǎn)程查看需要加相關(guān)的IP或者干脆去掉Deny all即可。加密文件可以使用#htpasswd -c /usr/nginx/conf hxb 命令來創(chuàng)建。配置完成后需要重啟Nginx服務(wù)。狀態(tài)配置只能是針對某個Nginx服務(wù)。目前Nginx還無法做到針對單個站點(diǎn)進(jìn)行監(jiān)控。

3.2 nginx 狀態(tài)查看

配置完成后在瀏覽器中輸入http://10.0.105.207/nginx-status 查看(或者用 curl localhost/nginx_status),顯示信息如下:

Active connections: 2

server accepts handled requests

26 26 48

Reading: 0 Writing: 1 Waiting: 1

Accepts(接受)、Handled(已處理)、Requests(請求數(shù))是一直在增加的計數(shù)器。Active(活躍)、Waiting(等待)、Reading(讀)、Writing(寫)隨著請求量而增減

3.3 Stub Status 參數(shù)說明

active connections – 活躍的連接數(shù)量

server accepts handled requests — 總共處理了1075個連接 , 成功創(chuàng)建1064次握手, 總共處理了6253個請求

每個連接有三種狀態(tài)waiting、reading、writing

reading —讀取客戶端的Header信息數(shù).這個操作只是讀取頭部信息,讀取完后馬上進(jìn)入writing狀態(tài),因此時間很短。

writing — 響應(yīng)數(shù)據(jù)到客戶端的Header信息數(shù).這個操作不僅讀取頭部,還要等待服務(wù)響應(yīng),因此時間比較長。

waiting — 開啟keep-alive后等候下一次請求指令的駐留連接.

正常情況下waiting數(shù)量是比較多的,并不能說明性能差。反而如果reading+writing數(shù)量比較多說明服務(wù)并發(fā)有問題。

當(dāng)用戶請求連接Nginx服務(wù)器時,accepts計數(shù)器會加一。且當(dāng)服務(wù)器處理該連接請求時,handled計數(shù)器同樣會加一。一般而言,兩者的值是相等的,除非達(dá)到了某些資源極限(如worker_connection的限制)。

用戶連接請求被處理,就會進(jìn)入 active 狀態(tài)。如果該連接沒有其他 request,則進(jìn)入 waiting 的子狀態(tài);如果有 request,nginx 會讀取 request 的 header,計數(shù)器 request 加一,進(jìn)入 reading 的子狀態(tài)。 reading 狀態(tài)持續(xù)時間非常短,header 被讀取后就會進(jìn)入 writing 狀態(tài)。事實(shí)上,直到服務(wù)器將響應(yīng)結(jié)果返回給用戶之前,該連接會一直保持 writing 狀態(tài)。所以說,writing 狀態(tài)一般會被長時間占用。

一旦 NGINX 成功處理一個連接時,連接會移動到Active狀態(tài),在這里對客戶端請求進(jìn)行處理:

Active狀態(tài)

Waiting: 活躍的連接也可以處于 Waiting 子狀態(tài),如果有在此刻沒有活躍請求的話。新連接可以繞過這個狀態(tài)并直接變?yōu)榈?Reading 狀態(tài),最常見的是在使用“accept filter(接受過濾器)” 和 “deferred accept(延遲接受)”時,在這種情況下,NGINX 不會接收 worker 進(jìn)程的通知,直到它具有足夠的數(shù)據(jù)才開始響應(yīng)。如果連接設(shè)置為 keep-alive ,那么它在發(fā)送響應(yīng)后將處于等待狀態(tài)。 Reading: 當(dāng)接收到請求時,連接離開 Waiting 狀態(tài),并且該請求本身使 Reading 狀態(tài)計數(shù)增加。在這種狀態(tài)下 NGINX 會讀取客戶端請求首部。請求首部是比較小的,因此這通常是一個快速的操作。 Writing: 請求被讀取之后,其使 Writing 狀態(tài)計數(shù)增加,并保持在該狀態(tài),直到響應(yīng)返回給客戶端。這意味著,該請求在 Writing 狀態(tài)時, 一方面 NGINX 等待來自上游系統(tǒng)的結(jié)果(系統(tǒng)放在 NGINX “后面”),另外一方面,NGINX 也在同時響應(yīng)。請求往往會在 Writing 狀態(tài)花費(fèi)大量的時間。

通常,一個連接在同一時間只接受一個請求。在這種情況下,Active 連接的數(shù)目 == Waiting 的連接 + Reading 請求 + Writing 。

怎么利用這些參數(shù)?

開源的 Nginx 提供的原始參數(shù)中,實(shí)時性的會比較有用,如 Active connections、Reading、Writing 以及 Waiting。這些數(shù)據(jù)能夠反映當(dāng)前 Nginx 的負(fù)載情況,方便在服務(wù)器出現(xiàn)問題時及時發(fā)現(xiàn)問題。而另一些數(shù)據(jù)由于不是狀態(tài)量,Nginx 無法計算當(dāng)前的量值而改做其統(tǒng)計數(shù),如 accepts、handled 和 requests。

對于維護(hù)網(wǎng)站人員,accepts、handled 和 requests 的統(tǒng)計值用處是不大的,值得參考的是短時間內(nèi)這三者數(shù)值的增量。這個短時間可以是一秒,如 accepts_per_second、handled_per_second 和 requests_per_second。一個簡單的做法就是每秒都去讀取這些參數(shù),返回一個和上一秒的差值就行。當(dāng)然,handled_per_second 替換成 dropped_per_second=accepts_per_second-handled_per_second 就更完美了。

通過這七個參數(shù),就可以從連接到請求全方位的監(jiān)控起 Nginx 的運(yùn)行狀態(tài)。為了方便檢測,對每次獲取的參數(shù)保留下來,然后按時間展現(xiàn)出來。下圖展示了 Nginx 在運(yùn)行時的參考數(shù)據(jù)。

3.4 Reqstat 模塊監(jiān)控

描述

ngx_http_reqstat_module 模塊這個模塊計算定義的變量,根據(jù)變量值分別統(tǒng)計 nginx 的運(yùn)行狀況。可以監(jiān)視的運(yùn)行狀況有:連接數(shù)、請求數(shù)、各種響應(yīng)碼范圍的請求數(shù)、輸入輸出流量、rt、upstream訪問等??梢灾付ǐ@取所有監(jiān)控結(jié)果或者一部分監(jiān)控結(jié)果。利用變量添加自定義監(jiān)控狀態(tài)。總的監(jiān)控狀態(tài)最大個數(shù)為50個?;厥者^期的監(jiān)控數(shù)據(jù)。設(shè)置輸出格式跟蹤請求,不受內(nèi)部跳轉(zhuǎn)的影響不要使用與響應(yīng)相關(guān)的變量作為條件,比如"$status"

編譯

默認(rèn)編入Tengine,可通過 --without-http_reqstat_module 編譯此模塊,或通過–with-http_reqstat_module=shared 編譯為so模塊。

使用so模塊加載的話,請確保其順序在"ngx_http_lua_module"之后??梢越柚?nginx -m"來確認(rèn)。

Syntax: req_status zone_name1 [zone_name2 [zone_name3 […]]] Default: none Context: http、srv、loc

開啟統(tǒng)計,可以指定同時統(tǒng)計多個目標(biāo),每一個zone_name對應(yīng)一個目標(biāo)。

Syntax: req_status_show [zone_name1 [zone_name2 […]]] Default: 所有建立的共享內(nèi)存目標(biāo) Context: loc

按格式返回統(tǒng)計結(jié)果??芍付ǚ祷夭糠帜繕?biāo)的統(tǒng)計結(jié)果。

Syntax: req_status_show_field field_name1 [field_name2 [field_name3 […]]] Default: all the fields, including user defined fields Context: loc

定義輸出格式。可以使用的字段:內(nèi)置字段,以上面的名字來表示;自定義字段,用變量表示。 'kv’總是每行的第一個字段。

Syntax: req_status_zone_add_indecator zone_name

v

a

r

1

[

var1 [

var1[var2 […]] Default: none Context: http

通過變量增加自定義字段,新增加的字段目前會展現(xiàn)在每行的末尾。

Syntax: req_status_zone_key_length zone_name length Default: none Context: http

定義某個共享內(nèi)存塊中key的最大長度,默認(rèn)值104。key中超出的部分會被截斷。

Syntax: req_status_zone_recycle zone_name times seconds Default: none Context: http

定義某個共享內(nèi)存塊過期數(shù)據(jù)的回收?;厥赵诠蚕韮?nèi)存耗盡時自動開啟。只會回收訪問頻率低于設(shè)置值的監(jiān)控數(shù)據(jù)。 頻率定義為 times / seconds,默認(rèn)值為10r/min,即

req_status_zone_recycle demo_zone 10 60;

安裝模塊:

tengine官方說req-statu模塊默認(rèn)安裝。但是并沒有。而且tengine的req-status模塊不能分upstream監(jiān)控,從github引入第三方模塊解決該問題

yum與編譯安裝的nginx擴(kuò)展模塊安裝:

[root@nginx-server ~]# yum install -y unzip

1. 安裝,先查看一下當(dāng)前編譯安裝nginx的版本

[root@localhost nginx-1.16.0]# nginx -V

下載或者上傳一個和當(dāng)前的nginx版本一樣的nginx的tar包。

[root@nginx-server ~]# tar xzf nginx-1.16.0.tar.gz -C /usr/local/

2.下載ngx_req_status_module 模塊, 這是第三方模塊需要添加

[root@nginx-server ~]# wget https://github.com/zls0424/ngx_req_status/archive/master.zip -O ngx_req_status.zip

[root@nginx-server ~]# unzip ngx_req_status.zip

[root@nginx-server ~]# cp -r ngx_req_status-master/ /usr/local/ #與解壓的nginx在同一級目錄下

[root@nginx-server ~]# cd /usr/local/nginx-1.16.0/

[root@nginx-server nginx-1.16.0]# yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++ zlib zlib-devel

[root@nginx-server nginx-1.16.0]# yum -y install patch.x86_64

[root@nginx-server nginx-1.16.0]# patch -p1 < ../ngx_req_status-master/write_filter-1.7.11.patch

[root@localhost nginx-1.16.0]# ./configure 添加上原來的參數(shù) --add-module=/usr/local/ngx_req_status-master

[root@localhost nginx-1.16.0]# make -j2

由于原先已有nginx,所以不能執(zhí)行make install,否則會覆蓋掉以前的配置文件及內(nèi)容

[root@localhost nginx-1.16.0]# mv /usr/sbin/nginx /usr/sbin/nginx_bak

[root@localhost nginx-1.16.0]# cp objs/nginx /usr/sbin/

[root@localhost nginx-1.16.0]# systemctl restart nginx

[root@localhost nginx-1.16.0]# nginx -V

如果發(fā)現(xiàn)編譯的配置文件有變化就成功了!

配置如下: 需要在http里面配置。

!!注意,添加了此配置,只有重啟nginx才能生效。

[root@localhost ~]# vim /etc/nginx/nginx.conf

req_status_zone server_name $server_name 256k;

req_status_zone server_addr $server_addr 256k;

req_status_zone server_url $server_name$uri 256k;

req_status server_name server_addr server_url;

server {

server_name localhost;

location /req-status {

req_status_show on;

}

}

指令介紹

req_status_zone

語法: req_status_zone name string size

默認(rèn)值: None

配置塊: http

定義請求狀態(tài)ZONE,請求按照string分組來排列,例如:

req_status_zone server_url $server_name$uri 256k;

域名+uri將會形成一條數(shù)據(jù),可以看到所有url的帶寬,流量,訪問數(shù)

req_status

語法: req_status zone1[ zone2]

默認(rèn)值: None

配置塊: http, server, location

在location中啟用請求狀態(tài),你可以指定更多zones。

req_status_show

語法: req_status_show on

默認(rèn)值: None

配置塊: location

在當(dāng)前位置啟用請求狀態(tài)處理程序

請求狀態(tài)信息包括以下字段:

zone_name - 利用req_status_zone定義的分組標(biāo)準(zhǔn)。例如,按照服務(wù)器名稱對請求進(jìn)行分組后;key - 請求按分組標(biāo)準(zhǔn)分組后的分組標(biāo)識(即組名)。例如按服務(wù)器名稱分組時,組名可能是10.0.105.196;max_active - 該組的最大并發(fā)連接數(shù);max_bw - 該組的最大帶寬;traffic - 該組的總流量;requests - 該組的總請求數(shù);active - 該組當(dāng)前的并發(fā)連接數(shù);bandwidth - 該組當(dāng)前帶寬。

3.5 補(bǔ)充:

查看Nginx并發(fā)進(jìn)程數(shù):ps -ef | grep nginx | wc -l

查看Web服務(wù)器TCP連接狀態(tài):netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

LISTEN:偵聽來自遠(yuǎn)方的TCPport的連接請求

SYN-SENT:再發(fā)送連接請求后等待匹配的連接請求

SYN-RECEIVED:再收到和發(fā)送一個連接請求后等待對方對連接請求的確認(rèn)

ESTABLISHED:代表一個打開的連接

FIN-WAIT-1:等待遠(yuǎn)程TCP連接中斷請求,或先前的連接中斷請求的確認(rèn)

FIN-WAIT-2:從遠(yuǎn)程TCP等待連接中斷請求

CLOSE-WAIT:等待從本地用戶發(fā)來的連接中斷請求

CLOSING:等待遠(yuǎn)程TCP對連接中斷的確認(rèn)

LAST-ACK:等待原來的發(fā)向遠(yuǎn)程TCP的連接中斷請求的確認(rèn)

TIME-WAIT:等待足夠的時間以確保遠(yuǎn)程TCP接收到連接中斷請求的確認(rèn)

CLOSED:沒有不論什么連接狀態(tài)

商業(yè)版的 nginx plus 通過他的 ngx_http_status_module 提供了比 nginx 更多的監(jiān)控指標(biāo),可以參看 http://demo.nginx.com/status.html

4 nginx access log 分析

nginx 的 access log 中可以記錄很多有價值的信息,通過分析 access log,可以收集到很多指標(biāo)

python 編寫的 linux 工具 ngxtop 就實(shí)現(xiàn)了對 access log 的分析功能

1.制作nginx的日志切割,每天凌晨切割并壓縮。

PV:PV(訪問量): 即Page View, 即頁面瀏覽量或點(diǎn)擊量,用戶每次刷新即被計算一次。

UV:UV(獨(dú)立訪客):即Unique Visitor,訪問您網(wǎng)站的一臺電腦客戶端為一個訪客。00:00-24:00內(nèi)相同的客戶端只被計算一次。

面試:

1.根據(jù)訪問IP統(tǒng)計UV

awk ‘{print $1}’ access.log|sort | uniq -c |wc -l

2.統(tǒng)計訪問URL統(tǒng)計PV

awk ‘{print $7}’ access.log|wc -l

3.查詢訪問最頻繁的URL

awk ‘{print $7}’ access.log|sort | uniq -c |sort -n -k 1 -r|more

4.查詢訪問最頻繁的IP

awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r|more

5.查詢訪問最頻繁的前10的IP

awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r|head -n 10

wk ‘{print $7}’ access.log|sort | uniq -c |sort -n -k 1 -r|more

4.查詢訪問最頻繁的IP

awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r|more

5.查詢訪問最頻繁的前10的IP

awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r|head -n 10

[外鏈圖片轉(zhuǎn)存中…(img-V6gC77qM-1718852384037)]

[外鏈圖片轉(zhuǎn)存中…(img-Ml9Vn6uR-1718852384038)]

[外鏈圖片轉(zhuǎn)存中…(img-ByPBAs4Q-1718852384038)]

柚子快報激活碼778899分享:運(yùn)維 NGINX

http://yzkb.51969.com/

參考鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19088035.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄