- 安装
pip install ngxtop
或
wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
unzip ngxtop-master.zip
cd ngxtop-master
python setup.py install
ngxtop用法
ngxtop [选项]
ngxtop [选项] (print|top|avg|sum) <变量>
ngxtop info
选项有如下参数:
-l : 指定日志文件的完整路径 (Nginx 或 Apache2)
-f : 日志格式
–no-follow: 处理当前已经写入的日志文件,而不是实时处理新添加到日志文件的日志
-t : 更新频率
-n : 显示行号
-o : 排序规则(默认是访问计数)
-a …, –a …: 添加表达式(一般是聚合表达式如: sum, avg, min, max 等)到输出中。
-v: 输出详细信息
-i : 只处理符合规则的记录
-c <file>或 –config <file> 指定nginx配置文件,自动分析日志格式
-i <filter-expression>或 –filter <filter-expression> 满足表达式的过滤将被处理
-p <filter-expression>或 –pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.
ngxtop的变量有:remote_addr、remote_user、time_local、request、request_path、status、body_bytes_sent、http_referer、http_user_agent。主要是用来分析出IP地址、请求路径、Http状态、referer、user_agent等等。
ngxtop示例
找出404错误前十的请求URL
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow top request_path --filter 'status == 404'
找出访问数最多的前十个IP地址
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr
找出流量前十的IP地址
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --order-by 'avg(bytes_sent) * count'
找出400错误代码以上的且显示request、status、http_referer三项。命令代码:
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow -i 'status >= 400' print request status http_referer
找出bytes_sent平均值且状态码为200且request_path以wzfou开头的前10
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow avg bytes_sent --filter 'status == 200 and request_path.startswith("wzfou")'
通过上面几个命令,基本上很快就能锁定一些异常请求的IP地址了。默认的ngxtop会显示前10个记录,你可以加上参数 –n xxx,这样自己控制显示的数量。命令如下:
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr -n 20
ngxtop实现监控服务器日志。要想实时显示Nginx日志监控的情况,只需要去年–no-follow 参数即可,命令如下:
ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --group-by remote_addr