È®À强ÀÌ ¶Ù¾î³­ Agent Manager ½Ã½ºÅÛÀÇ ±¸Ãà
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

¼Ò°³

È®À强À» È®º¸Çϱâ À§ÇÑ ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖÀ» °ÍÀÌ´Ù. ¿©±â¿¡¼­´Â ±×Áß PlugIn ¹æ½ÄÀ» ÀÌ¿ëÇÑ È®À强Ȯº¸¿¡ ´ëÇÑ ³»¿ëÀ» ´Ù·ê °ÍÀÌ´Ù.

Agent&Manager ¹æ½ÄÀÇ ÇÁ·Î±×·¥À» ¸¸µç´Ù°í °¡Á¤Çغ¸ÀÚ. SNMP ÇÁ·ÎÅäÄÝÀ» ÀÀ¿ëÇÑ Net SNMP°¡ °¡Àå ´ëÇ¥ÀûÀÎ °æ¿ì°¡ µÉ °ÍÀÌ´Ù. ÀÌ¿Õ Net SNMP¸¦ ¿¹·Î µé¾úÀ¸´Ï, Agent&Manager ¹æ½ÄÀÇ SMSÀ» ¸¸µå´Â °ÍÀ¸·Î °¡´ÚÀ» Àâ¾Æº¸°Ú´Ù.

ÀÌ·¯ÇÑ ½Ã½ºÅÛ¿¡¼­ Agent ÇÁ·Î±×·¥À» ¸¸µé·Á°í ÇÑ´Ù¸é, ¼³°è´Ü°è¿¡¼­ °¡Àå Áß¿äÇÏ°Ô »ý°¢ÇØ¾ß ÇÒ°Ô È®À强ÀÇ È®º¸°¡ µÉ °ÍÀÌ´Ù. ¿Ö³Ä¸é ½Ã½ºÅÛ °ü¸®ÀÇ ¹üÀ§°¡ ¸Å¿ì ³ÐÀº °ü°è·Î Çʿ信 µû¶ó °ü¸® ¿ä¼Ò°¡ °è¼Ó Ãß°¡µÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´çÀå »ý°¢³ª´Â°Ô, CPU, Memory, Disk °ü¸®ÂëÀÌ µÉ°ÍÀÌ´Ù. ¹°·Ð Ãʱ⿡ ¿ÏÀüÇÏ°Ô °ü¸®¿ä¼Ò¸¦ ¸ù¶¥ ¿¹»óÇÏ°í ¼³°è¸¦ ÇÏ´Â ¹æ¹ýµµ ÀÖ°ÚÁö¸¸, ±×·¸°Ô µÉ °æ¿ì ¼³°è¿¡ Áö³ªÄ¡°Ô ¸¹Àº ½Ã°£À» ¼ÒºñÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¸·»ó ±×·¸°Ô ¸¸µé¾ú´Ù°í ÇØµµ, Áß°£Âë ¸¸µé´Ù º¸¸é °ü¸®¿ä¼Ò°¡ »õ·Î Ãß°¡µÉ ¼öµµ ÀÖ´Ù. ½ÉÁö¾î´Â ¸ðµÎ ¸¸µé°í ³ª¼­ °ü¸®¿ä¼Ò°¡ Ãß°¡µÉ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

ÀÌ·¯ÇÑ °æ¿ì PlugIn ¹æ½ÄÀ¸·Î °¢°¢ÀÇ ¼º´ÉÀ» ¸ðµâÈ­ ½ÃÄѼ­ ºÙÀÌ´Â ¹æ½ÄÀ¸·Î °³¹ß½Ã°£À» ¾Æ³¥ ¼ö ÀÖ´Ù. °Å±â¿¡ ´ýÀ¸·Î À¯¿¬Çϰí È®À强 ÁÁÀº ½Ã½ºÅÛÀ» ¸¸µé ¼öµµ ÀÖ´Ù. ´ë·« ´ÙÀ½°ú °°Àº ½Ã½ºÅÛ ±¸¼ºÀ» °¡Áö°Ô µÈ´Ù.

agent.png

ÇÊ¿äÇÑ ±â¼ú

ÀÌ ¹®¼­¸¦ Àбâ À§Çؼ­´Â ÇÔ¼öÆ÷ÀÎÅÍ, STL, ¶óÀ̺귯¸®¸¦ Á¦¾îÇϱâ À§ÇÑ ±â¼úµéÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.

Dynamic Module Loading

µ¿ÀûÀ¸·Î ¸ðµâÀ» ·ÎµùÇÏ´Â PlugIn¹æ½ÄÀ» ±¸ÇöÇϱâ À§ÇÑ ±âº»ÀûÀÎ ±â¼ú¿ä±¸ »çÇ×Àº ±×¸® º¹ÀâÇÏÁö ¾Ê´Ù. µ¿Àû¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇϸé, ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì Áß¿äÇÑ °ÍÀº ¸ðµâ°ú Agent¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ ÅëÀÏÇÏ´Â°Ô µÉ °ÍÀÌ´Ù. ¾î¶°ÇÑ ±â´ÉÀÌ ¸ðµâÇüÅ·ΠÃß°¡µÇ´õ¶óµµ, Agent¿Í ManagerÀÇ ¼Ò½ºÄÚµå ¼öÁ¤¾øÀÌ ¸ðµâÀÌ ·ÎµùµÉ ¼ö ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù.

ÀÎÅÍÆäÀ̽º À̸§À» ¸ÂÃß´Â °ÍÀº ¹®Á¦°¡ µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¹®Á¦´Â ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ¼­ À̵¿ÇÏ´Â µ¥ÀÌÅͰ¡ µÉ°ÍÀÌ´Ù. ÀÌ´Â °¢°¢ÀÇ ¼º´É¸¶´Ù º¸¿©Áà¾ß ÇÏ´Â Á¤º¸°¡ ´Ù¸¦ ¼ö Àֱ⠶§¹®Àε¥, CPUÀÇ °æ¿ì¶ó¸é »ç¿ëÀ²À» Disk¶ó¸é ÀåÄ¡¸í,¸¶¿îÆ®À̸§,»ç¿ëÀ²À» º¸³»¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î ¿¹»ó°¡´ÉÇÑ ¸ðµç Á¾·ùÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÁغñµÇ¾î¾ß ÇÑ´Ù. ÀÌ ¹®Á¦´Â ¼¼°¡Áö Á¤µµÀÇ ¹æ½ÄÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Ù.
  1. ¹®ÀÚ¿­ Àü¼Û
    °£´ÜÇÏ°Ô ¹®ÀÚ¿­À» Àü¼ÛÇÑ´Ù. ¼º´É=°ª1,°ª2 Á¤µµ·Î º¸³»¸é µÉ °ÍÀÌ´Ù. Æ÷¸ËÀº ´ë·« ¾Æ·¡¿Í °°À» °ÍÀÌ´Ù. ¼º´ÉÀ̸§ÀÌ µé¾î°¡´Â ÀÌÀ¯´Â, ³ªÁß¿¡ Manager·Î Á¤º¸°¡ Àü´ÞµÇ¾úÀ»¶§, ¼º´ÉÀ̸§À» Key·Î ÇØ¼­, ÇØ´çµÇ´Â ¸ðµâÀ» Plugin ¹æ½ÄÀ¸·Î ·ÎµùÇϱâ À§ÇÔÀÌ´Ù.

    CPU=89 
    DSK=/dev/sda1,/root,58 
     
  2. ±¸Á¶Ã¼Àü¼Û
    ±¸Á¶Ã¼·Îµµ Àü¼ÛÀÌ °¡´ÉÇÏ´Ù. Agent´Â µ¥ÀÌÅ͸¦ ó¸®ÇÏÁö ¾Ê°í, Manager·Î º¸³»±â¸¸ ÇϸéµÇ¹Ç·Î, ±¸Á¶Ã¼¿¡ ¾î¶² ¸â¹öº¯¼öµéÀÌ ÀÖ´ÂÁö´Â ¾Ë Çʿ䰡 ¾ø´Ù. ´ÜÁö º¸³»¾ß ÇÏ´Â ±¸Á¶Ã¼ÀÇ Å©±â¿Í ¼º´ÉÀ̸§¸¸ ¾Ë°í ÀÖÀ¸¸é µÈ´Ù. ±¸Á¶Ã¼¸¦ ¹ÞÀº Manager ÃøÀº ¼º´ÉÀ̸§¿¡ ÇØ´çµÇ´Â Plugin ¸ðµâÀ» ·ÎµùÇØ¼­ ±¸Á¶Ã¼ÀÇ °ªÀ» ó¸®ÇÏ¸é µÈ´Ù.

    struct Info 
    { 
       int size;       // ±¸Á¶Ã¼ÀÇ Å©±â 
       char id[4];   // ¼º´É À̸§ : DSK, CPU, MEM... 
       ...                // ³ª¸ÓÁö Á¤º¸µéÀº ¼º´É¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖ´Ù. 
       ... 
    } 
     
  3. XML µ¥ÀÌÅÍ Àü¼Û
    Àß Á¤ÀÇÇÑ´Ù¸é, À¯¿¬ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µ¥ÀÌÅÍÀÇ Å©±â°¡ Ä¿Áø´Ù´Â Á¡À» °í·ÁÇÏÁö ¾Ê¾Æµµ µÈ´Ù¸é, °¡Àå ÁÁÀº ¹æ¹ýÀ̶ó°í »ý°¢µÈ´Ù.

