필터링한 아파치 로그를 테이블로 저장하여 분석하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

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

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

첨부파일

a1.php (2.4K) 14회 다운로드 2013-07-18 00:36:19

본문

<?
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
  • 복사

댓글 4개

© SIRSOFT
현재 페이지 제일 처음으로