필터링한 아파치 로그를 테이블로 저장하여 분석하기 > 그누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개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT