RRD¸¦ ÀÌ¿ëÇÑ ´ë·® À¥·Î±× ºÐ¼® 2 : ±¸Çö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 ±¸Çö ȯ°æ
2 ÆäÀÌÁöº° Åë°è ½Ã½ºÅÛ
2.1 ·Î±× ¼­¹ö Áغñ
2.2 IMG ű×
3 RRD ÆÄÀÏ »ý¼º
4 RRD Update¿¡¼­ÀÇ ¹®Á¦Á¡
5 ·Î±× ¼­¹ö Áغñ
6 ºÐ¼® ÇÁ·Î±×·¥
7 Àû¿ë °á°ú

RRD¸¦ ÀÌ¿ëÇÑ ´ë·® À¥·Î±× ºÐ¼® 1ÀÇ ÈÄ¼Ó ¹®¼­·Î, ±¸Çö¿¡ ´ëÇÑ ³»¿ëÀ» ´Ù·ê °ÍÀÌ´Ù.

1 ±¸Çö ȯ°æ

Linux ¿î¿µÃ¼Á¦¿¡¼­ C++°ú RRD, SQLite(:12)¸¦ ÀÌ¿ëÇØ¼­ ±¸ÇöÇØº¼ »ý°¢ÀÌ´Ù.

RRD´Â ½Ã°£À» ÃàÀ¸·Î ÇÏ´Â Åë°èÁ¤º¸ÀÇ ÀúÀåÀ» À§Çؼ­ »ç¿ëµÉ°Çµ¥, joincÀÇ °¢ ÆäÀÌÁöÀÇ ¹æ¹®Åë°è¸¦ ÀúÀåÇÏ´Â ÅøÀ» ¸¸µé¾îº¼ »ý°¢ÀÌ´Ù. ÆäÀÌÁö°¡ ´ë·« 2800°³ Á¤µµ°¡ µÇ´Ï, 2800°³ÀÇ RRD ÆÄÀÏÀ» »ý¼ºÇÏ°Ô µÉ °ÍÀÌ´Ù.

C++Àº ÃÖ±Ù ´Ü½Ã°£ÀÇ Åë°èÁ¤º¸¸¦ ¸¸µå´Â ÇÁ·Î±×·¥À» ¸¸µé °ÍÀÌ´Ù. ¿¹¸¦µé¾î RRDÀÇ ÃÖ¼Ò ÀúÀå´ÜÀ§°¡ 5ºÐÀ̶ó¸é, °¢ ÆäÀÌÁöº°·Î 5ºÐµ¿¾ÈÀÇ Ä«¿îÆ® Á¤º¸¸¦ ¸¸µé¾î¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº 5ºÐµ¿¾ÈÀÇ Ä«¿îÆ®Á¤º¸¸¦ ¸¸µç´ÙÀ½¿¡, °¢ ÆäÀÌÁö¿¡ ´ëÀÀµÇ´Â RRD ÆÄÀÏ¿¡ °ªÀ» insert ÇÒ °ÍÀÌ´Ù. C ´ë½Å C++À» ¼±ÅÃÇÑ ÀÌÀ¯´Â °ÅÀÇ ¼øÀüÈ÷ STLÀ» »ç¿ëÇϱâ À§ÇÔÀÌ´Ù.

SQLite´Â TOPN ±â¹ÝÀÇ RRDÀÇ ±¸ÇöÀ» À§Çؼ­ »ç¿ëÇÑ´Ù. ±¸ÇöÇÒ ¼­ºñ½º´Â ÃÖ±Ù ÀÏ,ÁÖ,¿ù,³â °£ Àα⠹湮 ÆäÀÌÁö Åë°è¼­ºñ½º´Ù.

¿ì¼± ¸¸µé±â ½¬¿î ÆäÀÌÁöº° Åë°è ½Ã½ºÅÛÀ» ¸¸µé°í, ±× µÚ¿¡ TOPN ±â¹ÝÀÇ ¹æ¹®ÆäÀÌÁö Åë°è ½Ã½ºÅÛÀ» ¸¸µé °ÍÀÌ´Ù. TOPN±â¹ÝÀÇ ¹æ¹®ÆäÀÌÁö Åë°è ½Ã½ºÅÛÀº µû·Î ¹®¼­¸¦ ¸¸µé°èȹÀÌ´Ù.

2 ÆäÀÌÁöº° Åë°è ½Ã½ºÅÛ

