閱讀757 返回首頁    go 人物


Webalizer日誌分析工具安裝和配置

webalizer是一個高效的、免費的web服務器日誌分析程序。其分析結果以HTML文件格式保存,從而可以很方便的通過web服務器進行瀏覽。Internet上的很多站點都使用webalizer進行web服務器日誌分析。Webalizer具有以下一些特性:

1. 為是用C寫的程序,所以其具有很高的運行效率。在主頻為200Mhz的機器上,webalizer每秒鍾可以分析10000條記錄,所以分析一個40M大小的日誌文件隻需要15秒。

2. webalizer支持標準的一般日誌文件格式(Common Logfile Format);除此之外,也支持幾種組合日誌格式(Combined Logfile Format)的變種,從而可以統計客戶情況以及客戶操作係統類型。並且現在webalizer已經可以支持wu-ftpd xferlog日誌格式以及squid日誌文件格式了。

3. 支持命令行配置以及配置文件。

4. 可以支持多種語言,也可以自己進行本地化工作。

5. 支持多種平台,比如UNIX、linux、NT, OS/2 和 MacOS等。

安裝:

1.從webalizer的官方站點https://www.mrunix.net/webalizer/下載webalizer,當前的最新版本是webalizer-2.01-06-src.tgz。

2.首先解開源代碼包:

tar xvzf webalizer-2.01-06-src.tgz

3.在生成的目錄中有個lang目錄,該目錄中保存了各種語言文件,但是隻有繁體中文版本,可以自己轉換成簡體,或者自己重新翻譯一下。

4.然後進入生成的目錄:

./configure

make –with-language=chinese

5.編譯成功後,會產生一個webalizer可執行文件,可以將其拷貝到/usr/sbin/目錄下:

cp webalizer /usr/sbin/

然後就可以開始配置webalizer了。

配置:

上麵說過,可以通過命令行配置webalizer,也可以通過配置文件進行配置,在本文中我們將介紹使用命令行參數進行配置,需要了解配置文件使用方法的朋友可以參考README文件,裏麵有很詳細的介紹。

可以執行webalizer –h得到所有命令行參數:

Usage: webalizer [options] [log file]

-h = 打印幫助信息

-v -V = 打印版本信息

-d = 打印附加調試信息

-F type = 日誌格式類型. type= (clf | ftp | squid)

-i = 忽略曆史文件

-p = 保留狀態 (遞增模式)

-q = 忽略消息信息

-Q = 忽略所有信息

-Y = 忽略國家圖形

-G = 忽略小時統計圖形

-H = 忽略小時統計信息

-L = 忽略彩色圖例

-l num = 在圖形中使用數字背景線

-m num = 訪問超時 (seconds)

-T = 打印時間信息

-c file = 指定配置文件

-n name = 使用的主機名

-o dir = 結果輸出目錄

-t name = 指定報告題目上的主機名

-a name = 隱藏用戶代理名稱

-r name = 隱藏訪問鏈接

-s name = 隱藏客戶

-u name = 隱藏URL

-x name = 使用文件擴展名

-P name = 頁麵類型擴展名

-I name = index別名

-A num = 顯示前幾名客戶類型

-C num = 顯示前幾名國家

-R num = 顯示前幾名鏈接

-S num = 顯示前幾名客戶

-U num = 顯示前幾名URLs

-e num = 顯示前幾名訪問頁麵

-E num = 顯示前幾名不存在的頁麵

-X = 隱藏個別用戶

-D name = 使用dns緩存文件

-N num = DNS 進程數 (0=禁用dns)

假設,web服務器主機名為www.test.com,統計站點域名為www.test.com, 訪問日誌為/var/log/httpd/access_log, 我們將webalizer分析結果輸出到/var/www/html/log下麵。則我們可以建立以下腳本/etc/rc.d/webalizer:

#!/bin/sh

run=/usr/sbin/webalizer

$run -F clf -p -n ” ” -t “www.test.com”

-o /var/www/html/log /var/log/httpd/access_log

說明:

-F clf 指明我們的web日誌格式為標準的一般日誌文件格式(Common Logfile Format)

-p 指定使用遞增模式,這就是說每作一次分析後,webalizer會生產一個曆史文件,這樣下一次分析時就可以不分析已經處理過的部分。這樣我們就可以在短時間內轉換我們的日誌文件,而不用擔心訪問量太大時日誌文件無限增大了。

