필터링한 아파치 로그를 테이블로 저장하여 분석하기 정보
필터링한 아파치 로그를 테이블로 저장하여 분석하기첨부파일
본문
<?
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 굽신굽신~~
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 굽신굽신~~
추천
1
1
댓글 4개
정규식에 문제가 있어서 일부는 깨어지네요.^^ 자기 로그 타입에 맞게 적당히 수정해주세요.
유용한 정보 감사합니다.
좋은 정보 감사합니다.
감사합니다