Åë°è ÀÚ·á´Â apache À¥·Î±×·Î ÇÒ °ÍÀÌ´Ù. ±×·¯¹Ç·Î ¿ì¼±, ½Ç½Ã°£À¸·Î À¥·Î±×¸¦ ó¸®ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÁöÁ¤µÈ À¥·Î±× ÆÄÀÏÀ» ÁÖ½ÃÇϰí ÀÖ´Ù°¡ »õ·Î¿î ·Î±×°¡ µé¾î¿À¸é, Àû´çÈ÷ ÆÄ½ÌÇÑ´ÙÀ½ ÆäÀÌÁö À̸§¿¡ ´ëÇØ¼­ countingÀ» ÇÒ °ÍÀÌ´Ù.

2.1 ·Î±× ¼­¹ö Áغñ

apache·Î±× ÀÚü¸¦ ºÐ¼®ÇÏ´Â ¹æ¹ýµµ ÀÖÁö¸¸, ÀÌ·± Àú·± Àâ´ÙÇÑ Á¤º¸µéÀÌ ¸¹¾Æ¼­ ºÐ¼®Çϴµ¥ ¾µµ¥¾ø´Â ºñ¿ëÀÌ ¸¹À̵ç´Ù´Â ¹®Á¦Á¡À» °¡Áø´Ù. ±×·¡¼­ º°µµÀÇ ·Î±× ¼­¹ö¸¦ Çϳª ¸¸µé »ý°¢ÀÌ´Ù. ÀÌ ·Î±×¼­¹ö´Â ºÐ¼®¿¡ ÇÊ¿ä·ÎÇÏ´Â ·Î±×¸¸À» °¡Áö°Ô µÈ´Ù. ÀÌ ·Î±× ¼­¹öÀÇ À̸§Àº log serverÀ̶ó°í ÇϰڴÙ. ºÐ¼®ÇؾßÇÒ ·Î±×¸¦ Àü¼ÛÇÏ´Â ¼­¹ö´Â joinc server´Ù.

Àü¼ÛÀº img ű׸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù. ·Î±×ºÐ¼®¿¡ ÇÊ¿äÇÑ ¿©·¯°¡Áö Á¤º¸¸¦ img ÅÂ±×¿Í ÇÔ²² GET log server·Î ³Ñ±ä´Ù. ±×·¯¸é log server´Â ÀÌ Á¤º¸¸¦ apache access log¿¡ ³²±ä´Ù.

logsysgem.png

log server´Â cpu¿Í memory ÀÚ¿øÀ» ¼ÒºñÇÒ ¼ö ÀÖÀ¸´Ï, ¿ø°ÝÁö¿¡ µÎ´Â°Ô ÁÁ°ÚÀ¸³ª ¿©°ÇÀÌ Çã¶ôÇÏÁö ¾Ê´Â °ü°è·Î joinc server¿Í °°Àº À§Ä¡¿¡ µÎ±â·Î Çß´Ù. ·Î±×¾çÀÌ ¸¹À» °Å¶ó°í »ý°¢µÇÁö ¾ÊÀ¸´Ï, ±×´Ú ¹®Á¦ ¾øÀ» °Í °°±âµµ Çϰí..

2.2 IMG ű×

À̹ÌÁö¸¦ ·ÎµùÇÏ´Â °ÍÀ̱⠶§¹®¿¡, ¸¸¾à query string¸¦ Æ÷ÇÔÇÑ À̹ÌÁöÀ̸§ÀÌ °°´Ù¸é, ij½¬¿¡ ÀÖ´Â °ÍÀ» ÀÐ¾î ¹ö¸°´Ù. À̹ÌÁöÀ̸§À» ¹Ù²Ü¼ö´Â ¾øÀ¸¹Ç·Î, query stringÀÌ Ç×»ó´Þ¶óÁú ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ¿©±â¿¡¼­´Â ÆäÀÌÁö¸¦ Àд ½Ã°£À» query stringÀÇ °ªÀÌ ´Þ¶óÁöµµ·Ï Çß´Ù.
<img src=http://..../imgs/log.png?page=111&time=1238192011&...> 
 

3 RRD ÆÄÀÏ »ý¼º

