[TIP] ÇÁ·Î¼¼½º °ü¸®Çϱâ
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

¿äÁòµé¾î named µ¥¸óÀÌ Á×´Â ÀÏÀÌ Á¾Á¾¹ß»ýÇÑ´Ù. Áö³­ ½ÅÁ¤¿¬ÈÞ¿¡´Â °ÅÀÇ ÀÌÆ² Á¤µµ named µ¥¸óÀÌ Á×¾îÀÖ¾ú°í, ÀÌ ¶§¹®¿¡ À¥¿¡ Á¢±ÙÇÏÁö ¸øÇÏ´Â ÀÏÀÌ ¹ß»ýÇß´Ù. ¿øÀÎÀ» ã¾Æ¼­ ÇØ°áÀ» ÇØ¾ß °ÚÁö¸¸ ½Ã°£ÀÌ ¾ó¸¶³ª °É¸±Áö ¾Ë ¼ö ¾ø°í, ´çÀåÀº ¼­ºñ½º°¡ ¹®Á¦¾øÀÌ µÇ´Â°Ô Áß¿äÇÏ´Ù°í »ý°¢ÀÌ µÇ¾î¼­, °£´ÜÇÑ ÇÁ·Î¼¼½º °ü¸® ÇÁ·Î±×·¥À» ¸¸µé±â·Î Çß´Ù.

ÀÌ ÇÁ·Î±×·¥Àº ÇÁ·Î¼¼½º°¡ ¶°ÀÖ´ÂÁö °Ë»çÇØ¼­, ¶°ÀÖÁö ¾ÊÀ» °æ¿ì Àç½ÇÇà ½ÃŲ´Ù. ÇÁ·Î±×·¥Àº perlÀ» ÀÌ¿ëÇØ¼­ ÀÛ¼ºÇß´Ù. procÆÄÀϽýºÅÛÀ» ºÐ¼®Çؼ­, ÇÁ·Î¼¼½º Á¤º¸¸¦ ¾ò¾î¿Ã ¼ö ÀÖ°ÚÁö¸¸, ±ÍÂú¾Æ¼­ ±×³É ps(1)¸¦ ÀÌ¿ëÇß´Ù. thread °¹¼ö¸¦ ¾ò±â À§Çؼ­ procÆÄÀϽýºÅÛÀ» ºÐ¼®Çß´Ù.

#!/usr/bin/perl 
 
$argnum = $#ARGV+1; 
$PNAME = $ARGV[0]; 
$PID=$$; 
 
# thread °¹¼ö¸¦ ¾ò¾î¿Â´Ù. 
sub getThreadNum 
{ 
  my($PID) = @_; 
  my $PROC = "/proc/$PID/status"; 
  my $thread=""; 
  my $line; 
  open(LFD, $PROC) || die "Process Status FAILURE |status=0\n"; 
 
  while($line=<LFD>) 
  { 
    if ($line =~ m/^Threads:/) 
    { 
      $line =~ s/\s+$//; 
      @_=split /:[ \t]+/,$line; 
      $thread=$_[1]; 
      close(LFD); 
      return atoi($thread); 
    } 
  } 
  close(LFD); 
} 
 
# ¹®ÀÚ¿­À» intÇü ¼ýÀÚ·Î º¯°æÇÑ´Ù. 
sub atoi 
{ 
    my $num; 
    foreach my $d (split(//, shift())) 
    { 
        $num = $num * 10 + $d; 
    } 
    return $num; 
} 
 
# ps¸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¾ò¾î¿Â´Ù. 
# ¸ñ·ÏÁß¿¡ ÀÎÀÚ·Î ÁÖ¾îÁø ÇÁ·Î¼¼½º À̸§°ú °°Àº ÁÙÀ» ºÐ¼®Çؼ­ 
# ÇÁ·Î¼¼½ºÀÇ Á¤º¸¸¦ ¾ò¾î³½´Ù. 
open(FD, "ps aux |") || die "Process Status FAILURE |status=0\n"; 
$CpuUsage = 0.0; 
$MemUsage = 0.0; 
$MemSize = 0; 
$Pnum = 0; 
$TNum = 0; 
while($line = <FD>) 
{ 
  if ($line =~ m/$PNAME/) 
  { 
    if ($line =~ m/$0/) 
    { 
    } 
    else 
    { 
      @_ = split / +/,$line; 
      $CpuUsage = $CpuUsage + $_[2]; 
      $MemUsage += $_[3]; 
      $MemSize += $_[4]; 
      $TNum += getThreadNum($_[1]); 
      $Pnum++; 
    } 
  } 
} 
if ($Pnum == 0) 
{ 
    printf "Process Status OK |status=0\n"; 
    system("/etc/rc.d/init.d/named restart"); 
} 
else 
{ 
    printf "Process Status OK |status=1 cpu=%d mem=%d num=$Pnum size=%d thread=%d\n", $CpuUsage, $MemUsage, $MemSize, $TNum; 
} 
 
ÇÁ·Î±×·¥Àº ¿¹»ó¿Ü·Î º¹ÀâÇѵ¥, ±× ÀÌÀ¯´Â ¾ÖÃÊ¿¡ ÀÌ ÇÁ·Î±×·¥ÀÌ ÇÁ·Î¼¼½ºÀÇ »ó¼¼Á¤º¸¸¦ ¾Ë·ÁÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î ¸¸µé¾îÁ³±â ¶§¹®ÀÌ´Ù. ¿©±â¿¡ ÇÁ·Î¼¼½º °¹¼ö°¡ 0À̸é system(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ named µ¥¸óÀ» ¸®½ºÅ¸Æ® ½ÃŰ´Â ÄÚµå ÇÑÁÙ¸¸ Ãß°¡Çß´Ù. ÀÌ ÇÁ·Î±×·¥À» cron¿¡ ÀÔ·ÂÇØ¼­ ÀÏÁ¤ ÁÖ±â·Î ½ÇÇàµÇ°Ô ¸¸µé¾ú´Ù.

ÀÌ ÇÁ·Î±×·¥Àº process°¹¼ö, thread°¹¼ö, ¸Þ¸ð¸®¹× cpu »ç¿ëÀ² µîÀÇ Á¤º¸¸¦ ¸®ÅÏÇÑ´Ù. ¸®ÅϰªÀº ½Ã½ºÅÛ°ü¸®ÇÁ·Î±×·¥ÀÇ ÇϳªÀÎ nagios¿¡¼­ »ç¿ë°¡´ÉÇÑ Æ÷¸ËÀÇ ¹®ÀÚ¿­ÀÌ´Ù.


EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.