-n “ “ 指定服務器主機名為空,這樣輸出結果會美觀一些。

-o “www.test.com” 指定輸出結果標題.

/var/log/httpd/access_log:指定日誌文件

然後在/etc/crontab中加入:

01 1 * * * root /etc/rc.d/webalizer

即每天淩晨1點執行該腳本。

然後運行/etc/rc.d/init.d/crond reload重載入crond服務。

測試:

執行以下命令:

# /etc/rc.d/webalizer

然後在瀏覽器中訪問https://www.test.com/log/就可以看到webalizer的分析結果了。

注意:如果您使用了中文語言文件,但是您的linux不支持中文,則在產生的圖片中文字可能為亂碼。

好久沒關注Webalizer,因為n年沒更新了,但日前不經意間看到他出2.20-01了,而且還一個月了有。

看看2.20-01新增加的功能,當然你可以看這裏 ftp://ftp.mrunix.net/pub/webalizer/CHANGES

Fix就先不說了,我認為比較重要的是下麵的2個,其他看說CHANGES。

Added GeoIP support

Added IPv6 support

我對IPv6不是很感冒,估計不是這幾年能實行的。

GeoIP ,我本來用的是 Geolizer ,一個patch。應該是同等功效吧。

接下來編譯安裝吧。

./configure –prefix=/usr/local/webalizer \

–enable-static \

–enable-geoip \

–with-gd=/usr/local/gd2/include \

–with-gdlib=/usr/local/gd2/lib \

–with-png=/usr/local/include \

–with-pnglib=/usr/local/lib \

–with-geoip=/usr/local/include \

–with-geoiplib=/usr/local/lib \

–with-language=simplified_chinese

中文還是有問題,圖片等地方還是不行,還是用英文吧!

你一定要用中文的,那也行,參考:[原創]ANSI(GB2312)編碼全中文支持的WEBALIZER版本,GD庫 GB2312折衷支持。

原理很簡單,整理僅僅把圖片裏麵的文字轉換成utf-8編碼,然後利用freetype的 gdImageStringFT 函數裏換原來 gd 的gdImageString 和 gdImageStringUp 來繪圖。

簡單使用如下,編輯 graphs.c 文件。

最前麵加:

#include <iconv.h>

#define OUTLEN 255

最後麵加:

int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)

{

iconv_t cd;

char **pin = &inbuf;

char **pout = &outbuf;

cd = iconv_open(to_charset,from_charset);

if (cd==0) return -1;

memset(outbuf,0,outlen);

if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1;

iconv_close(cd);

return 0;

}

void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color)

{

char out[OUTLEN];

code_convert(”gb2312″,”utf-8″,s,strlen(s),out,OUTLEN);

gdImageStringFT(im, 0 , color, “/usr/local/share/fonts/msyh.ttf”, 9 , 0.0, x, y+9, out);

}

void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color)

{

char out[OUTLEN];

code_convert(”gb2312″,”utf-8″,s,strlen(s),out,OUTLEN);

gdImageStringFT(im, 0 , color, “/usr/local/share/fonts/msyh.ttf”, 9 , -PI/2, x, y-9 , out);

}

我這裏用的是微軟雅黑的字體,你也可以使用別的中文字體,請自己替換。

另:如果你編譯gd的時候沒有把 freetype 編譯進去是不行的。如果編譯 gd 的時候是動態的話,編譯 webalizer 也要動態了。去掉 –enable-static

配置 Webalizer:

下載 GeoIP 數據:

cd /usr/local/share/GeoIP

wget https://www.maxmind.com/download/geoip/database/GeoIP.dat.gz

gunzip -f GeoIP.dat.gz

配置 webalizer.conf 文件:

cp webalizer.conf.sample webalizer.conf

編輯 webalizer.conf

啟用 GeoIP,並設置 GeoIP.dat

GeoIP           yes

GeoIPDatabase   /usr/local/share/GeoIP/GeoIP.dat

怎麼用,我就不說了,網上也有很文檔,中文英文的都有,大家可以自己看下。

最後更新:2017-01-04 22:34:32

  上一篇:go 使用squid內置命令查看squid狀況和清除cache部分內容
  下一篇:go Linux下vmstat輸出釋疑