2016年12月15日 星期四

Apache紀錄寫入資料庫(同步)

目的在將原本存放至access_log的紀錄同步存放至DB資料庫中,作為將來統計與稽核的RawData。

前置環境
OS:CentOS 7.3
Http Service:apache 2.4.6
DB:mariadb 5.5.52

1.建立資料表

使用SQL語句建立資料表
CREATE TABLE access_log
(remote_ip CHAR(15) NOT NULL,
remote_logname VARCHAR(20) NOT NULL,
servername VARCHAR(20) NOT NULL,
remote_user CHAR(10) NOT NULL,
datetime DATETIME NOT NULL,
status SMALLINT NOT NULL,
bytes_sent INT,
content_type VARCHAR(50),
url_requested VARCHAR(250),
referer VARCHAR(250),
user_agent VARCHAR(250),
INDEX (datetime));

2.修改apache設定檔

編輯httpd.conf
vim /etc/httpd/conf/httpd.conf;
<IfModule log_config_module>區塊內新增一筆LogFormat內容
LogFormat "INSERT INTO access_log (remote_ip,remote_logname,servername,remote_user,datetime,status,bytes_sent,content_type,url_requested,referer,user_agent) VALUES ('%h','%l','%v','%u',%{%Y%m%d%H%M%S}t,%>s,'%B', '%{Content-Type}o','%U','%{Referer}i','%{User-Agent}i');" mysql
<IfModule log_config_module>區塊內新增一筆CustomLog內容
CustomLog "| /bin/mysql -h[DB主機] -u[帳號] -p[密碼] [資料庫]" mysql
重新啟動apache
systemctl restart httpd;
紅字標示文字必須可對應

3.補充說明

實際使用時,建立的資料表結構可與LogFormat匹配調整出自己所需內容,適當的篩選資訊可降低資料庫的成長速度。

沒有留言:

張貼留言

Ubuntu 使用apt-get -y update更新出現大量Failed to fetch 404 Not Found訊息

Ubuntu 使用apt-get -y update更新出現大量Failed to fetch 404 Not Found訊息,確認DNS可以解析網址也可連到網路,基本可排除網路問題。 原因判斷:Ubuntu版本過舊,其更新包路徑已不在原本sources.list檔案內的更新路徑...