您的位置:首页 > 运维架构 > Nginx

ngxtop实时解析nginx访问日志

2015-02-03 13:33 483 查看
参考地址
http://www.ttlsa.com/nginx/nginx-modules-ngxtop-ttlsa/
ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop。有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新。


1. 安装ngxtop

1.1 源码安装

#
 wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
#
 unzip ngxtop-master.zip
#
 cd ngxtop-master
#
 python setup.py install
...省略....
Finished
 processing dependencies
for
ngxtop==0.0.1
//看到如上输出表示安装成功,安装过程需要网络支持

1.2 ngxtop安装

pip
install
ngxtop


2. ngxtop使用详解

#
 ngxtop --help
ngxtop
 - ad-hoc query
for
nginx
 access log.
Usage:
ngxtop
 [options]
ngxtop
 [options] (print|
top
|avg|
sum
)
 <var> ...
ngxtop
 info
ngxtop
 [options] query <query> ...
Options:
-l
 <
file
>,
 --access-log <
file
> 
 需要分析的访问日志
-f
 <
format
>,
 --log-
format
<
format
> 
 log_format指令指定的日志格式 [默认: combined]
--no-follow 
 ngxtop default behavioris to ignore current lines
in
log
 
and
 only
watch
for
new
 lines as they are written to the access log.
 
Use
 this flag to tell ngxtop to process the current content of the access log instead.
-t
 <seconds>, --interval <seconds>  report interval when running
in
follow
 mode [default: 2.0]
-g
 <var>, --group-by <var>  根据变量分组 [默认: request_path]
-w
 <var>, --having <
expr
> 
 having clause [default: 1]
-o
 <var>, --order-by <var>  排序 [默认: count]
-n
 <number>, --limit <number>  显示的条数 [default: 10]
-a
 <exp> ..., --a <exp> ...  add exp (must be aggregation exp:
sum
,
 avg, min, max, etc.) into output
-
v
,
 --verbose  更多的输出
-d,
 --debug  print every line and parsed record
-h,
 --help  当前帮助信息.
--version 
 输出版本信息.
高级选项:
-c
 <
file
>,
 --config<
file
> 
 运行ngxtop解析nginx配置文件
-i
 <filter-expression>, --filter <filter-expression>  filter
in
,
 records satisfied given expression are processed.
-p
 <filter-expression>, --pre-filter <filter-expression>
in
-filter
 expression to check
in
pre-parsing
 phase.
范例:
All
 examples
read
nginx
 config
file
for
access
 log location and
format
.
If
 you want to specify the access log
file
and
 / orlog
format
,
 use the -f and -a options.
"top"
like
 view of nginx requests
$
 ngxtop
404前十的请求
$
 ngxtop 
top
request_path
 --filter
'status
 == 404'
总流量前十的请求
$
 ngxtop --order-by 
'avg(bytes_sent)
 * count'
访问量前十的ip地址
$
 ngxtop --group-by remote_addr
输出400以上状态吗的请求以及请求来源
$
 ngxtop -i 
'status
 >= 400'
print
 request status http_referer
Average
 body bytes sent of 200 responses of requested path begin with
'foo'
:
$
 ngxtop avg bytes_sent --filter 
'status
 == 200 and request_path.startswith("foo")'
使用common日志格式分析远程服务器Apache访问日志
$
ssh
remote
tail
-f
 /var/log/apache2/access.log | ngxtop -f common


3. ngxtop实例

3.1 实时状态

#
 ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf




ngxtop

3.2 访问量前十的IP

#
 ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf top remote_addr




ngxtop


4. 注意事项

4.1 ngxtop单条命令无法执行

#
 ngxtop
Error:
 Access log
file
or
format
was
 not
set
and
 nginx
config
file
cannot
 be detected. Perhaps nginx is not
in
your
 PATH?
意识说nginx执行文件要加到PATH路径中,

方法一:软连接

#
 ln -s /usr/local/nginx-1.5.2/sbin/nginx /sbin/
方法二:修改环境变量

#
 vim /etc/profile
export
PATH=$PATH:/usr/
local
/nginx-1.5.2/sbin
#
 source /etc/profile
方法三:指定配置文件

#
 ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf
4.2 虚拟主机配置文件必须在nginx.conf主配置中

一般情况下,我们会将虚拟主机单独写到一个配置文件中,然后nginx.conf做个include。例如我们站点www.ttlsa.com

配置文件:/usr/local/nginx-1.5.2/conf/vhost/www.ttlsa.com.conf

再nginx.conf的http段中添加include vhost/*.conf

这种情况下ngxtop不支持,必须要保证所有配置都在nginx.conf中才行。不知道是否我哪里理解不对,如果是的话,知道的兄弟留言告知。本人在此感激不尽。


5. 结束

ngxtop非常实用,值得推荐。

项目地址:https://github.com/lebinh/ngxtop
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: