ÀÛ¼ºÀÚ : ±â¼úÁö¿øºÎ ±è »ï ¼ö <kiss@nextline.net>
apache logrotated ¼³Á¤
logrotated ¼³Á¤À̶õ?
¾ÆÆÄÄ¡ À¥·Î±×ÆÄÀÏ(access_log)À» °ü¸®Çϱâ À§ÇÑ ¼³Á¤À̸ç, access_log, error_logµç ¸ðµç ·Î±×ÆÄÀÏÀ» »ý¼ºÇϵµ·Ï ¼³Á¤ ÇÏ¿´À» °æ¿ì¿¡´Â "·Î±×ÆÄÀÏOPEN – ÆÄÀÏ ³¡À¸·Î À̵¿ – ·Î±×³»¿ëÃß°¡ – ÆÄÀÏ CLOSE" ¶ó´Â ÇÁ·Î¼¼½º¸¦ °ÅÄ¡°Ô µÇ¹Ç·Î ·Î±×ÆÄÀÏÀÇ »çÀÌÁî°¡ Ŭ °æ¿ì º¸¾È°ú´Â º°°³·Î ¼Óµµ¿Í ¼º´É¿¡ ÀûÁö ¾ÊÀº ¿µÇâÀ» ÁÝ´Ï´Ù. Áï, ·Î±×ÆÄÀÏ ¿ë·®ÀÌ Áö¼ÓÀûÀ¸·Î ½×¿© ¿ë·®ÀÌ Å¬ °æ¿ì ÆÄÀϽýºÅÛÇ®ÀÌ ³ª¼ ½Ã½ºÅÛÀÌ ´Ù¿îµÇ°Å³ª ¶Ç´Â ´Ù¿îµÇÁö´Â ¾Ê´õ¶óµµ À¥¼ºñ½ºÀÇ ¼Óµµ°¡ ÇöÀúÇÏ°Ô ¶³¾îÁö°Ô µË´Ï´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ cron¿¡ ÀÇÇØ ÁÖ±âÀûÀ¸·Î ·Î±×ÆÄÀÏÀ» ¼øȯ½ÃÄÑÁÖ´Â ¼³Á¤ÀÔ´Ï´Ù.
¨ç httpd.conf ÆÄÀÏÆíÁý
vi ¿¡µðÅÍ »ç¿ë¹ý
»ç¿ëÇü½Ä : vi [¿É¼Ç] [»ý¼ºÇÒ ÆÄÀϸí/ÆíÁýÇÒ ÆÄÀϸí]
vi ¿¡µðÅÍ´Â ÀԷ¸ðµå, ¸í·É¸ðµå, ½ÇÇà¸ðµå·Î ±¸ºÐµË´Ï´Ù.
ÀԷ¸ðµå : vi ÆíÁýȸ鿡¼ ¹®ÀÚ¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ´Â ¸ðµå·Î¼ ÀԷ¸ðµå·Î ÁøÀÔÇϱâ À§Çؼ´Â i, a, o, I, A, O, RµîÀÌ ÀÖ½À´Ï´Ù. Áï Ãʱâ vi ÆíÁý±â ¸ðµå´Â ¸í·É¾î ¸ðµå·Î ÁøÀÔÀ» Çϱ⶧¹®¿¡ ¹®ÀÚ¸¦ ÀÔ·ÂÇϱâ Àü¿¡ ¾ÕÀÇ ´ÜÃàÅ°Áß Çϳª¸¦ ¸ÕÀú ÀÔ·ÂÇØ¾ß ¿øÇÏ´Â ¹®ÀÚ¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·É¸ðµå : Ä¿¼À̵¿/¹®ÀÚ»èÁ¦/¹®ÀÚ(¿)±³Ã¼/¹®ÀÚ¿°Ë»ö µîÀ» ÇÒ¼ö ÀÖ´Â ¸ðµå·Î¼ ÀԷ¸ðµå¿¡¼ ÆíÁýÀÌ ¿Ï·áµÇ¸é EscÅ°¸¦ ´·¯ ¸í·É¸ðµå·Î ÁøÀÔÇÏ¸é µË´Ï´Ù.
x : vi ¸í·É¸ðµå¿¡¼ Ä¿¼À§Ä¡ÀÇ ÇÑ ¹®ÀÚ »èÁ¦ dw : vi ¸í·É¸ðµå¿¡¼ Ä¿¼À§Ä¡ÀÇ ÇÑ´Ü¾î »èÁ¦ dd : vi ¸í·É¸ðµå¿¡¼ Ä¿¼À§Ä¡ÀÇ Çà »èÁ¦ Ndd : vi ¸í·É¸ðµå¿¡¼ Ä¿¼À§Ä¡ÀÇ ¿©·¯Çà µ¿½Ã »èÁ¦
½ÇÇà¸ðµå : Ưº°ÇÑ ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â ¸ðµå·Î¼ ¸í·É¾î¸ðµå¿¡¼ ":"(ÄÝ·Ð)¸¦ ´©¸£¸é vi ȸé ÇÏ´Ü ÁÂÃø¿¡ vi Ư¼ö¸í·É¾î¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
½ÇÇà¸ðµåÀÇ ÀϹÝÀûÀ¸·Î ¾²À̴ Ư¼ö ¸í·É¾î q : ¼öÁ¤ ÀÛ¾÷ÀÌ ÀÌ·ç¾îÁöÁö ¾ÊÀº »óÅ¿¡¼ vi ÆíÁý±â¿¡¼ ºüÁ®³ª¿É´Ï´Ù. q! : ¼öÁ¤ ÀÛ¾÷ÀÌ ÀÌ·ç¾îÁø ºÎºÐÀ» Àû¿ë½ÃÅ°Áö ¾Ê°í vi ÆíÁý±â¸¦ °Á¦·Î ºüÁ®³ª¿É´Ï´Ù. w : ¼öÁ¤µÈ ÀÛ¾÷À» ÀúÀåÇÕ´Ï´Ù. wq : ¼öÁ¤µÈ ÀÛ¾÷À» ÀúÀåÇÏ°í vi ÆíÁý±â¿¡¼ ºüÁ®³ª¿É´Ï´Ù.
Ãʱ⠸í·É¾î¸ðµå -> ÀԷ¸ðµåÁøÀÔ -> ÆíÁý -> ¸í·É¾î¸ðµå -> ½ÇÇà¸ðµå -> Á¾·á
vi ¿¡µðÅ͸¦ ÀÌ¿ëÇÏ¿© ¾ÆÆÄÄ¡ ȯ°æ¼³Á¤ ÆÄÀÏ(httpd.conf)À» ¿±´Ï´Ù. [root@nextline ~]# vi /usr/local/apache/conf/httpd.conf
¨è LogFormat Á¦°Å
±âº»À¸·Î ¼³Á¤µÇ¾î ÀÖ´Â LogFormat ºÎºÐÀ» Á¦°ÅÇÕ´Ï´Ù.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent
¨é Áö½ÃÀÚ ¹× ȯ°æº¯¼ö ¼³Á¤
¾Æ·¡¿Í °°ÀÌ LogFormat °ú ·ÎÅ×ÀÌÆ® ½ºÅ©¸³Æ® ºÎºÐÀ» Ãß°¡ÇÕ´Ï´Ù.
LogFormat "%v -> %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m-%d 86400" combined env=!not_log CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log.%m-%d 86400" combined env=!not_log
SetEnvIfNoCase Request_URI "\.(bmp|gif|jpg|jpeg|png|css|swf)$" not_log SetEnvIf Request_URI "/default.ida$" not_log SetEnvIf Request_URI "(cmd.exe|root.exe)$" not_log
LogFormat Áö½ÃÀÚ Áö½ÃÀÚ¿¡ ¼³Á¤µÈ ³»¿ë¿¡ µû¶ó ·Î±×ÆÄÀÏ(access_log)¿¡ ±â·ÏÀ» Çϸç |(pipe)¿¡ ¼³Á¤ÇÑ ¿Ü ºÎ ÇÁ·Î±×·¥À» ÀÎÀÚ·Î »ç¿ëÇÏ¿© ´ÙÁß ·Î±×¸¦ ±â·ÏÇÕ´Ï´Ù.
%a : ¿ø°ÝÀÇ IP ÁÖ¼Ò %b : Çì´õ¸¦ Æ÷ÇÔÇÑ Àü¼Û·®(bytes) %{var}e : ȯ°æ º¯¼ö "var" %f : ÆÄÀÏÀ̸§ %h : ¿ø°ÝÀÇ È£½ºÆ® %{hdr}i : ¼¹ö¿¡ µé¾î¿À´Â(¿äû) Çì´õ °ª "hdr" %l : ¿ø°ÝÀÇ ·Î±×ÀÎ ID(Áö¿øÇÑ´Ù¸é) %{label}n : ´Ù¸¥ ¸ðµâ¿¡¼ "label" ±¸¼º %{hdr}o : ÀÀ´ä Çì´õ °ª "hdr" %p : ¼¹öÀÇ Canonical Æ÷Æ® ¹øÈ£ %P : ÀÚ½Ä ÇÁ·Î¼¼½º ID(PID) %r : ù¹ø° ¿äû ¶óÀÎ %s : »óÅÂÄÚµå %t : ½Ã°£ Æ÷¸Ë(CLF Æ÷¸Ë) %{format}t : "format"À¸·Î ±¸¼ºµÈ ½Ã°£ Æ÷¸Ë %T : ¼¹ö¿¡ ¿äûÇÏ´Â ½Ã°£(ÃÊ) %u : ¿ø°ÝÀÇ À¯ÀúÀ̸§(ÀÎÁõ½Ã) %U : ¿äûÇÑ URL %v : Ŭ¶óÀ̾ðÆ® ¿äû¿¡ µû¸¥ Canonical ¼¹ö³×ÀÓ %V : UseCanonicalName ¼³Á¤¿¡ µû¸¥ ¼¹ö³×ÀÓ
CustomLog Áö½ÃÀÚ LogFormat Áö½ÃÀÚ¿Í ºñ½ÁÇÑ ±â´ÉÀ» Çϸç LogFormat Áö½ÃÀÚ¿¡ ¼³Á¤ÇÑ nicknameÀ̳ª LogformatÀ» ÀÎÀÚ·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. CustomLog Áö½ÃÀڴ ȯ°æº¯¼ö¸¦ ÀÎÀÚ·Î °¡ Áú¼ö ÀÖ½À´Ï´Ù.
ȯ°æº¯¼ö ¼³Á¤
SetEnvIfNoCase Áö½ÃÀÚ´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê°Ú´Ù´Â ÀǹÌÀÔ´Ï´Ù.
SetEnvIfNoCase Request_URI "\.(bmp|gif|jpg|jpeg|png|css|swf)$" not_log ƯÁ¤ ŸÀÔÀÇ ÆÄÀϸ¸ ȯ°æº¯¼ö·Î ¼³Á¤ÇÒ ¶§ »ç¿ëÇÏ¸ç ¿äû URL(Requset_URI) ÆÄÀÏÀÌ*.bmp, *.gif, *.jpg, *.jpeg, *.png, *.css, *.swf ·Î ³¡³ ÆÄÀÏÀÎ °æ¿ì(´ë¼Ò¹®ÀÚ¸¦ ±¸º° ÇÏÁö ¾ÊÀ½) do_not_log ȯ°æº¯¼ö¿¡ ÁöÁ¤ÇÕ´Ï´Ù. not_log´Â do_not_logÀÇ ¹Ý´ëÀÔ´Ï´Ù. CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m-%d 86400" combined env=!not_log CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/error_log.%m-%d 86400" combined env=!not_log
À§ ¼³Á¤Àº /usr/local/apache/bin/rotatelogs¶ó´Â À¯Æ¿¸®Æ¼¸¦ ½ÇÇà½ÃÄѼ access_log ÆÄÀÏ °ú error_log ÆÄÀÏÀ» 24½Ã°£(86400ÃÊ)¸¸¿¡ Çѹø¾¿ ·ÎÅ×ÀÌÆ®½ÃÅ°¶ó´Â ÀǹÌÀÔ´Ï´Ù.
¨ê apache Àç ½ÃÀÛ ¾ÆÆÄÄ¡¸¦ Àç ½ÃÀÛÇÏ¿© º¯°æµÈ ¼³Á¤À» Àû¿ë½ÃÄÑÁÝ´Ï´Ù.
[root@nextline ~]# /usr/local/apache/bin/apachectl restart
¨ë rotate_http ½ºÅ©¸³Æ® »ý¼º cron¿¡ ÀÇÇØ ÁÖ±âÀûÀ¸·Î ½ÇÇà½ÃÄÑÁÖ±â À§ÇÑ ½ºÅ©¸³Æ®¸¦ »ý¼ºÇÕ´Ï´Ù. [root@nextline ~]# vi /root/bin/rotate_http
¨ì ½ºÅ©¸³Æ® Ãß°¡ #!/bin/sh DIR=/usr/local/apache/logs COUNT=`ls -1 $DIR/access_log.*|wc -l|awk '{print $1}'` [ $COUNT -ge 4 ] && ls -tr $DIR/access_log.*|head -1|xargs rm -f
¨í crontab µî·Ï vi ¿¡µðÅ͸¦ ÀÌ¿ëÇÏ¿© /etc/crontabÀ» ¿±´Ï´Ù. [root@nextline ~]# vi /etc/crontab
¾Æ·¡¿Í °°ÀÌ crontab¿¡ Ãß°¡ÇÕ´Ï´Ù.
# À¥·Î±× °ü¸® ½ºÅ©¸³Æ® 00 5 * * * root /root/bin/rotate_http
¨î logrotated ¼³Á¤È®ÀÎ ·Î±×ÆÄÀÏ(access_log, error_log) ·ÎÅ×ÀÌÆ®°¡ Á¤»óÀûÀ¸·Î ÀÌ·ç¾îÁö´ÂÁö È®ÀÎÇÕ´Ï´Ù. [root@nextline ~]# ls -ll /usr/local/apache/logs/
|
|