±âŸ(framework)
2017.07.10 / 17:37

¹èÄ¡ ¸ð´ÏÅ͸µ, Scouter·Î ÆíÇÏ°í È¿À²ÀûÀ¸·Î

XMaLL°ü¸®ÀÚ
Ãßõ ¼ö 311
µé¾î°¡¸ç

8¿ùÀÇ ¾î´À³¯ ÀúÀÇ ÆäÀ̽ººÏ ŸÀÓ¶óÀο¡ ScouterÀ̶ó´Â ±Û Çϳª°¡ ¿Ã¶ó¿Ô½À´Ï´Ù.

http://www.slideshare.net/gunheelee923519/open-source-apm-scouter

¿¹Àü ¼­ºñ½º¿¡¼­ Á¦´ÏÆÛ¶ó´Â »ó¿ë APMÀ» »ç¿ëÇϸç À¥ ¼­ºñ½º ¼º´É ¸ð´ÏÅ͸µ¿¡ ¸¹Àº µµ¿òÀÌ µÇ¾ú´ø ±â¾ïÀÌ ¶°¿Ã¶ú½À´Ï´Ù. À̳» °ð ¿ÀǼҽº APM Scouter¸¦ Á¦°¡ ´ã´çÇÏ´Â ¸ð´ÏÅ͸µ ¸ñÀû¿¡ ¸Â°Ô »ìÆ캸±â ½ÃÀÛÇß½À´Ï´Ù. 
 
Àú´Â Ƽ¸ó¿¡¼­ Á¤»ê ¹× °á»ê ¾÷¹«¸¦ ´ã´çÇÏ°í ÀÖ½À´Ï´Ù. Á¤»ê ¹× ¸ÅÃâµ¥ÀÌÅ͸¦ °¡°øÇϱâ À§ÇØ ½Ç½Ã°£ À¥ ¼­ºñ½ºÀÇ °³¹ßº¸´Ù´Â ¹èÄ¡ À§ÁÖÀÇ °³¹ßÀ» ¸¹ÀÌ ÇÕ´Ï´Ùµû¶ó¼­ Scouter¸¦ HTTP ¼­ºñ½º ¸ð´ÏÅ͸µ º¸´Ù´Â ¹èÄ¡¿¡¼­ ¸¸µé¾îÁö´Â µ¥ÀÌÅÍ¿¡ ´ëÇÏ¿© ¸ð´ÏÅ͸µÀ» ÁøÇàÇغ¸¸é ÁÁ°Ú´Ù´Â »ý°¢ÀÌ µé¾ú½À´Ï´Ù.
°ü·ÃÇÏ¿© ÇÁ·ÎÅä ŸÀÔÀ» ¾Æ·¡¿Í °°ÀÌ Á¤¸®Çß½À´Ï´Ù.
 
* Scouter·Î Çغ¸°í ½ÍÀº °Í Á¤¸®
* Scouter ¼³Ä¡ ¹× ¼³Á¤
* ¹èÄ¡¼­ºñ½º NON-HTTP ¼­ºñ½º ÃßÀû
* ¹èÄ¡ ÀÛ¾÷ ¼öÇà ½Ã Æ¯Á¤ µ¥ÀÌÅÍ ±âÁØÀ¸·Î Agent ½ºÅ©¸³Æ® ÀÛ¼ºÇÏ¿© ÇÁ·ÎÆÄÀÏ¿¡ ¹Ý¿µ
* °³¹ßµÈ Server Ç÷¯±×ÀÎÀ¸·Î Agent·Î »ý¼ºµÈ ÇÁ·ÎÆÄÀϸµ ¹× ¼º´É µ¥ÀÌÅ͸¦ Elasticsearch¿¡ Áý°è




Scouter·Î Çغ¸°í ½ÍÀº °Í?

Á¦°¡ ´ã´çÇÏ´Â ÁÖ¾÷¹«ÀÎ ¹èÄ¡ÀÇ °æ¿ì, ´ëºÎºÐ »õº®½Ã°£¿¡ ÀÌ·ç¾îÁö±â ¶§¹®¿¡ ½Ç½Ã°£ ¸ð´ÏÅ͸µ º¸´Ù´Â ³ªÁß¿¡ È®ÀÎÇÒ ¼ö ÀÖ´Â ÇüÅ°¡ ÇÊ¿äÇß½À´Ï´Ù. ¹èÄ¡ ÀÛ¾÷¿¡ ´ëÇÑ µ¥ÀÌÅÍ È帧 ¹× ¼º´É¿¡ ´ëÇÑ ÀϺΠµ¥ÀÌÅ͸¦ ÇÁ·ÎÆÄÀϸµ ÇÑ ÈÄ Áý°è¸¦ Çغ¸°Ú½À´Ï´Ù.
 
1. Scouter°¡ Á¦°øÇϴ Ŭ¶óÀ̾ðÆ®¿¡¼­ °ú°Å À̷¿¡ ´ëÇÑ µ¥ÀÌÅÍ°¡ ³²±â ¶§¹®¿¡ È®ÀÎÇÒ ¼ö ÀÖÁö¸¸ µð½ºÅ© ¿ë·®ÀÇ 80%±îÁö¸¸ º¸°ü °¡´ÉÇϸ砿À·¡µÈ µ¥ÀÌÅͺÎÅÍ Áö¿ò 
2. ¹èÄ¡ ¼öÇà ½Ã »ç¿ëµÈ µ¥ÀÌÅ͸¦ ½º³À¼¦ ¿ëµµÀÇ µ¥ÀÌÅÍ·Î ÀûÀç ÈÄ ¿î¿µ°ü¸® ¿ëµµ·Î Á¶È¸
 
Á¤»ê ¹× °á»ê µ¥ÀÌÅ͸¦ »ý¼ºÇϱâ À§Çؼ­´Â ´Ù¾çÇÑ ¹èÄ¡µéÀÌ Á¸ÀçÇÏ°í °¢°¢ÀÇ ¹èÄ¡µéÀº ÀÇÁ¸°ü°è¸¦ °¡Áý´Ï´Ù. º¸Åë º¹ÀâÇÑ °è»ê¿¡ ÀÇÇØ »ý¼ºµÇÁö¸¸, »ùÇøµÀ» À§ÇØ ¾Æ·¡¿Í °°Àº °£·«ÇÑ È帧À» °¡Áø Á¤»ê ¹èÄ¡°¡ ÀÖ´Ù°í Çغ¾½Ã´Ù.
 
1. ÆǸŵ¥ÀÌÅ͸¦ Á¶È¸ÇÑ´Ù.
2. Á¶È¸µÈ ÆǸŵ¥ÀÌÅ͸¦ °¡Áö°í Á¤»ê°è»ê½ÄÀ» ÅëÇÏ¿©
3. ÃÖÁ¾ Á¤»êµ¥ÀÌÅ͸¦ ¸¸µé¾î³½´Ù.
 
À§ÀÇ È帧À» °¡Áø ¹èÄ¡´Â ½ºÇÁ¸µ ¹èÄ¡·Î °³¹ßµÇ¸ç ¹èÄ¡ ÇÁ·Î¼¼½º´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
 
[¹èÄ¡ ÇÁ·Î¼¼½º]
1. ´ë¿ë·®ÀÇ µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇÏ¿© ¾²·¹µå ÇÒ´ç (Spring Batch Partitioner)
   - °¢°¢ÀÇ ¾²·¹µå¿¡¼­ reader-processor-writerÀ» °¡Áö´Â ±¸Á¶
2. reader¿¡¼­ ÆǸŵ¥ÀÌÅ͸¦ ÀÐ¾î µéÀÌ°í
3. processor¿¡¼­ ÆǸŵ¥ÀÌÅ͸¦ °¡Áö°í Á¤»ê°è»ê½ÄÀ» ÅëÇÏ¿© Á¤»êµ¥ÀÌÅ͸¦ ¸¸µé°í
4. writer¿¡¼­ Á¤»êµ¥ÀÌÅ͸¦ ƯÁ¤ÀúÀå¼Ò¿¡ ÀûÀç
 

