Ngxtop:在命令行實(shí)時(shí)監(jiān)控 Nginx 的神器
Nginx網(wǎng)站服務(wù)器在生產(chǎn)環(huán)境中運(yùn)行的時(shí)候需要進(jìn)行實(shí)時(shí)監(jiān)控。實(shí)際上,諸如Nagios, Zabbix, Munin 的網(wǎng)絡(luò)監(jiān)控軟件是支持 Nginx 監(jiān)控的。
如果你不需要以上軟件提供的綜合性報(bào)告或者長(zhǎng)期數(shù)據(jù)統(tǒng)計(jì)功能,只是需要一種快速簡(jiǎn)便的辦法去監(jiān)控 Nginx 服務(wù)器的請(qǐng)求的話(huà),我建議你采用一個(gè)叫 ngxtop 的命令行工具。
你馬上就會(huì)發(fā)現(xiàn) ngxtop 從界面和名稱(chēng)都借鑒了著名的top命令。ngxtop 是通過(guò)分析 Nginx 或者其他的日志文件,使用類(lèi)似 top 命令的界面實(shí)時(shí)展示出來(lái)的。你可以說(shuō)你知道的其他高端監(jiān)控工具,但是在簡(jiǎn)潔這方面 ngxtop 無(wú)疑是***的。簡(jiǎn)單就意味著不可替代。
本指南中,我將介紹如何使用 ngxtop 實(shí)時(shí)監(jiān)控 Nginx 網(wǎng)站服務(wù)器。
Linux 上安裝 ngxtop
首先在 Linux 系統(tǒng)中安裝依賴(lài)庫(kù)pip(LCTT譯注:ngxtop是用python編寫(xiě)的)。
然后使用如下命令安裝 ngxtop。
- $ sudo pip install ngxtop
ngxtop 使用
基本使用方法如下:
- ngxtop [options]
- ngxtop [options] (print|top|avg|sum) <var>
- ngxtop info
這里是一些通用選項(xiàng)。
- -l : 指定日志文件的完整路徑 (Nginx 或 Apache2)
- -f : 日志格式
- --no-follow: 處理當(dāng)前已經(jīng)寫(xiě)入的日志文件,而不是實(shí)時(shí)處理新添加到日志文件的日志
- -t : 更新頻率
- -n : 顯示行號(hào)
- -o : 排序規(guī)則(默認(rèn)是訪(fǎng)問(wèn)計(jì)數(shù))
- -a ..., --a ...: 添加表達(dá)式(一般是聚合表達(dá)式如: sum, avg, min, max 等)到輸出中。
- -v: 輸出詳細(xì)信息
- -i : 只處理符合規(guī)則的記錄
以下是一些內(nèi)置變量,他們的含義不言自明。
- bodybytessend
- http_referer
- httpuseragent
- remote_addr
- remote_user
- request
- status
- time_local
使用 ngxtop 監(jiān)控 Nginx
ngxtop 默認(rèn)會(huì)從其配置文件 (/etc/nginx/nginx.conf) 中查找 Nginx 日志的地址。所以,監(jiān)控 Nginx ,運(yùn)行以下命令即可:
- $ ngxtop
這將會(huì)列出10個(gè) Nginx 服務(wù),按請(qǐng)求數(shù)量排序。
顯示前20個(gè)最頻繁的請(qǐng)求:
- $ ngxtop -n 20
獲取Nginx基本信息:
- $ ngxtop info
你可以自定義顯示的變量,簡(jiǎn)單列出需要顯示的變量。使用 "print" 命令顯示自定義請(qǐng)求。
- $ ngxtop print request http_user_agent remote_addr
顯示請(qǐng)求最多的客戶(hù)端IP地址
- $ ngxtop top remote_addr
顯示狀態(tài)碼是404的請(qǐng)求
- $ ngxtop -i 'status == 404' print request status
除了Nginx,ngtop 還可以處理其他的日志文件,比如 Apache 的訪(fǎng)問(wèn)文件。使用以下命令監(jiān)控 Apache 服務(wù)器:
- $ tail -f /var/log/apache2/access.log | ngxtop -f common
via: http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html