如何從命令行實(shí)時(shí)監(jiān)控Nginx Web服務(wù)器?
譯文【51CTO精選譯文】一旦Nginx Web服務(wù)器在生產(chǎn)環(huán)境下搭建并運(yùn)行起來,你就希望能夠?qū)崟r(shí)監(jiān)測其活動(dòng)。實(shí)際上,普通的網(wǎng)絡(luò)監(jiān)控軟件都可以提供支持實(shí)時(shí)監(jiān)控Nginx的功能,比如Nagios、Zabbix和Munin。
不過,如果你不需要這類工具所提供的綜合報(bào)告功能或長期統(tǒng)計(jì)數(shù)字,只想快速、簡便地監(jiān)控對(duì)Nginx Web服務(wù)器提出的請(qǐng)求,那么我會(huì)建議使用一款名為ngxtop的命令行工具。
你一眼就會(huì)發(fā)現(xiàn),無論名稱還是界面,ngxtop的靈感均源自大名鼎鼎的top命令。ngxtop的功能就是,分析Nginx訪問日志文件(以及其他日志文件,比如Apache2日志),并通過類似top的界面,實(shí)時(shí)顯示分析后所得的結(jié)果。你可能吹噓自己的綜合監(jiān)控工具擁有各種各樣的所需功能,但說到簡潔性,肯定比不過ngxtop,而簡潔性是不可忽視的一大優(yōu)點(diǎn)。
我在本教程中將介紹如何借助ngxtop,實(shí)時(shí)監(jiān)控Nginx Web服務(wù)器。
將ngxtop安裝在Linux上
首先,將pip安裝在你的Linux系統(tǒng)上,這是ngxtop的一個(gè)前提條件。
然后安裝ngxtop,如下所示。
- $ sudo pip install ngxtop
ngxtop的使用方法
ngxtop的基本使用方法如下:
- ngxtop [options]
- ngxtop [options] (print|top|avg|sum) <var>
- ngxtop info
下面是一些常用選項(xiàng)。
- -l <file>:訪問日志文件(Nginx或Apache2)的完整路徑
- -f <format>:訪問日志的格式
- --no-follow:處理當(dāng)前的日志文件快照,而不是實(shí)時(shí)寫入到日志文件的新行
- -t <seconds>:更新間隔時(shí)間
- -n <number>:所顯示的行數(shù)
- -o <var>:排序標(biāo)準(zhǔn)(默認(rèn)標(biāo)準(zhǔn):數(shù)量)
- -a <exp> ..., --a <exp> ...::將表達(dá)式(必須是聚合表達(dá)式:sum、avg、min和max等)添加到輸出
- -v:詳細(xì)輸出
- -i <filter-expression>:只處理與過濾器匹配的記錄
下面是一些內(nèi)置變量(用上面的<var>來表示)。它們的含義不言自明。
- body_bytes_send
- http_referer
- http_user_agent
- remote_addr
- remote_user
- request
- status
- time_local
使用ngxtop監(jiān)控Nginx
默認(rèn)情況下,ngxtop會(huì)設(shè)法從其配置文件(/etc/nginx/nginx.conf)查明Nginx訪問日志的位置。因而,想監(jiān)控Nginx,只要運(yùn)行這個(gè)命令:
- $ ngxtop
它會(huì)顯示由Nginx處理的10個(gè)請(qǐng)求,按請(qǐng)求數(shù)量排序。
想顯示前20個(gè)最頻繁的請(qǐng)求,只要運(yùn)行這個(gè)命令:
- $ ngxtop -n 20
想獲得關(guān)于Nginx的信息(包括可用變量信息),只要運(yùn)行這個(gè)命令:
- $ ngxtop info
如果你愿意,也可以定制所要顯示的變量。為此,只要列出你感興趣的變量。"print"命令會(huì)顯示一個(gè)個(gè)請(qǐng)求。
- $ ngxtop print request http_user_agent remote_addr
想顯示客戶機(jī)的最常出現(xiàn)的IP地址,只要運(yùn)行這個(gè)命令:
- $ ngxtop top remote_addr
想顯示狀態(tài)代碼是404的請(qǐng)求,只要運(yùn)行這個(gè)命令:
- $ ngxtop -i 'status == 404' print request status
除了Nginx外,ngxtop還能夠處理其他日志文件,比如Apache訪問日志。想監(jiān)控Apache Web服務(wù)器,只要使用這個(gè)命令:
- $ tail -f /var/log/apache2/access.log | ngxtop -f common
原文鏈接:http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html