¿ì¼± RRD ÆÄÀÏÀ» »ý¼ºÇÏ´Â °£´ÜÇÑ shell ½ºÅ©¸³Æ®¸¦ ¸¸µé¾ú´Ù. ÀÌ ÇÁ·Î±×·¥ÀÇ À̸§Àº makerrd.sh ·Î Çß´Ù. ·Î±×ÀÇ ¾çÀÌ ¸¹Àº°Ô ¾Æ´Ï¹Ç·Î, Ãּҽ𣠰£°ÝÀº 1½Ã°£À¸·Î Çß´Ù.
#!/bin/sh 
#mkrrd.sh 
rrdtool create ../rrd/$RRDFILE --start 1232247600 --step 3600 \ 
DS:count:GAUGE:7200:U:U \ 
RRA:AVERAGE:0.5:1:48 \ 
RRA:AVERAGE:0.5:24:360 \ 
RRA:AVERAGE:0.5:720:36 
 
ÀÌÁ¦, À§Å°ÆäÀÌÁö°¡ ÀúÀåµÇ¾î ÀÖ´Â µð·ºÅ丮ÀÇ ÆÄÀÏÀ» Àаí, ±× ÆÄÀÏÀ̸§À» ÀÎÀÚ·Î ÇØ¼­ makerrd.sh¸¦ ½ÇÇà½ÃŰ´Â °£´ÜÇÑ perl ½ºÅ©¸³Æ®¸¦ ¸¸µé¾ú´Ù.
#!/usr/bin/perl -w 
 
$dirname = $ARGV[0]; 
opendir(DIR, $dirname) || die "Error in opening dir $dirname"; 
 
while($filename = readdir(DIR)) 
{ 
  if(!($filename =~ /^\./)) 
  { 
    system("./makerrd.sh $filename"); 
  } 
} 
close(DIR); 
 

4 RRD Update¿¡¼­ÀÇ ¹®Á¦Á¡

RRDÅøÀº heatbeat ½Ã°£³»¿¡ µ¥ÀÌÅͰ¡ µé¾î¿ÀÁö ¾ÊÀ» °æ¿ì, °ªÀ» nanÀ¸·Î ¼³Á¤À» ÇÑ´Ù. °ªÀÌ nanÀ¸·Î ¼³Á¤µÉ °æ¿ì¿¡´Â ÃøÁ¤µÈ °ªÀÌ ¾ø´Â °ÍÀ¸·Î ÆÇ´ÜÇÏ¿©, Åë°èµ¥ÀÌÅÍ·Î °£ÁÖ°¡ µÇÁö ¾Ê´Â´Ù.

À̰ÍÀº ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé, ÀÌ °æ¿ì¿¡ nanÀº ÃøÁ¤°ªÀÌ ¾ø´Ù¶ó´Â Àǹ̰¡ ¾Æ´Ñ, 0À¸·Î ÃøÁ¤µÇ¾ú´Ù¶ó´Â Àǹ̷Π¹Þ¾Æµé¿©¾ß Çϱ⠶§¹®ÀÌ´Ù. °£´ÜÈ÷ »ý°¢Çؼ­ ´ÙÀ½°ú °°Àº µ¥ÀÌÅͰ¡ ÀÖÀ» ¶§
1231412400: 1.1000000000e+01 
1231416000: 1.1000000000e+01 
1231419600: nan 
1231423200: nan 
1231426800: nan 
1231416000: 1.1000000000e+01 
 
¿ì¸®°¡ ¿øÇÏ´Â Æò±Õ°ªÀº (1.1+1.1+1.1)/6 ÀÌÁö¸¸, ½ÇÁ¦·Î´Â (1.1+1.1+1.1)/3ÀÌ µÇ¾î ¹ö¸°´Ù.

RRDÅøÀº ÀÌ·¯ÇÑ ¹æ¹ýÀ» ÀÚµ¿ÀûÀ¸·Î ÇØ°áÇØÁÖÁö ¾Ê´Â °Í °°´Ù. ¾î¿ ¼ö ¾øÀÌ updateÇÏ´Â ½ÃÁ¡¿¡, last update ½ÃÁ¡À» ã¾Æ³½ ´ÙÀ½¿¡ update¿Í lastupdate »çÀÌ¿¡ ÀÖ´Â ¸ðµç °ªÀ» 0À¸·Î ¸¸µå´Â ¹æ¹ýÀ» »ç¿ëÇϱâ·Î Çß´Ù. Áï À§ÀÇ ¿¹ÀÇ °æ¿ì, 1231416000: 1.1000000000e+01 À» update ÇØ¾ß ÇÏ´Â ½ÃÁ¡¿¡ last update°¡ 1231416000: 1.1000000000e+01 ÀÌ´Ï, ±× »çÀÌ¿¡ ÀÖ´Â °ªµéÀ» ÀüºÎ 0À¸·Î ¼³Á¤ÇØÁØ´Ù. ÃÖÁ¾ÀûÀ¸·Î ¾Æ·¡¿Í °°Àº µ¥ÀÌÅͰ¡ ½×ÀÌ°Ô µÉ °ÍÀÌ´Ù.
1231412400: 1.1000000000e+01 
1231416000: 1.1000000000e+01 
1231419600: 0 
1231423200: 0 
1231426800: 0 
1231416000: 1.1000000000e+01 
 