¿©±â¿¡¼­´Â ¹®ÀÚ¿­À» º¸³»´Â °ÍÀ» ±âÁØÀ¸·Î ¼³¸íÇϵµ·Ï ÇϰڴÙ.

Module Config

ÀÌÁ¦ ¼³Á¤ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ ¼³Á¤ÆÄÀÏÀº Key¶ó°í ÇÒ ¼ö ÀÖ´Â ¸ðµâ ID¿Í È£ÃâÇØ¾ßÇÒ ¶óÀ̺귯¸®ÀÇ À̸§µéÀ» °¡Áø´Ù. ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °¡Áöµµ·Ï ÇϰڴÙ.
[plugin] 
CPU=libmycpu.so 
MEM=libmymem.so 
 
¼³Á¤ÆÄÀÏÀ» ÀÐÀ» ¼ö ÀÖ´Â ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ °Í °°¾Æ¼­, ±ÞÁ¶ÇÑ Äڵ尡 ÀÖ´Ù. °£´Ü ¼³Á¤ÆÄÀÏ Reader¸¦ Âü°íÇϱ⠹ٶõ´Ù. ÀÌ Äڵ带 ±×´ë·Î »ç¿ëÇÒ °ÍÀÌ´Ù.

ÇÁ·Î½ÃÁ®

  1. ½ÇÇà
  2. plugin À» ·ÎµùÇϱâ À§Çؼ­ ¼³Á¤ÆÄÀÏÀ» ÀоîµéÀδÙ.
  3. plugin ¸ñ·ÏÀ» ÀоîµéÀδÙ.
  4. plugin ¸ñ·ÏÀÇ °¹¼ö¸¸Å­ ·çÇÁ¸¦ µ¹¸é¼­, ¶óÀ̺귯¸®¸¦ µ¿ÀûÀ¸·Î ÀûÀçÇÑ´Ù.
  5. while ·çÇÁ¸¦ µ¹¸é¼­, °øÅë ÀÎÅÍÆäÀ̽º¸¦ È£ÃâÇÑ´Ù.

°øÅë ÀÎÅÍÆäÀ̽º

