使用awstata分析nginx以及vsftp日志。

安装

可以使用相应平台的包管理器安装,也可以直接到官网下载归档文件,解压其中的 wwwroot放到nginx的根目录,或者在nginx config文件设置alias,可以参考 https://wiki.archlinux.org/index.php/awstats 或者tools/nginx/awstats-nginx.conf文件。

另外,需要 perl,这个系统一般都带有。

配置

这部分比较复杂,可以使用配套的tools 里面的 awstats_configure.pl 交互式生成配置文件,也可以修改 /etc/awstats/awstats.model.conf,包管理器安装才有的。

我是用的 pacman 安装的,所以直接复制修改该model文件,将model改成自己的任务名,比如web或则ftp啥的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
LogFile="/var/log/nginx/access.log"

LogType=W # 默认 web模式

LogFormat=1

SiteDomain="web-server" # 改成你想显示的

AllowToUpdateStatsFromBrowser=0  # 是否可以通过网页更新,具体好坏里面有说明

DirIcons="/awstatsicons" # 如果你修改了该路径

UseFramesWhenCGI=0  # 是否开启侧边栏,0 不开

ShowFlagLinks="en cn tw de jp" # 显示语言切换按钮

Logo="awstats_logo1.png"  # logo 图片
LogoLink="/"   # logo 链接


上面是 nginx 日志的,对于 vsftp 只有一点区别,就是需要自己定义 LogFormat,如下:

1
2
3
4
5
6
7
8
LogFile="/var/log/vsftpd.log" # vsftp 需要打开对应的日志开关!!!

LogType=F  # ftp 模式

LogFormat="%time3 %other %host %bytesd %url %other %other %method %other %logname %other %code %other %other"  # 这个需要和你的 vsftp log 文件列匹配。

# 其他类似

需要注意文件权限问题,比如 wwwroot里面的 需要chown http(你的 nginx 运行用户),log文件需要有读权限,否则你需要使用 root 运行下面家要说的生成命令。

生成

需要使用 crontab (cronie) 定时运行更新命令。

1
2
3
4
sudo crontab -e # 创建 root 用户的定时任务
# 每个 1 小时运行一次
7 */1 * * * /usr/share/awstats/tools/awstats_updateall.pl now -awstatsprog=/usr/share/webapps/awstats/awstats/awstats.pl > /home/awstatus.log
# 因为配置文件在 etc 里面,所以上面没有指明路径。

因为我是用的是nginx alias 方式,所以 -awstatsprog 路径就是安装默认路径。

其他

效果展示:

http://mirrors.hust.edu.cn/visitor/

http://rachpt.iok.la/awstats/awstats.pl?config=nginx

http://rachpt.iok.la/awstats/awstats.pl?config=vsftp