´ÙÀ½Àº À§ÀÇ ¹èÄ¡ ÇÁ·Î¼¼½º¿¡¼­ Scouter¸¦ ÅëÇÏ¿© ¸ð´ÏÅ͸µ/Áý°è¸¦ Çغ¸°í ½ÍÀº Ç׸ñÀÔ´Ï´Ù.
 
[Scouter·Î ¸ð´ÏÅ͸µ/Áý°è Çغ¸°í ½ÍÀº Ç׸ñ]
1. reader, processor, writerÀÇ °¢ ¸Þ¼Òµå¿¡¼­ ÇÁ·ÎÆÄÀϸµÇÑ µ¥ÀÌÅÍ
    - ƯÁ¤»óÇ°IDÀÇ ÆǸŵ¥ÀÌÅÍ
    - °è»ê½Ä¿¡ »ç¿ëµÈ µ¥ÀÌÅÍ
    - Á¤»êµ¥ÀÌÅÍ

2. ScouterÀÇ ¼º´Éµ¥ÀÌÅÍÀÎ XLog Ç׸ñµé
    - ¼­ºñ½º Ŭ·¡½º
    - ¸Þ¼Òµå
    - ¼öÇà½Ã°£
    - ¿¡·¯Á¤º¸
    - .. 



Scouter ¼³Ä¡ ¹× ¼³Á¤

SocuterÀÇ °ø½ÄÆäÀÌÁö¿¡ Scouter¿¡ ´ëÇÑ ³»¿ëÀÌ Àß Á¤¸®µÇÀÖÀ¸¸ç ¼³Ä¡¿¡ ´ëÇÑ °ÍÀº ¾Æ·¡ ÆäÀÌÁö¸¦ Âü°í¹Ù¶ø´Ï´Ù.
- https://github.com/scouter-project/scouter/blob/master/README_kr.md
 
1. ¼³Ä¡Çϱâ
´Ù¿î·Îµå ÆäÀÌÁö¿¡¼­ Server / Agent / Client¸¦ ´Ù¿î·Îµå ¹Þ½À´Ï´Ù. Å¬¶óÀ̾ðÆ®ÀÇ °æ¿ì, º»ÀÎÀÌ »ç¿ëÇϴ PCÀÇ Ç÷§Æû¿¡ µû¶ó ´Ù¿î¹Þ¸é µÇ¸ç Àú´Â À©µµ¿ì 64bit ¹öÀüÀ» ´Ù¿î¹Þ¾Ò½À´Ï´Ù.

1) Downoad Page
2) Server Download
3) Agent Download
4) Client Download


2. Server ¼³Á¤ ¹× ½ÇÇà
- scouter/server/conf/scouter.conf

#AgentControl and Service Port(Default : TCP : 6100) net_tcp_listen_port=6100 #UDP Receive Port(Default : 6100) net_udp_listen_port=6100 # DB directory(Default : ./database) db_dir=./database # Log directory(Default : ./logs) log_dir=./logs

- scouter/server/startup.bat½ÇÇà



3. Agent ¼³Á¤ ¹× ½ÇÇà
- scouter/agent.host/conf/scouter.conf

#Agent Control and Service Port(Default : 127.0.0.1) net_collector_ip=127.0.0.1 #Source Server Port (Default : 6100) net_collector_udp_port=6100 net_collector_tcp_port=6100

scouter/agent.host/host.bat½ÇÇà




¹èÄ¡ NON-HTTP¼­ºñ½º ÃßÀû

¹èÄ¡ÀÇ °æ¿ì HTTP¼­ºñ½º°¡ ¾Æ´Ï±â ¶§¹®¿¡ WAS°¡ ¾Æ´Ñ ½ÇÇà ¼­¹ö¿¡¼­ ¼­ºñ½º¸¦ ÃßÀûÇØ¾ß ÇÕ´Ï´Ù.
¼­ºñ½º ÃßÀûÀº NON-HTTP-Service-Trace_kr.md ¹®¼­¸¦ Âü°íÇϼ¼¿ä.
 
Á¤»ê°ü·Ã¹èÄ¡ 3°³ÀÇ reader, preocessor, writerÀÇ ¸Þ¼Òµå¸¦ ¼­ºñ½º ÆÐÅÏÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.


