对于 Linux 下使用 Apache 作为 Web 服务器来说,大家也许经常会需要查看服务器的实时运行情况,比如哪些 URL 的访问量最大,服务器每秒的请求数,等等。 apachetop 就是这样一个工具, 能够让你实时的监测 apache 服务器的运行状况。
apachetop 是一个命令行工具,它的运行原理是通过分析 apache 服务器的日志文件,来向用户展示服务器的运行情况。
以 CentOS 为例,输入如下命令:
安装完成后,可以在命令行中输入:
如果成功找到了日志文件,apachetop 就会在命令行中显示类似如下的内容,并且这些内容会自动刷新:
1
2
3
4
5
6
7
8
9
10
11
12
|
last hit: 12:17:14 atop runtime: 0 days, 00:00:40 12:17:15 All: 284 reqs ( 7.1/sec) 1012.2K ( 25.3K/sec) 3649.8B/req 2xx: 273 (96.1%) 3xx: 11 ( 3.9%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%) R ( 30s): 220 reqs ( 7.3/sec) 686.6K ( 22.9K/sec) 3195.9B/req 2xx: 212 (96.4%) 3xx: 8 ( 3.6%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%) 69 2.30 26.5 0.9*/test/ent.php 58 1.93 149.0 5.0 /test/prom.json 20 0.69 0.7 0.0 /test/recommend/recommend.php 15 0.50 10.4 0.3 /test/good/center.php
|
上面的命令行输出,向我们展示了 apache 服务器当前的运行状况,我们可以逐行进行分析:
首先,这行中的 last hit 列出了最后点击(也就是请求)的时间, atop runtime 代表 apachetop 已经运行的时间,这行最后的那个是当前的时间。
1
|
last hit: 12:17:14 atop runtime: 0 days, 00:00:40 12:17:15
|
接下来,这行列出了自从 apachetop 开始运行以来所有的请求次数,以及每秒平均的请求次数, 接收到的字节数,每秒接收的字节数,每次请求平均的字节数。 第二行代表服务端发出的HTTP响应代码情况,例如,2xx 表示请求成功的响应代码发送的次数,比如 200 响应,4xx 代表比如 404 这类的响应次数。
1
2
|
All: 284 reqs ( 7.1/sec) 1012.2K ( 25.3K/sec) 3649.8B/req 2xx: 273 (96.1%) 3xx: 11 ( 3.9%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%)
|
下面这两行各个属性所表示的含义和上面那两行是一样的,唯一不同的是它们跨越的时段不一样。 前两行是统计自从 apachetop 启动以来所有的请求,而这两行默认统计的是 30 秒之内的请求。
1
2
|
R ( 30s): 220 reqs ( 7.3/sec) 686.6K ( 22.9K/sec) 3195.9B/req 2xx: 212 (96.4%) 3xx: 8 ( 3.6%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%)
|
下面这些行就是具体每一个 URL 的请求状况了:
1
2
3
4
5
|
69 2.30 26.5 0.9*/test/ent.php 58 1.93 149.0 5.0 /test/prom.json 20 0.69 0.7 0.0 /test/recommend/recommend.php 15 0.50 10.4 0.3 /test/good/center.php
|
这里面列出了在指定时段内对每一个 URL 分别的请求数量,每秒的平均请求次数,这些请求的字节数,以及每秒平均的字节数。
到这里,我们了解了 apachetop 最基本的使用方法,下面我们将更进一步的介绍它更多的特性。
*apachetop 的各种视图模式
如果仔细看一下的话,你会发现 URL 列表的第一行多了一个星号:
1
2
|
69 2.30 26.5 0.9*/test/ent.php
|
这个星号代表你选中了当前这一行,你可以按键盘的上下键来选择其他行,当你选中一行后,按下 → 键,就可以进入该条 URL 的详细信息界面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
last hit: 13:15:19 atop runtime: 0 days, 00:12:16 13:15:20 All: 6124 reqs ( 8.3/sec) 26.0M ( 36.2K/sec) 4450.8B/req 2xx: 5952 (97.2%) 3xx: 169 ( 2.8%) 4xx: 3 ( 0.0%) 5xx: 0 ( 0.0%) R ( 30s): 266 reqs ( 8.9/sec) 1078.1K ( 35.9K/sec) 4150.4B/req 2xx: 253 (95.1%) 3xx: 13 ( 4.9%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%) 66 2.20 25.3 0.8 /test/ent.php 3 0.19 1.2 0.1 1.1.1.1 [1.1.1.1] 3 0.13 1.2 0.1 1.1.1.2 [1.1.1.2] 3 0.14 1.2 0.1 1.1.1.3 [1.1.1.3] 2 0.13 0.8 0.1 1.1.1.4 [1.1.1.4] 2 0.14 0.8 0.1 1.1.1.5 [1.1.1.5] 2 0.07 0.8 0.0 1.1.1.6 [1.1.1.6]
|
在这个界面中,你可以看到对于该条 URL,请求它的 IP 都是什么。看完这个之后,你可以按下 ← 按键,回到列表视图。
在列表视图中,你可以按 d 键,在 URL/Referrer/Host 这三个列表视图之间进行切换:
1
2
3
4
5
6
7
8
9
10
11
|
last hit: 13:20:34 atop runtime: 0 days, 00:17:31 13:20:35 All: 8749 reqs ( 8.3/sec) 36.2M ( 35.3K/sec) 4341.4B/req 2xx: 8482 (96.9%) 3xx: 262 ( 3.0%) 4xx: 5 ( 0.1%) 5xx: 0 ( 0.0%) R ( 30s): 237 reqs ( 7.9/sec) 804.1K ( 26.8K/sec) 3474.2B/req 2xx: 227 (95.8%) 3xx: 10 ( 4.2%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%) 11 0.38 107.2 3.7*1.1.1.1 [1.1.1.1] 10 0.34 104.9 3.6 1.1.1.2 [1.1.1.2] 10 0.40 113.2 4.5 1.1.1.3 [1.1.1.3] 9 0.30 17.5 0.6 1.1.1.4 [1.1.1.4]
|
在上面的 HOST 视图中,我们可以看到IP的来源情况,而且可以按下 → 键进入详细视图查看该条 IP 都访问过哪些 URL。
1
2
3
4
5
6
7
8
9
|
last hit: 13:23:00 atop runtime: 0 days, 00:19:57 13:23:01 All: 9898 reqs ( 8.3/sec) 40.7M ( 34.8K/sec) 4306.5B/req 2xx: 9593 (96.9%) 3xx: 299 ( 3.0%) 4xx: 6 ( 0.1%) 5xx: 0 ( 0.0%) R ( 30s): 197 reqs ( 6.6/sec) 586.7K ( 19.6K/sec) 3049.6B/req 2xx: 190 (96.4%) 3xx: 7 ( 3.6%) 4xx: 0 ( 0.0%) 5xx: 0 ( 0.0%) REQS REQ/S KB KB/S REFERRER 14 2.00 34.9 5.0 www.abc.com/index.php
|
在上面的 REFERRER 视图中, 我们可以看到各个网站的来源情况,这对于分析链接来源非常有用。
*为 URL 列表添加过滤器
如果你的 URL 列表中的链接太多了,你可以添加一些过滤器来对这个列表进行筛选,从而找到你需要检测的 URL。
在 URL 列表视图中,按下 f 键,这时你会看到这样一个菜单:
1
|
filters.. a) add/edit menu c) clear all s) show active
|
再按下 a 键,添加一个过滤器,这时会让你选择过滤器的类型:
1
|
filters: add.. u) to URLS r) to REFERRERS h) to HOSTS
|
我们按下 u 键,选择 URL 过滤器, 然后输入你的过滤条件,再按下回车键,这时候,列表视图中我们就可以看到筛选后的内容了。
还有一些其他的选项,比如还可以设置如何对列表视图进行排序, 我们可以在列表视图中按下 h 键来查看运行时的帮助信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
ApacheTop version 0.12.6, Copyright (c) 2003-2004, Chris Elsworth d : switch item display between urls/referrers/hosts n : switch numbers display between hits & bytes or return codes h or ? : this help window p : (un)pause display (freeze updates) up/down : move marker asterisk up/down right/left : enter/exit detailed subdisplay mode s: SORT BY: [the appropriate menu will appear for your display] r) requests R) reqs/sec b) bytes B) bytes/sec 2) 2xx 3) 3xx 4) 4xx 5) 5xx t: TOGGLE SUBDISPLAYS ON/OFF: u) urls r) referrers h) hosts a) add/edit menu c) clear all s) show active (not done yet) u) to urls r) to referrers h) to hosts
|
上面的帮助文档列出了在运行时所有可以执行的操作,比如我们前面提到的 d 键切换视图, f 键添加过滤器,还有一个 s 键,可以用来对列表进行排序等等。
1
|
apachetop -f /var/logs/httpd.log
|
-
apachetop 的列表视图,默认情况下是不显示出 URL 参数的, 如果你还需要显示 URL 参数,那么可以使用 -q 参数:
-
apachetop 会使用一个缓存区域来存放一定数量的日志记录,以生成最终的实时检测报表,默认情况下会以保存 30 秒之内的请求记录。 它提供了两个参数可以让你来控制这个缓存区的大小。
-H num 以请求数来计算,比如你想让 apachetop 记录 1000 次点击之内的情况:
-T sec 以时间进行来计算,比如记录 20秒之内的请求:
还有更多的命令行参数, 可以通过 -help 参数来查看: