테스트 사이트 - 개발 중인 베타 버전입니다

필터링한 아파치 로그를 테이블로 저장하여 분석하기

· 12년 전 · 4665 · 4
<?
include_once("./_common.php");
include_once("$g4[path]/head.sub.php");
/*

제작 : freeimage.kr 김성대
목적 : grep 등으로 필터링한 아파치 로그를 테이블로 저장하여 분석하기 위함..
사용 : 그냥 분석하면 답없다.. 대충 필터링한다음 나온 파일을 DB에 넣은뒤
찌지고 뽁고 해서 문제점을 찾아낸다.. ^^
전부다 저장하면 하세월 걸리니 if 문으로 적당히 처리하시길..


데이타 구조
CREATE TABLE IF NOT EXISTS `ar_apache_log` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(15) NOT NULL,
`date` datetime NOT NULL,
`post` enum('GET','POST') NOT NULL,
`url` varchar(255) NOT NULL,
`stat` int(11) NOT NULL,
`size` int(11) NOT NULL,
PRIMARY KEY (`no`),
UNIQUE KEY `ip` (`ip`,`date`,`url`,`stat`)
) ENGINE=InnoDB DEFAULT CHARSET=euckr ;

*/

//m.access.log:211.36.138.73 - - [17/Jul/2013:16:08:15 +0900] "GET /images/ico_all.png HTTP/1.1" 200 1997 "http://viewkorea.co.kr/" "Mozilla/5.0 (Linux; U; Android 4.1.2; ko-kr; SHV-E210L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 NAVER(inapp; search; 220; 4.7.1)"

$buff='m.access.log:211.36.138.73 - - [17/Jul/2013:16:08:15 +0900] "GET /images/ico_all.png HTTP/1.1" 200 1997';

$reg ="(.+?):"; // 1 m.access.log
$reg.="([\d.\d.\d.\d]+) - - "; // 2 211.36.133.11
$reg.="\[(.+?)\] "; // 3 17/Jul/2013:16:08:15 +0900
$reg.="\"(.+?) "; // 4 GET
$reg.="(.+?) HTTP\/"; // 5 /images/ico_all.png
$reg.="(.+?)\" "; // 6 1.1
$reg.="(.+\d) (.+\d)"; // 7 200 8 1997
//$reg.="( (.+?)"; // 8 1.1
//$reg.="\"(.+?)\" "; // 9
//$reg.="\"(.+?)\""; // 9

$g4[ar_log_table]="ar_apache_log";

//로그 파일은 여기에.. 지정
$fp=fopen("../../lo2","r");
$line=0;
echo "<xmp>";

while($buff=fgets($fp)) {
$line++;
//echo "$buff\n";
preg_match("/$reg/",$buff,$match);

$date=date("Y-m-d H:i:s",strtotime($match[3]));

//저장할 날짜범위 지정
if ($date<='2013-01-31 00:00:00') continue;
if ($date>='2013-08-31 00:00:00') continue;

//var_dump($match);
$sql="insert into $g4[ar_log_table] set
ip='$match[2]',
date='$date',
post='$match[4]',
url='$match[5]',
stat='$match[7]',
size='$match[8]'";
if ($line%1000==0) {
echo "$line. $sql \n";
}
sql_query($sql,false);
//if (mysql_error()) echo mysql_error(),"\n";
//if ($line>10) break;
}
fclose($fp);
?>


전국 추천 여행 전문 검색 뷰코리아 방문해주세요.. viewkorea.co.kr 굽신굽신~~

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

12년 전
정규식에 문제가 있어서 일부는 깨어지네요.^^ 자기 로그 타입에 맞게 적당히 수정해주세요.
유용한 정보 감사합니다.
좋은 정보 감사합니다.
감사합니다

게시글 목록

번호 제목
32458
32438
32437
32436
32427
32416
32411
32404
32396
32377
32366
32360
32331
32322
32319
32314
32298
32297
32287
32282