- scouter/agent.host/conf/scouter.conf ¿¡ ¾Æ·¡³»¿ë Ãß°¡

hook_service_patterns=com.tmoncorp.batch*.doRead, com.tmoncorp.batch.*.doProcess, com.tmoncorp.batch*.doWrite

ÀÌÁ¦ ¹èÄ¡¸¦ ½ÇÇàÇÏ¿© ÇØ´ç ¼­ºñ½º ÆÐÅÏÀ¸·Î µî·ÏµÈ ¼­ºñ½ºµéÀ» Scouter Ŭ¶óÀ̾ðÆ®·Î ¸ð´ÏÅ͸µ ÇÏ°Ú½À´Ï´Ù¹èÄ¡ ½ÇÇà ½Ã AgentÀÇ ¿¬µ¿À» À§ÇØ ÀÚ¹Ù½ÇÇà¿É¼Ç¿¡ ¾Æ·¡ ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù.
 
- javaagent : scouter agent lib °æ·Î¸í
- Dobj_name=payJob : ¿ÀºêÁ§Æ® À̸§ (Ŭ¶óÀ̾ðÆ®¿¡¼­ º¸¿©Áö´Â objName)

-javaagent:E:\scouter\scouter.agent\scouter\agent.java\scouter.agent.jar -Dscouter.config=E:\scouter\scouter.agent\scouter\agent.host\conf\scouter.conf -Dobj_name=payJob

ÇØ´ç ¹èÄ¡¸¦ ½ÇÇàÇÏ¸é ¾Æ·¡¿Í °°ÀÌ Scouter¿Í ¸ð´ÏÅ͸µ °ü·Ã ·Î±×°¡ ³ª¿É´Ï´Ù.

____ _ / ___| ___ ___ _ _| |_ ___ _ __ \___ \ / __/ \| | | | __/ _ \ '__| ___) | (_| (+) | |_| | || __/ | |____/ \___\___/ \__,_|\__\___|_| Open Source S/W Performance Monitoring Scouter version 0.4.18 20160815 20161011 12:45:32 [SCOUTER] Version 0.4.18 20160815 20161011 12:45:32 [SCOUTER] loaded by system classloader 20161011 12:45:32 [SCOUTER] jar:file:/E:/scouter/scouter.agent/scouter/agent.java/scouter.agent.jar 20161011 12:45:33 [SCOUTER] objType:java 20161011 12:45:33 [SCOUTER] objName:/VMS-DAEWOOLEE/payJob 20161011 12:45:33 [A113] Counter Collector Started (#16) 20161011 12:45:33 [A119] Agent UDP local.port=0 20161011 12:45:33 [SCOUTER] Configure -Dscouter.config=E:\scouter\scouter.agent\scouter\agent.host\conf\scouter.conf 20161011 12:45:33 [A100] agent boot seed=x11kuotgr8n

´Ù¿î¹ÞÀº Scouter Ŭ¶óÀ̾ðÆ®¸¦ ÄÝ·ºÅÍ°¡ ¼³Ä¡µÈ ¼­¹öÀÇ ¾ÆÀÌÇÇ/Æ÷Æ®(127.0.0.1:6100)¿Í ¾ÆÀ̵ð/Æнº¿öµå(admin/admin)¸¦ ÀÔ·ÂÇÕ´Ï´Ù. Ŭ¶óÀ̾ðÆ®¸¦ ¶ç¿ö³õ°í ¹èÄ¡¸¦ ½ÇÇàÇغ¸¸é ¾Æ·¡¿Í °°Àº ÇÁ·ÎÆÄÀϸµµÈ Á¤º¸°¡ ³ªÅ¸³³´Ï´Ù.

XLog-Java ºä¸¦ ¿­¾îº¸¸é °¢ ¼­ºñ½º ´ÜÀ§ÀÇ ÇÁ·ÎÆÄÀϸµ µÈ Á¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

Äõ¸® ¼öÇà ½Ã°£ ¹× Åë°è
¼­ºñ½º ¿äû È帧 ¹× È£Ã⠽ð£ Á¤º¸
¼­ºñ½º ¼öÇà ½Ã°£
- ..
 
¹èÄ¡´Â 5°³ÀÇ ¾²·¹µå·Î ¼öÇàµÇ°í ÀÖ°í Active Service EQ¿¡´Â 5°³°¡ ¼öÇàµÇ°í ÀÖ½À´Ï´Ù.

ÀÌ·¸°Ô Scouter·Î ÇÁ·ÎÆÄÀϸµ µÈ Á¤º¸µéÀº ½ÇÁ¦ °³¹ßÇÒ ¶§¿¡µµ ¸¹Àº µµ¿òÀÌ µË´Ï´Ù.
¿¹¸¦ µé¸é, ¹èÄ¡´Â ½ºÇÁ¸µ ¹èÄ¡ PartitionerÀÇ Æ¯Á¤ ¾²·¹µå¿¡¼­ ¿¡·¯°¡ ³ª´õ¶óµµ ³ª¸ÓÁö ¾²·¹µå°¡ ´Ù ¼öÇàµÉ ¶§±îÁö ÁøÇàµÇ±â ¶§¹®¿¡ ¿¡·¯°¡ ³­ »óȲÀ» ¹Ù·Î ijġÇϱâ Èûµç ºÎºÐÀÌ Àִµ¥, Scouter·Î ÀúÀåµÈ XLog¿¡ ¿¡·¯³»¿ëÀÌ ³²¾ÆÀֱ⠶§¹®¿¡ µð¹ö±ëÀÌ °¡´ÉÇÕ´Ï´Ù. ÀÌ¿Ü¿¡µµ ¼öÇà½Ã°£ÀÌ ÃøÁ¤µÇ±â ¶§¹®¿¡ °¢ ±¸°£º° Æ©´×¿ä¼Ò(SQLµî)¸¦ Á¡°ËÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.




Agent Plugin Script ÀÛ¼º

Áö±Ý±îÁö´Â Scouter¿¡¼­ Á¦°øÇÏ´Â ±âº» ÇÁ·ÎÆÄÀϸµ Á¤º¸¸¸ Ŭ¶óÀ̾ðÆ®¸¦ ÀÌ¿ëÇØ È®ÀÎÇߴµ¥¿ä.
¼­µÎ¿¡ ¹àÈù ¹Ù¿Í °°ÀÌ °¢ ¼­ºñ½º º°·Î »ý¼ºµÇ´Â µ¥ÀÌÅÍ ¹× ÇÁ·ÎÆÄÀϸµ µÈ ÀϺΠÁ¤º¸¸¦  Agent ½ºÅ©¸³Æ®·Î ÀÛ¼ºÇÏ¿© ÇÁ·ÎÆÄÀÏ¿¡ ¹Ý¿µÇغ¸°Ú½À´Ï´Ù.

[¼ø¼­]
1. Agent Plugin Script¿¡¼­ Capture Ç÷¯±×ÀÎÀ» ÀÌ¿ëÇØ ÇØ´ç ¼­ºñ½º Á¾·á ½ÃÁ¡ÀÇ return °ªÀ»
Desc SetÇÑ´Ù.
2. Ŭ¶óÀ̾ðÆ®¿¡¼­ Desc ÇÁ·ÎÆÄÀϸµ Á¤º¸¸¦ È®ÀÎÇغ¸°í ÃßÈÄ ¼­¹ö Ç÷¯±×Àο¡¼­ È°¿ëÇÑ´Ù.
 

½ºÅ©¸³Æ® Ç÷¯±×ÀÎ ÀÚ¼¼ÇÑ °ü·Ã API Á¤º¸´Â Scripting plugin java agent API ¼³¸í ÆäÀÌÁö¿¡¼­ Âü°íÇϼ¼¿ä.
 
¸ÕÀú capture.plug ÆÄÀÏÀ» scouter.agent\scouter\agent.java\plugin¿¡ »ý¼ºÇÕ´Ï´Ù.
¼­ºñ½º ÃßÀû Á¾·á ½ÃÁ¡ÀÇ ¸®ÅÏ °ªÀ» °¡Á®¿À°í ¸®ÅÏ ¿ÀºêÁ§Æ®¸¦ ½ºÆ®¸µÀ¸·Î º¯È¯ÇÏ¿© Desc¿¡ SetÇÏ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù.

