ngxtop:在命令行實時監控 Nginx 的神器

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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

獲取Nginx基本信息:

$ ngxtop info


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

你可以自定義顯示的變量,簡單列出需要顯示的變量。使用 "print" 命令顯示自定義請求。

$ ngxtop print request http_user_agent remote_addr


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

顯示請求最多的客戶端IP地址

$ ngxtop top remote_addr


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

顯示狀態碼是404的請求

$ ngxtop -i 'status == 404' print request status


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

除了Nginx,ngtop 還可以處理其他的日誌文件,比如 Apache 的訪問文件。使用以下命令監控 Apache 服務器:

$ tail -f /var/log/apache2/access.log | ngxtop -f common


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章