使用webalizer分析nginx访问日志(解决中文图片乱码)
今天给一台vps从apache迁移到nginx平台时,发现卸载的时候居然有webalizer,让我想起了以前群里讨论用webalizer来查看nginx的日志,因为当时是英文的,所以决定自己来安装一次并解决中文乱码问题.
系统:centos 5.6
需要的软件包:webalizer-2.23-05-src.tgz
1.下载并安装webalizer
wget -c ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-05-src.tgz
tar xf webalizer-2.23-05-src.tgz && cd webalizer-2.23-05
cd lang 进入语言目录
找到webalizer_lang.simplified_chinese 将文件格式转化为utf-8,可以借助外部工具,修改后放回即可.这里我使用EditPlus 3进行格式转换,大家可以去网上下载一些软件,将文件格式转换即可,如无需汉化,此步骤可略过.
cd ../
yum -y install fonts-chinese 安装中文字体
vi graphs.c 打开graphs.c,将下述代码添加到最后一行,如图
void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) { gdImageStringFT(im, 0 , color, "/usr/share/fonts/chinese/TrueType/ukai.ttf", 9 , 0.0, x, y+9, s); } void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) { gdImageStringFT(im, 0 , color, "/usr/share/fonts/chinese/TrueType/ukai.ttf", 9 , -PI/2, x, y-9 , s); }
代码加好之后,我们来安装webalizer
./configure --prefix=/usr/local/webalizer --enable-geoip --with-geoiplib=/usr/lib --with-geoip=/usr/include --with-language=simplified_chinese
ps:这里编译安装是需要GeoIP库的,不然会出现下面的错误
configure: WARNING: libGeoIP not found.. GeoIP code will be disabled!
直接执行命令
yum -y install GeoIP*
如果继续编译出现上面的错误,表示缺少libpng-devel,那就输入下面的命令
yum -y install libpng*
如果继续编译出现上面的错误,表示缺少gd,这里不是要你安装php-gd,是单独的gd包
yum -y install gd*
看到这里,可以发现libdb没有被找到,虽然可以make,但不定后面会有什么问题,所以要先执行
make clean all
然后再
yum -y install db4-devel
安装之后再进行编译安装,没有报错的话就执行make
make && make install
完成后,我们查看下webazolver的安装路径
whereis webazolver
webazolver: /usr/bin/webazolver
可以看到webazolver是安装在/usr/bin下.
2.配置webalizer
如果/etc下没有webalizer.conf,就自己创建个
cp /usr/local/webalizer/etc/webalizer.conf.sample /etc/webalizer.conf
vi /etc/webalizer.conf
LogFile /var/log/nginx/access.log 指定日志文件位置,可以是压缩包
LogType clf 设置日志类型
OutputDir /var/www/vhosts/log 生成统计数据记录目录
HostName rocdk890
GeoIP yes 启用geoip功能
GeoIPDatabase /usr/share/GeoIP/GeoIP.dat 指向geoipdatabase路径
Incremental yes
IncrementalName /var/www/vhosts/log
Incremental 为yes时,使每天分析结果存在,否则只会为当时分析的,LogType定义为clf,所以要分析的nginx日志的格式与clf符合,要不分析时会报错误.
3.用脚本分析日志
vi webalizer.sh
#!/usr/bin
run=/usr/sbin/webalizer
$run -F clf -p -n '' -t 'blog.slogra.com' -o /var/www/vhosts/log /var/log/nginx/access.log
sh webalizer.sh (因为我在ssh连接上看到的结果是乱码,就不把结果给大家看了)
执行之后有文件产生,就可以在浏览器中进行访问,当然前提是要让nginx配置好虚拟主机,好了,最后给大家个效果图吧.
多谢下面几位,才让我有这篇文章:
http://haolulu.blog.51cto.com/3164472/630894
http://jueshitou.blog.51cto.com/385947/569820
http://wanglq.blog.51cto.com/783560/302281
评论: