ngxtop实时解析
nginx
访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop。有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新。
1. 安装ngxtop
1.1 源码安装
1
2
3
4
5
6
|
# 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安装
1
|
pip
install
ngxtop
|
2. ngxtop使用详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# 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
behavior
is
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
/
or
log
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 实时状态
1
|
# ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf
|
3.2 访问量前十的IP
1
|
# ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf top remote_addr
|
4. 注意事项
4.1 ngxtop单条命令无法执行
1
2
3
|
# 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路径中,
方法一:软连接
1
|
# ln -s /usr/local/nginx-1.5.2/sbin/nginx /sbin/
|
方法二:修改环境变量
1
2
3
4
|
# vim /etc/profile
export
PATH
=
$
PATH
:
/
usr
/
local
/
nginx
-
1.5.2
/
sbin
# source /etc/profile
|
方法三:指定配置文件
1
|
# 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