°øÅë ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇØº¸µµ·Ï ÇÏÀÚ. ÃÖ´ëÇÑ °£´ÜÇÏ°Ô Á¤ÀÇÇϵµ·Ï ÇϰڴÙ.
  1. Init : Ç÷¯±×ÀÎ ¸ðµâÀ» ÃʱâÈ­ ÇÑ´Ù.
  2. Read : Ç÷¯±×ÀÎ ¸ðµâ·Î ºÎÅÍ, µ¥ÀÌÅ͸¦ ¿äûÇÑ´Ù. µ¥ÀÌÅÍ´Â ¹®ÀÚ¿­·Î Key.IndexNum=Value,Value Çü½ÄÀ¸·Î Àü´ÞµÈ´Ù. IndexNumÀº µ¥ÀÌÅͰ¡ 2°³ÀÌ»óÀ϶§, »ç¿ëÇÏ´Â À妽º ¹øÈ£´Ù. ¿¹¸¦ µé¾î CPU°¡ 2°³¶ó¸é
    • CPU.1=87
    • CPU.2=21
  3. RowNum : ¸î°³ÀÇ µ¥ÀÌÅͰ¡ ÀÖ´ÂÁö¸¦ ¾Ë·ÁÁØ´Ù.
    • CPU°¡ 2°³¶ó¸é, 2¸¦ Ãâ·ÂÇÑ´Ù.
  4. Close : Ç÷¯±×ÀÎ ¸ðµâÀ» ´Ý´Â´Ù.

Å×½ºÆ®¿ë Ç÷¯±×ÀÎ ¸ðµâ

libmycpu ¿Í libmysms ¸¦ À§ÇÑ ¸ðµâÀ» ÀÛ¼ºÇÒ °ÍÀÌ´Ù. À̵éÀº °øÀ¯¶óÀ̺귯¸® ÇüÅ·ΠÀÛ¼ºµÉ °ÍÀÌ´Ù. ÀÛ¼ºµÈ À̵é Ç÷¯±×ÀÎ ¸ðµâÀº dlopen(2) ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ µ¿ÀûÀ¸·Î ÀûÀç µÈ´Ù.

¿©±â¿¡¼­´Â ´Ü¼øÈ÷ ¹®ÀÚ¿­À» ¸®ÅÏÇÏ´Â dummy ¸ðµâÀ» ÀÛ¼ºÇÒ °ÍÀÌ´Ù.

Ç÷¯±×ÀÎ ±â´ÉÀ» Áö¿øÇÏ´Â Agent ÇÁ·Î±×·¥

´ÙÀ½Àº Agent ÇÁ·Î±×·¥ÀÌ´Ù.
 
#include <iostream> 
#include <cstdlib> 
#include <qosconfig.h> 
#include <dlfcn.h> 
#include <vector> 
 
using namespace std; 
 
typedef char *(*Function)(); 
int main(int argc, char *argv[]) 
{ 
  Config *agentCfg; 
  int rtv; 
  char *key; 
  char *value; 
  void *handle; 
  agentCfg = new Config(); 
  Function myFunc; 
  // Ç÷¯±×ÀÎÀ» ÀúÀåÇÒ Vector·Î ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¿ø¼Ò·Î °¡Áø´Ù. 
  vector<Function> FuncPList; 
 
  // ¼³Á¤ÆÄÀÏÀ» Open ÇÑ´Ù. 
  rtv = agentCfg->openCfg("config.cfg"); 
  if (rtv == -1) 
  { 
    perror("Config Read Error"); 
  } 
 
  // Ç÷¯±×ÀÎ ¼½¼Ç¿¡¼­ Ç÷¯±×ÀÎ ¸ñ·ÏÀ» Àоî¿Â´Ù. 
  if (agentCfg->findSection("PLUGIN")) 
  { 
    while(key = agentCfg->NextItem()) 
    { 
      printf("Loding Module %s:%s\n", key, agentCfg->NextValue()); 
      // Ç÷¯±×ÀÎÀ» ·ÎµåÇÑ´Ù. 
      handle = dlopen(agentCfg->NextValue(), RTLD_NOW); 
      if (!handle) 
      { 
        fputs(dlerror(), stderr); 
      } 
      else 
      { 
        // °øÅëÀÎÅÍÆäÀ̽ºÀÎ Read ÇÔ¼ö¸¦ ÇÔ¼öÆ÷ÀÎÅÍ·Î ¾ò¾î¿À°í 
        // vector¿¡ push ÇÑ´Ù. 
        myFunc = (char *(*)())dlsym(handle, "Read"); 
        FuncPList.push_back(myFunc); 
      } 
    } 
  } 
 
  // 1ÃÊ °£°ÝÀ¸·Î ·ÎµùµÈ Ç÷¯±×ÀÎ ¸ðµâ·Î ºÎÅÍ, µ¥ÀÌÅ͸¦ Àоî¿Â´Ù. 
  while(1) 
  { 
    for (int i = 0; i < FuncPList.size(); i++) 
    { 
      printf("%s",FuncPList[i]()); 
    } 
    printf("==============\n"); 
    sleep(1); 
  } 
  return EXIT_SUCCESS; 
} 
 

¸ðµâ ÇÁ·Î±×·¥

ÀÌ ÇÁ·Î±×·¥Àº dummy ÇÁ·Î±×·¥À¸·Î, °øÅë ÀÎÅÍÆäÀ̽º Æ÷¸ä¿¡ ¸Â´Â ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù.
#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 
#include <stdlib.h> 
 
char *rtvstr = NULL; 
int count; 
int Init() 
{ 
    rtvstr =  (char *)malloc(80); 
    count = 0; 
    return 1; 
} 
 
char *Read() 
{ 
    sprintf(rtvstr, "%s=%d\n", count); 
    count++; 
} 
 
int RowNum() 
{ 
    return 1; 
} 
 
int Close() 
{ 
    if (rtvstr != NULL) 
        free(rtvstr); 
    count = 0; 
} 
 
ÀÌ ÄÚµå´Â °øÀ¯¶óÀ̺귯¸®·Î ÄÄÆÄÀÏÀ» ÇÑ´Ù. ¶óÀ̺귯¸®ÀÇ À̸§Àº libdummy.so ·Î ÇϰڴÙ. °øÀ¯¶óÀ̺귯¸®¸¦ ¸¸µå´Â ¹æ¹ýÀº ¶óÀ̺귯¸® ¸¸µé±â ¹®¼­¸¦ Âü°íÇϱ⠹ٶõ´Ù.

ÀÌÁ¦ ¾Æ·¡¿Í °°Àº ¼³Á¤ÆÄÀÏ ¸¸µé°í, ½ÇÇàÇÏ¸é µÈ´Ù.
[PLUGIN] 
DUMMY=libdummy.so 
 

°á·Ð

µ¿Àû¶óÀ̺귯¸®¸¦ ÅëÇÑ È®Àå°¡´ÉÇÑ ÇÁ·Î±×·¥À» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾Ò´Ù. ÀÌ °æ¿ì¿¡´Â µ¥ÀÌÅ͸¦ ´Ü¼øÇÏ°Ô Á¦ÇÑÇ߱⠶§¹®¿¡, ºñ±³Àû ¼Õ½±°Ô ÀÎÅÍÆäÀ̽º¸¦ ¼³°èÇÒ ¼ö ÀÖ¾úÁö¸¸ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡ µµÀÔÇØ¼­ »ç¿ëÇÒ¶§´Â XMLÀ» ÀÌ¿ëÇϰųª, µ¥ÀÌÅÍ Ã³¸® ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇÏ´Â µî, Á»´õ º¹ÀâÇÏ°Ô ±¸ÇöµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.