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