Nginx網站服務器在生產環境中運行的時候需要進行實時監控。實際上,諸如Nagios, Zabbix, Munin 的網絡監控軟件是支持 Nginx 監控的。
如果你不需要以上軟件提供的綜合性報告或者長期數據統計功能,只是需要一種快速簡便的辦法去監控 Nginx 服務器的請求的話,我建議你採用一個叫 ngxtop 的命令行工具。
你馬上就會發現 ngxtop 從界面和名稱都借鑑了著名的top命令。ngxtop 是通過分析 Nginx 或者其他的日誌文件,使用類似 top 命令的界面實時展示出來的。你可以說你知道的其他高端監控工具,但是在簡潔這方面 ngxtop 無疑是最好的。簡單就意味着不可替代。
本指南中,我將介紹如何使用 ngxtop 實時監控 Nginx 網站服務器。
Linux 上安裝 ngxtop
首先在 Linux 系統中安裝依賴庫pip(LCTT譯註:ngxtop是用python編寫的)。
然後使用如下命令安裝 ngxtop。
$ sudo pip install ngxtop
ngxtop 使用
基本使用方法如下:
ngxtop [options]
ngxtop [options] (print|top|avg|sum) <var>
ngxtop info
這裏是一些通用選項。
-l : 指定日誌文件的完整路徑 (Nginx 或 Apache2)
-f : 日誌格式
--no-follow: 處理當前已經寫入的日誌文件,而不是實時處理新添加到日誌文件的日誌
-t : 更新頻率
-n : 顯示行號
-o : 排序規則(默認是訪問計數)
-a ..., --a ...: 添加表達式(一般是聚合表達式如: sum, avg, min, max 等)到輸出中。
-v: 輸出詳細信息
-i : 只處理符合規則的記錄
以下是一些內置變量,他們的含義不言自明。
bodybytessend
http_referer
httpuseragent
remote_addr
remote_user
request
status
time_local
使用 ngxtop 監控 Nginx
ngxtop 默認會從其配置文件 (/etc/nginx/nginx.conf) 中查找 Nginx 日誌的地址。所以,監控 Nginx ,運行以下命令即可:
$ ngxtop這將會列出10個 Nginx 服務,按請求數量排序。
顯示前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,ngtop 還可以處理其他的日誌文件,比如 Apache 的訪問文件。使用以下命令監控 Apache 服務器:
$ tail -f /var/log/apache2/access.log | ngxtop -f common