[args] // ¸Þ¼ÒµåÀÇ ½ÃÀÛ½ÃÁ¡¿¡ È£ÃâÀÌ µÇ¸ç HookArgsÀÇ API¸¦ »ç¿ëÇÏ¸é ¾Æ·¡ Á¤º¸ Á¶È¸ // ClassÀ̸§ / MethodÀ̸§ / Arguments ¹è¿­°ª Á¶È¸ // void capArgs(WrContext $ctx, HookArgs $hook) [return] // ¸Þ¼ÒµåÀÇ Á¾·á½ÃÁ¡¿¡ È£ÃâÀÌ µÇ¸ç HookReturnÀÇ API¸¦ »ç¿ëÇÏ¸é ¾Æ·¡ Á¤º¸ Á¶È¸ // ClassÀ̸§ / MethodÀ̸§ / Return°ª Á¶È¸ // void capReturn(WrContext $ctx, HookReturn $hook) Object obj = $hook.getReturn(); // Return°ª Á¶È¸ $ctx.desc(obj.toString()); [this] // void capThis(WrContext $ctx, String $class, String $desc, Object $this)

Àú´Â ÃßÀû ¼­ºñ½º Á¾·á ½ÃÁ¡¿¡ ÇØ´ç Ç÷¯±×ÀÎÀ» »ç¿ëÇÒ °èȹÀ̱⠶§¹®¿¡ agentÀÇ scout.conf¿¡ hook_return_patterns ¼³Á¤ÇÕ´Ï´Ù.

// hook_args_patterns=com.tmoncorp.batch*.* hook_return_patterns=com.tmoncorp.batch*.*

¼³Á¤ ÈÄ ÇØ´ç ¹èÄ¡¸¦ ½ÇÇàÇÏ°Ô µÇ´Â ¾Æ·¡¿Í °°ÀÌ Ç÷¯±×ÀÎÀÌ ·Îµå µÇ´Â °ÍÀ» ·Î±×¸¦ ÅëÇØ È®ÀÎ °¡´ÉÇÕ´Ï´Ù.

20161024 12:45:19 [SCOUTER] PLUG-IN : scouter.agent.plugin.AbstractCapture loaded #xoakgmq

¸¸ÀÏ capture.plug ¹®¹ý ¿À·ù°¡ ¹ß»ýÇÏ¸é ¾Æ·¡¿Í °°Àº ·Î±× ¸Þ¼¼Áö°¡ ³ªÅ¸³³´Ï´Ù.

20161024 12:48:31 [SCOUTER] PLUG-IN : [source error] ; is missing

¹èÄ¡ ½ÇÇà ÈÄ ½ºÄ«¿ìÆ® Ŭ¶óÀ̾ðÆ®¸¦ È®ÀÎÀ» Çغ¸¸é ¾Æ·¡¿Í °°ÀÌ Å¬¶óÀ̾ðÆ® È­¸éÀÇ XLog¿¡¼­ ÃßÀû¼­ºñ½ºÀÇ ¸®ÅÏ°ªÀÌ desc¿¡ ¼¼Æà µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

Agent Scripting PluginÀº ÄÚµå º¯°æÀÌ µ¿ÀûÀ¸·Î ·Îµå ¹× ÄÄÆÄÀÏµÇ¾î ·±Å¸ÀÓ¿¡ Áï½Ã ¹Ý¿µµÇ¹Ç·Î ½Ç½Ã°£ ¼­ºñ½º¿¡¼­ ¾îÇø®ÄÉÀ̼ÇÀÇ ¼öÁ¤ ¹× ¹èÆ÷ ¾øÀÌ µð¹ö±ë µî¿¡µµ È°¿ëµµ°¡ ³ô½À´Ï´Ù.




Server Plugin °³¹ß

¼­¹ö Ç÷¯±×ÀÎÀº Script Ç÷¯±×Àΰú Built Ç÷¯±×ÀÎÀÌ ÀÖ½À´Ï´Ù. 
¿©±â¼­´Â Built-in PluginÀ» ƯÁ¤¹æ½ÄÀ¸·Î ¹Ì¸® Á¦ÀÛÇÑ ÈÄ ¾Æ·¡ µ¥ÀÌÅ͸¦ Elasticsearch¿¡ ÀúÀåÇغ¸°Ú½À´Ï´Ù.

[Elasticsearch¿¡ ÀúÀåÇÒ µ¥ÀÌÅÍ] 
-      Agent Script¿¡¼­ ¼¼ÆÃÇÑ °¢ ÃßÀû¼­ºñ½ºÀÇ ¸®ÅÏ¿ÀºêÁ§Æ®ÀÇ descµ¥ÀÌÅÍ
-      XLog ¼º´Éµ¥ÀÌÅÍ (service, error, elapsedµî)
 


¼­¹ö Ç÷¯±×Àο¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Plugin-Guide_kr ¹®¼­ Âü°íÇÏ¸é µË´Ï´Ù.
 
Elasticsearch »öÀÎ ±¸Á¶´Â »óÇ°ID, Service, Return Object, error, elapsed µîÀ¸·Î ±¸¼ºµÇ¸ç µ¥ÀÌÅÍ´Â ÃßÈÄ Æ¯Á¤»óÇ°ID¿¡ ´ëÇÏ¿© ¸ð´ÏÅ͸µ µ¥ÀÌÅÍ·Î È°¿ëÇÒ ¼ö ÀÖ´Â ±¸Á¶·Î ¸¸µì´Ï´Ù.
 
°á±¹Àº ƯÁ¤ »óÇ°ID¿¡ ´ëÇÏ¿© Á¤»ê¿¡ ÇÊ¿äÇÑ ÆǸŵ¥ÀÌÅÍ, Á¤»êµ¥ÀÌÅ͸¦ °¢ ¼­ºñ½ºÀÇ ¸®ÅÏ°ªÀ¸·Î È®ÀÎÇÏ°í XLog ¼º´Éµ¥ÀÌÅ͸¦ ¸ð´ÏÅ͸µ Á¤º¸·Î È°¿ëÇÏ°íÀÚ ÇÔÀÔ´Ï´Ù.
 
Å×½ºÆ®¸¦ À§ÇØ scouter-plugin-server-null Ç÷¯±×ÀÎ ÇÁ·ÎÁ§Æ®¸¦ ±×´ë·Î »ç¿ëÇÏ¿´½À´Ï´Ù.
XLogPack¸¦ ÀÌ¿ëÇÏ¿© ¾Æ·¡¿Í °°ÀÌ ±¸ÇöÇÕ´Ï´Ù.

@ServerPlugin(PluginConstants.PLUGIN_SERVER_XLOG) public void xlog(XLogPack pack){ if(conf.getBoolean("ext_plugin_null_xlog_enabled", true)) { String yyyymmdd = DateUtil.yyyymmdd(pack.endTime); String txid = Hexa32.toString32(pack.txid); String objName = TextRD.getString(yyyymmdd, TextTypes.OBJECT, pack.objHash); String service = TextRD.getString(yyyymmdd, TextTypes.SERVICE, pack.service); String returnValue = TextRD.getString(yyyymmdd, TextTypes.DESC, pack.desc); String error = pack.error + ""; if(pack.error != 0) { error = TextRD.getString(DateUtil.datetime(pack.endTime), TextTypes.ERROR, pack.error); } int elapsed = pack.elapsed; String endTime = DateUtil.datetime(pack.endTime); // elasticsearch ÀúÀå·ÎÁ÷ ±¸Çö } }

±¸ÇöµÈ ¼­¹ö Ç÷¯±×ÀÎ ÇÁ·ÎÁ§Æ® ºôµå ÈÄ JarÆÄÀÏÀ» server/libÆú´õ¿¡ À§Ä¡ ½Ãŵ´Ï´Ù. ±×¸®°í Server¸¦ Àç½ÃÀÛÇÏ¸é ¾Æ·¡¿Í °°ÀÌ ¼­¹ö·Î±×¿¡¼­ Built-InÀÌ ¿Ã¶ó°£ ·Î±×¸¦ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. (Script Ç÷¯±×Àΰú´Â ´Þ¸® À籸µ¿À» ÇØ¾ß ÇÕ´Ï´Ù.)

[BuiltInPlugin]scouter.plugin.server.none.NullPlugin=>xlog





¸¶Ä¡¸ç

ÀÌÁ¦±îÁö [Scouter¼³Ä¡ ¼³Á¤ -> ¹èÄ¡¼­ºñ½ºÀÇ ¼­ºñ½ºÃßÀûÀ» ÅëÇÑ ÇÁ·ÎÆÄÀϸµ Á¤º¸ ¼öÁý -> Agent Plugin Script¸¦ ÀÛ¼ºÇÏ¿© ÇÁ·ÎÆÄÀϸµ Á¤º¸ ¼öÁý -> Á¦ÀÛµÈ Server Ç÷¯±×ÀÎ Á¦ÀÛÇÏ¿© XLog ¹× Agent·Î ¼öÁýµÈ Á¤º¸¸¦ Elasticsearch¿¡ ÀúÀå] Çغ¸¾Ò´Âµ¥¿ä.
 
¹°·Ð Scouter¸¦ ÀÌ¿ëÇÏÁö ¾Ê´õ¶óµµ ¼º´É °ü·Ã µ¥ÀÌÅ͸¦ ¼öÁýÇÒ ¹æ¹ýÀº ¸¹ÀÌ ÀÖÁö¸¸, ¼º´É °ü·Ã µ¥ÀÌÅÍ °³¹ß ¹× ¾îÇø®ÄÉÀÌ¼Ç ¼öÁ¤À» Çϰųª, º°µµÀÇ ·Î±×¸¦ ¸¸µé°í ÇØ´ç ·Î±×¸¦ ¼öÁýÇÏ´Â º°µµÀÇ Áý°è ½Ã½ºÅÛÀ» ¸¸µé¾î¾ß ÇÏ´Â ºñ¿ëÀÌ ¹ß»ýÇÕ´Ï´Ù.

ÀÌ·± °üÁ¡¿¡¼­ º»´Ù¸é Scouter°¡ Á¦°øÇÏ´Â ÀϺΠ¼³Á¤¸¸À¸·Îµµ ´Ù¾çÇÑ ÇÁ·ÎÆÄÀϸµ Á¤º¸µéÀ» ±×´ë·Î È°¿ëÇÒ ¼ö ÀÖ°í, ¾îÇø®ÄÉÀÌ¼Ç ¼öÁ¤ ¾øÀÌ º°µµ Ç÷¯±×ÀÎ °³¹ßÀ¸·Î Áý°è½Ã½ºÅÛÀ» ¸¸µå´Â Á¡Àº ¸Å·ÂÀûÀ¸·Î º¸ÀÔ´Ï´Ù.
 
ÀÌ¿Ü¿¡µµ XLogÀÇ µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÏ¿© ƯÁ¤ »óȲ ¹ß»ý ½Ã Alert ±â´ÉÀ» È°¿ëÇÑ´Ù¸é, ´Ù¾çÇÑ Ã¤³Î(¸ÞÀÏ/SMS/¸Þ½ÅÀú µî)·Î ÀÎÁö°¡ °¡´ÉÇØ ºü¸¥ ´ëÀÀÀ¸·Î ¾ÈÁ¤ÀûÀÎ ¼­ºñ½º¸¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
 
Open source APM Scouter·Î ¸ð´ÏÅ͸µ Àß Çϱ⠽½¶óÀ̵åÀÇ ¹®±¸ Áß¿¡ ¾Æ·¡¿Í °°Àº ¹®±¸°¡ ³ª¿À´Âµ¥¿ä.

¹®Á¦ÀÇ ½Äº° - ¾îÇø®ÄÉÀÌ¼Ç ¸ð´ÏÅ͸µ
¹®Á¦ÀÇ ÇØ°á – ¾îÇø®ÄÉÀÌ¼Ç Æ©´×

¢º¸ô¶óµµ º¸ÀÌ°í¢¸ º¸ÀÌ´Â ¸¸Å­ °³¼±ÇÒ ¼ö ÀÖ´Ù.


¿ÀǼҽº APM Scouter´Â ÁÁÀº ¼±ÅÃÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.