5 ·Î±× ¼­¹ö Áغñ

log.joinc.co.kr À» Çϳª ¸¸µé°í, log_access.log·Î apache access log°¡ ½×À̵µ·Ï Çß´Ù. joinc server¿¡ img ű׸¦ ´Þ¾Ò´õ´Ï, ´ÙÀ½°ú °°Àº ·Î±×°¡ ³²´Â°Ô È®ÀεǾú´Ù.
... 
59.18.203.132 - - [11/Jan/2009:13:02:16 +0900] "GET /imgs/log.gif?page=man_2f12_2fIPv6&time=.... HTTP/1.1" 200 62 
59.18.203.132 - - [11/Jan/2009:13:02:26 +0900] "GET /imgs/log.gif?page=Site_2fTCP_5fIP_2fIPv6_2fIPv6Env&time=... HTTP/1.1" 200 62 
211.187.253.41 - - [11/Jan/2009:13:02:59 +0900] "GET /imgs/log.gif?page=pthread_20_bf_b9_c1_a61&time=... HTTP/1.1" 200 62 
... 
 
ÀÌÁ¦ ºÐ¼®ÇÁ·Î±×·¥À» ¸¸µé Â÷·Ê´Ù.

6 ºÐ¼® ÇÁ·Î±×·¥

C++·Î ¸¸µé °ÍÀÌ´Ù. log server°¡ ³²±â´Â access ·Î±×¸¦ ÁöÄѺ¸´Ù°¡. »õ·Î¿î log°¡ ¹ß»ýÇϸé, ºÐ¼®Çؼ­ countingÀ» ÇÑ´Ù. ±×·¯´Ù°¡ 1½Ã°£ Áö³ª¸é, ÀÌ °ªÀ» RRD Å×ÀÌºí¿¡ ¾´´Ù. ºÐ¼®ÇÁ·Î±×·¥Àº tail ÇÔ¼ö¸¦ ¾à°£ ¼öÁ¤Çؼ­ Á¦ÀÛÇß´Ù.

´ë·« µ¹¾Æ°¡´Â°Ô È®ÀεǾ, ÇöÀç joninc ·Î±×¸¦ ºÐ¼®Àº Çϰí ÀÖÁö¸¸ Äڵ尡 ÁöÀúºÐÇÑ °ü°è·Î ¾ÆÁ÷Àº °ø°³ÇÏÁö ¾ÊÀ» »ý°¢ÀÌ´Ù. Á» ´õ ´Ùµë¾î¼­ °ø°³Çغ¼±î »ý°¢ÇÑ´Ù. ÀÌ¹Ì ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â tail ÇÔ¼öµµ ÀÖÀ¸´Ï, Äڵ带 ¸¸µå´Â °Ç ±×´Ú ¾î·ÆÁö ¾ÊÀ» °ÍÀ̶ó°í »ý°¢µÈ´Ù.

7 Àû¿ë °á°ú

¾Æ·¡ µ¥ÀÌÅÍ´Â Average À̹ǷÎ, Ãâ·Â°ªÀ» Á¶ÀýÇØÁà¾ß ÇÒ °ÍÀÌ´Ù. Åë°è°¡ ÀÖ´Â ÆäÀÌÁö´Â ¾Æ·¡ÀÇ ±×·¡ÇÁ°¡ ¶ßµµ·Ï Çß´Ù. ¾î´ÀÁ¤µµ Åë°èÀڷḦ ¸¸µé¸é, ÁÖ/¿ù/³â ÀڷḦ ¸¸µé¾îº¼ »ý°¢ÀÌ´Ù. ±×¸®°í À§ÀÇ Äڵ嵵 Á»´õ ´ÙµëÀ» °èȹÀÌ´Ù. ±×·¡ÇÁ´Â google chart¸¦ ÀÌ¿ëÇØ¼­ »ý¼ºÇß´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.