±âŸ(framework)
2019.05.29 / 24:47

5. ScouterÀÇ ½ÇÇà ¹× Á¾·á ÆÄÀÏÀº ¾î¶² ¿ø¸®·Î µ¿ÀÛÇÒ±î?

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 334

À̹ø Æ÷½ºÆÃÀº Àá½Ã ½¬¾î°¡´Â ´À³¦ÀÇ Æ÷½ºÆÃÀ¸·Î °¡º­¿î ¸¶À½À¸·Î ÈȾ¸é ÃæºÐÇÏ´Ù.

½ºÄ«¿ìÅÍÀÇ ½ÇÇàÆÄÀÏÀÎ startup.sh (¶Ç´Â startup.bat)¿Í Á¾·áÆÄÀÏÀÎ stop.sh (¶Ç´Â stop.bat)ÀÌ ¾î¶² ¸í·É¾î¸¦ ¼öÇàÇϸç, ½ºÄ«¿ìÅÍ¿¡ ¾î¶»°Ô ¿µÇâÀ» ÁÖ¸ç µ¿ÀÛÇÏ´ÂÁö¿¡ ´ëÇØ »ìÆ캸µµ·Ï ÇÏ°Ú´Ù.
server¿Í agent¸ðµÎ Äڵ尡 °ÅÀÇ µ¿ÀÏÇϱ⠶§¹®¿¡ server¸¦ ±âÁØÀ¸·Î ÁøÇàÇÏ°Ú´Ù.

Â÷·Ê´Â ´ÙÀ½°ú °°´Ù.

1. ½ÇÇàÆÄÀÏÀÇ ±¸¼º ¹× µ¿ÀÛ¿ø¸®
 1-1. startup.shÀÇ ³»¿ë
  1-2. ½ÇÇà ½Ã Scouter ³»ºÎ¿¡¼­ÀÇ ÀÛ¾÷
2. Á¾·áÆÄÀÏÀÇ ±¸¼º ¹× µ¿ÀÛ¿ø¸®
  2-1. stop.shÀÇ ³»¿ë
3. ¿¹Á¦
4. ¸¶Ä¡¸ç

1. ½ÇÇàÆÄÀÏÀÇ ±¸¼º ¹× µ¿ÀÛ¿ø¸®

1-1. startup.shÀÇ ³»¿ë

´ç¿¬ÇÏ°Ôµµ ½ºÄ«¿ìÅÍÀÇ ¼­¹ö¸¦ ½ÇÇà½ÃÅ°±â À§Çؼ­´Â startup.sh (¶Ç´Â startup.bat)À» ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù. ÀÌ ÆÄÀÏÀ» ½ÇÇàÇϸé, ³»ºÎÀÇ ¸í·É¾î¸¦ ÅëÇØ scouter server°¡ ½ÇÇàµÇ´Â ¹æ½ÄÀÌ´Ù.

³»ºÎ Äڵ带 º¸¸é ¾Æ·¡¿Í °°´Ù.

startup.sh

3¹ø ¶óÀÎÀÇ ºÎºÐÀÌ Äڵ带 ½ÇÇà½ÃÅ°´Â ÇÙ½É ºÎºÐÀÌ´Ù.

nohup java -Xmx512m -classpath ./boot.jar scouter.boot.Boot ./lib > nohup.out &

¿ì¼± nohup´Â µÚ¿¡ ½ÇÇàµÉ ¸í·É¾î°¡ ½©ÀÌ Á¾·áµÇ´õ¶óµµ °è¼Ó ½ÇÇà»óŸ¦ À¯ÁöÇÒ ¼ö ÀÖµµ·Ï ÇÏ°Ô ÇÏ´Â ¸í·É¾îÀÌ´Ù. Áï, nohup¸¦ ºÙÀÎ ¸í·É¾î´Â Å͹̳ÎÀ» ²¨µµ °è¼Ó ½ÇÇàÀÌ µÇ°Ô ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. 
ÀϹÝÀûÀ¸·Î remote ȯ°æ¿¡¼­ ssh µîÀ¸·Î ÀÛ¾÷À» ¸¹ÀÌ Çϴµ¥, ÀÌ ¶§ ssh Á¢¼ÓÀ» Á¾·áÇÏ¸é µ¢´Þ¾Æ ÇÁ·Î±×·¥ÀÌ ´Ù Á¾·áµÇ´Â Âüº¯À» ¸·±â À§ÇÔÀÌ´Ù.

´ÙÀ½À¸·Î -Xmx512mÀ» ÅëÇØ Max Heap Size¸¦ 512 MB·Î ¼³Á¤ÇÑ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. XmxÀÇ µðÆúÆ® °ªÀº 6MBÀε¥, 512·Î ÇÑ ÀÌÀ¯´Â ¾Æ¹«·¡µµ ¼­¹ö¿¡¼­ ´Ù¾çÇÑ ÀÛ¾÷À» ó¸®Çϱ⠶§¹®¿¡ ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ¿ä±¸ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

´ÙÀ½À¸·Î > nohup.outÀ» º¸¸é ÇÁ·Î±×·¥ ½ÇÇà ½Ã ³ª¿À´Â Ãâ·Â ¹®±¸µéÀ» ÀüºÎ nohup.outÀ̶ó´Â ÆÄÀÏÀ» »ý¼ºÇÏ¿© ¸®µð·ºÆ® ÇÏ°íÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ½±°Ô¸»ÇØ Ãâ·Â ¹®±¸µéÀ» È­¸é¿¡ ¹Ù·Î ¶ç¿ìÁö ¾Ê°í, nohup.out¿¡ ÀúÀåÇÑ´Ù´Â ÀǹÌÀÌ´Ù.

¸¶Áö¸·À¸·Î &¸¦ ºÙ¿©¼­ ÇÁ·Î±×·¥ÀÌ ¹é±×¶ó¿îµå·Î µ¹¾Æ°¡°Ô ÇßÀ½À» ¾Ë ¼ö ÀÖ´Ù.

³ª¸ÓÁö 2ÁÙÀº °£´ÜÇÏ´Ù.
¸ÕÀú 3¹ø ¶óÀÎ ½ÇÇà ÈÄ 4¹ø ¶óÀÎÀ» ÅëÇØ 1Ãʵ¿¾È Àá±ñ sleep »óÅ·Π´ë±âÇÑ´Ù.
ÀÌÈÄ 5¹ø ¶óÀο¡¼­, nohup.out¿¡ ¾²¿´´ø ³»¿ë Áß ¸Ç µÚÀÇ 100ÁÙÀ» È­¸é¿¡ Ãâ·ÂÇØÁØ´Ù.


1-2. ½ÇÇà ½Ã Scouter ³»ºÎ¿¡¼­ÀÇ ÀÛ¾÷

1-1¿¡¼­ »ìÆ캻 startup.sh¸¦ ÅëÇØ ½ºÄ«¿ìÅÍ°¡ ºÒ·ÁÁö¸é ½ºÄ«¿ìÅÍ ³»ºÎÀÇ scouter.server.Main ÀÌ Á¦ÀÏ Ã¹Â°·Î È£ÃâµÈ´Ù.
Main.javaÀÇ ³»¿ë Áß ÀϺθ¦ À߶󳻼­ ¼³¸íÇÏÀÚ¸é ¾Æ·¡¿Í °°´Ù.

Áï, startup.sh¸¦ ½ÇÇà½ÃÅ°¸é ³»ºÎ¿¡ 5371.scouter¿Í °°ÀÌ ½ºÄ«¿ìÅÍÀÇ ÇÁ·Î¼¼½º ID¸¦ À̸§À¸·Î ÇÏ´Â ÆÄÀÏÀÌ »ý¼ºµÈ´Ù. °á±¹ ÀÌ ÆÄÀÏÀÌ ÀÖ´Ù¸é ½ºÄ«¿ìÅÍ°¡ ½ÇÇàÁßÀ̶õ ¶æÀÌ µÈ´Ù.

±âŸ Ç÷¯±×ÀΠȣÃâÀ̳ª init °úÁ¤Àº º» °Ô½Ã±ÛÀÇ ÃëÁö¿¡ ¹þ¾î³ª¹Ç·Î »ý·«Çϵµ·Ï ÇÏ°Ú´Ù. ´ÜÁö pid.scouter¿Í °°Àº ÆÄÀÏÀÌ ½ÇÇà ½Ã »ý¼ºµÈ´Ù´Â Á¡¸¸ ¾Ë¸é µÈ´Ù.


2. Á¾·áÆÄÀÏÀÇ ±¸¼º ¹× ÀÛµ¿¿ø¸®

2-1. stop.shÀÇ ³»¿ë

ÀÌÁ¦ ÇÁ·Î±×·¥À» Á¾·á½ÃÅ°´Â stop.sh¸¦ »ìÆ캸¸é ¾Æ·¡¿Í °°ÀÌ ¸Å¿ì ´Ü¼øÇÑ ÇüÅÂÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.

stop.sh

¼³¸íÇÒ °Íµµ ¾øÀÌ .scouter·Î ³¡³ª´Â ¸ðµç ÆÄÀÏÀ» Áö¿ì´Â °ÍÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.
Áï, startup.sh¸¦ ÅëÇØ »ý¼ºµÈ .scouterÆÄÀÏÀ» ´Ü¼øÈ÷ stop.sh¸¦ ÅëÇØ »èÁ¦ÇÏ´Â ÇüÅÂÀÌ´Ù.

±×·¸´Ù¸é .scouter ÆÄÀÏÀ» »èÁ¦ÇÏ´Â °ÍÀ¸·Î¸¸ ¾î¶»°Ô ½ºÄ«¿ìÅ͸¦ Á¾·á½Ãų ¼ö ÀÖ´Â °ÍÀϱî?
ÀÌÀü¿¡ »ìÆ캻 ¼Ò½ºÄڵ忡 ¼³¸íÀ» ´õÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù.

Áï, .scouter ÆÄÀÏÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ °Ë»çÇÏ¿© ¾ø´Ù¸é ÇÁ·Î±×·¥À» Á¾·á(exit(0))¸¦ ÇÏ´Â ¹æ½ÄÀÌ´Ù.



3. ¿¹Á¦

À§¿Í °°Àº ·ÎÁ÷À» °£´ÜÇÏ°Ô ±¸ÇöÇغ¸¸é ¾Æ·¡¿Í °°ÀÌ ³ªÅ¸³»º¼ ¼ö ÀÖ´Ù.

import java.io.File; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.Executors; import java.text.SimpleDateFormat; import java.util.Date; public class Main{ public static void main(String[] args) { Program p = new Program(); if(p.init() == false) { System.exit(1); //1234.scouter ÆÄÀÏ »ý¼º ½ÇÆнà ºñÁ¤»ó Á¾·á(1) } p.run(); //5ÃÊ °£°Ý ³¯Â¥ Ãâ·ÂÇÏ´Â ½º·¹µå ½ÇÇà } } class Program{ File exit = null; Date date = null; public boolean init() { exit = new File("1234.scouter"); //1234.scouter ÆÄÀÏ »ý¼º ½Ãµµ if(exit.exists()) { //ÀÌ¹Ì ÀÖ´Ù¸é? -> Áߺ¹½ÇÇàÀ̹ǷΠÁ¾·á System.err.println("Already Exist"); return false; } try { exit.createNewFile(); //»õ·Î »ý¼º exit.deleteOnExit(); //½º·¹µå Á¾·á ½Ã °°ÀÌ »èÁ¦µÇ°Ô ¼³Á¤ System.out.println("Create Success"); } catch(Exception e) { System.err.println("Create Fail"); return false; } return true; } public void run() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { //5ÃÊ °£°ÝÀ¸·Î È­¸é¿¡ 2018-08-18 16:23:45¿Í °°ÀÌ Ãâ·Â System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date = new Date())); //1234.scouter ÆÄÀÏÀÌ ¾øÀ¸¸é? -> ÇÁ·Î±×·¥ Á¾·á if(exit.exists() == false) { System.out.println("Exit Program"); System.exit(0); } else { //ÀÖÀ¸¸é? -> ÆÄÀÏÀÇ lastModified¸¦ ÃÖ½ÅÀ¸·Î °»½Å exit.setLastModified(date.getTime()); } } }, 0, 5, TimeUnit.SECONDS); //5ÃÊ °£°ÝÀ¸·Î ½ÇÇà } }


½ÇÇà ½Ã 1234.scouter ÆÄÀÏ »ý¼º È®ÀÎ


1234.scouter »èÁ¦ ½Ã ÇÁ·Î±×·¥ Á¾·á





4. ¸¶Ä¡¸ç...

¿©±â±îÁö Çؼ­ ½ºÄ«¿ìÅÍ ½ÇÇà & Á¾·áÆÄÀÏÀÇ ±¸¼º ¹× µ¿ÀÛ¿ø¸®¿¡ ´ëÇØ °£´ÜÇÏ°Ô ¾Ë¾Æº¸¾Ò´Ù.
º» ±Û¿¡¼­´Â linuxȯ°æ¿¡¼­ÀÇ server¿¡ ´ëÇؼ­¸¸ ¿¹½Ã¸¦ º¸¾ÒÀ¸³ª, WindowsÀÇ .bat ÆÄÀÏÀ̳ª, AgentÀÇ ÆÄÀϵ鵵 µ¿ÀÏÇÑ ¹æ½ÄÀ̱⿡ °°Àº ¹æ½ÄÀ» Àû¿ëÇÏ¿© ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.