Ganglia Ŭ·¯½ºÅÍ ¸ð´ÏÅ͸µ Åø ¼³Ä¡
ÀÛ¼ºÀÚ: ±è»ó¿Ï(sangwan@kisti.re.kr)
ÃÖÃÊ ÀÛ¼ºÀÏ: 2002-10-22
ÀÌ ¹®¼´Â Ŭ·¯½ºÅÍ ¸ð´ÏÅ͸µ Åø·Î ¹öŬ¸®¿¡¼ °³¹ßµÈ ganglia¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ»
¼³¸íÇÑ´Ù. ¼³Ä¡¿¡ »ç¿ëµÈ ¿î¿µÃ¼Á¦´Â RedHat 7.3À̰í, ÀÌ ¹®¼¿¡¼ ¼³Ä¡µÈ
ganglia ¹öÀüÀº 2.4.1ÀÌ´Ù. Âü°í·Î 2.4.1Àº 2002³â 10¿ù ÇöÀç ÃֽйöÀüÀÌ ¾Æ´Ï´Ù.
ÃֽŹöÀüÀº 2.5.0ÀÌ´Ù.
¹®¼ ¾÷µ¥ÀÌÆ®
¸ñÂ÷
1. Ganglia ¼³Ä¡Çϱâ
1.1. ¼Ò°³
1) ´Ù¿î·Îµå
2) ¸ðµâÀÇ ¿ªÇÒ
1.2. Gmond (monitoring daemon) ¼³Ä¡
1) ù ¹øÂ° ³ëµå¿¡ ¼³Ä¡Çϱâ
2) gmond ¼³Ä¡È®ÀÎ
3) ´Ù¸¥ ³ëµå·Î º¹»çÇϱâ
4) Ganglia Cluster Status Tool (gstat) »ç¿ëÇϱâ
1.3. Ganglia Meta Daemon (gmetad) ¼³Ä¡Çϱâ
1.4. Ganglia Gmetad Web Frontend ¼³Ä¡
Âü°íÀÚ·á
1. Ganglia ¼³Ä¡Çϱâ [[¸ñÂ÷]]
1.1. ¼Ò°³ [[¸ñÂ÷]]
Ganglia(ganglionÀÇ º¹¼ö)´Â »ý¸íüÀÇ ½Å°æÀý(ï½)À» ÀǹÌÇÏ´Â ¿µ¾î´Ü¾î·Î,
Ŭ·¯½ºÅÍÀÇ »ç¿ë »óŸ¦ ¸ð´ÏÅ͸µÇØ ÁÖ´Â µµ±¸ÀÌ´Ù.
UC BerkerleyÀÇ Millennium Project(http://www.millennium.berkeley.edu/)¿¡¼
°³¹ßµÇ¾úÀ¸¸ç, Àü¼¼°èÀÇ ¿ÀÇ ¼Ò½º °øµ¿Ã¼ÀÎ SourceForge.net
(http://ganglia.sourceforge.net/)¸¦ ÅëÇØ ¼Ò½ºÄڵ尡 °ø°³µÇ¾î ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ
¼ö ÀÖ´Â ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù. 2001³â¿¡ ÃÖÃÊ ¹öÀüÀÌ ¸±¸®Áî µÈÀÌÈÄ·Î Áö¼ÓÀûÀ¸·Î
¾÷±×·¹ÀÌµå µÇ°í ÀÖÀ¸¸ç, 2002³â 10¿ù ÇöÀç ÃֽйöÀüÀº 2.5.0 ±îÁö ¹ßÇ¥µÇ¾ú´Ù.
http://ganglia.sourceforge.net/demo/ ¸¦ ¹æ¹®Çϸé Ganglia °¡ ¼³Ä¡µÇ¾î
¸ð´ÏÅ͸µ Çϰí Àִ Ŭ·¯½ºÅÍÀÇ »óŸ¦ º¼ ¼ö ÀÖ´Ù.
1) ´Ù¿î·Îµå
http://ganglia.sourceforge.net/downloads.php
·Î ºÎÅÍ ÇÊ¿äÇÑ ÈÀÏÀ» ´Ù¿î ¹Þ´Â´Ù.
Âü°í>> 2.5.0 ÀÌÀü ¹öÀüÀÇ °æ¿ì
ganglia-monitor-core-x.x.x.tar.gz
gmetad-x.x.x.tar.gz
gmetad-webfrontend-x.x.x.tar.gz
3°³ÀÇ ÈÀÏ·Î ³ª´µ¾îÁ® ÀÖ¾úÀ¸³ª,
2.5.0 ¹öÀü¿¡¼´Â
ganglia-monitor-core-x.x.x.tar.gz
galglia-webfrontend-x.x.x.tar.gz
2°³¸¸ ¹ÞÀ¸¸é µÈ´Ù. gmeta µ¥¸óÀÌ monitor-core ÆÐŰÁö¿¡ Æ÷ÇԵǾî ÀÖ´Ù.
2) ¸ðµâÀÇ ¿ªÇÒ
Ganglia´Â ´ÙÀ½ÀÇ ¼·Î´Ù¸¥ ±â´ÉÀ» ÇÏ´Â 3°¡Áö ¼ÒÇÁÆ®¿þ¾î·Î ±¸¼ºµÈ´Ù.
- Ganglia Monitor Daemon (gmond)
¸ð´ÏÅ͸µÇϱ⸦ ¿øÇÏ´Â ¸ðµç ³ëµå¿¡ ¼³Ä¡µÇ¾î¾ß ÇÑ´Ù. ´Ù¸¥ È£½ºÆ®ÀÇ gmond µ¥¸ó¿¡
¸ÖƼij½ºÆ® ¸Þ½ÃÁö¸¦ º¸³»¾î ÀÚ½ÅÀÇ »óŸ¦ ¾Ë¸®¸ç, ´Ù¸¥ È£½ºÆ®ÀÇ Á¤º¸¸¦
¼öÁýÇÏ¿© ÀڽŰú ´Ù¸¥ ³ëµåÀÇ ½Ã½ºÅÛ »óŸ¦ XMLÇü½ÄÀ¸·Î ¾Ë·ÁÁØ´Ù.
- Ganglia Meta Daemon (gmetad)
gmond´Â °°Àº ³×Æ®¿÷»óÀÇ È£½ºÆ®¿¡°Ô¸¸ È£½ºÆ®Á¤º¸¸¦ Àü´ÞÇϱ⠶§¹®¿¡
WAN(Wide Area Network)¿¡¼´Â ¸ÖƼij½ºÆÃÀÌ µÇÁö ¾Ê´Â´Ù. gmetad´Â WAN¿¡¼
¿©·¯ gmond µ¥¸óÀ¸·Î ºÎÅÍ ¼öÁýµÈ È£½ºÆ® Á¤º¸¸¦ RRD(round-robin database)¿¡
ÀúÀåÇÑ´Ù. gmetad´Â Ganglia Web Interface°¡ ¼³Ä¡µÉ À¥¼¹ö¿¡¸¸ µ¿ÀÛÇÏ¸é µÈ´Ù.
- Ganglia Web Interface
À¥ ÀÎÅÍÆäÀ̽º ¸ðµâÀº PHP¾ð¾î·Î ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç PHP°¡ Áö¿øµÇ´Â À¥¼¹ö»ó¿¡¼
µ¿ÀÛÇÑ´Ù. gmetad¿¡ ÀÇÇØ ¼öÁýµÇ¾î RRD¿¡ ÀúÀåµÈ ½Ã½ºÅÛ Á¤º¸¸¦ ºñÁê¾óÇϰÔ
º¸¿©ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.
1.2. Gmond (monitoring daemon) ¼³Ä¡ [[¸ñÂ÷]]
gmond µ¥¸óÀº ½Ã½ºÅÛÀÇ »óŸ¦ ¸ð´ÏÅ͸µÇϱâ À§ÇÑ µ¥¸óÀ¸·Î Æ÷Æ®¹øÈ£ 8649¹øÀ»
»ç¿ëÇϸç, ÀÌ Æ÷Æ®¸¦ ÅëÇØ Á¢¼ÓÇÏ¸é ½Ã½ºÅÛÀÇ »óŸ¦ XMLÇü½ÄÀ¸·Î Ãâ·ÂÇÏ¿© ÁØ´Ù.
gmond µ¥¸óÀº ¸ð´ÏÅ͸µ ÇÏ·Á´Â ¸ðµç ³ëµå¿¡ ¼³Ä¡µÇ¾î¾ß ÇÑ´Ù.
1) ù ¹øÂ° ³ëµå¿¡ ¼³Ä¡Çϱâ
gmond¸¦ óÀ½ ÇÑ °³ÀÇ ³ëµå¿¡ ¼³Ä¡ÇÏ´Â °úÁ¤Àº ´ÙÀ½°ú °°´Ù.
$ tar zxvf ganglia-monitor-core-2.4.1.tar.gz
$ cd ganglia-monitor-core-2.4.1
$ ./configure --help
$ ./configure --prefix=/usr/local/ganglia
$ make
$ su root # ´ÙÀ½ °úÁ¤Àº root ±ÇÇÑÀÌ ÇÊ¿äÇÏ´Ù.
# make install
½ÃÀÛ½ºÅ©¸³Æ®¸¦ µî·ÏÇÑ´Ù.
# cp gmond.init /etc/rc.d/init.d/gmond
# vi /etc/rc.d/init.d/gmond
...
GMOND=/usr/local/ganglia/sbin/gmond
...
:wq
# /sbin/chkconfig --add gmond
# /sbin/chkconfig --list gmond
µ¥¸óÀ» ½ÃÀÛÇÑ´Ù.
# /etc/rc.d/init.d/gmond start
# exit
2) gmond ¼³Ä¡È®ÀÎ
gmond°¡ ¼³Ä¡µÈ È£½ºÆ®¿¡ 8649 Æ÷Æ®·Î Á¢¼ÓÇÏ¸é ½Ã½ºÅÛÀÇ »óŰ¡ XML Çü½ÄÀÇ
¹®¼·Î Ãâ·ÂµÈ´Ù.
$ telnet localhost 8649
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
<!DOCTYPE GANGLIA_XML [
<!ELEMENT GANGLIA_XML (CLUSTER)+>
<!ATTLIST GANGLIA_XML VERSION CDATA #REQUIRED
SOURCE CDATA #REQUIRED>
<!ELEMENT CLUSTER (HOST)+>
<!ATTLIST CLUSTER NAME CDATA #REQUIRED
LOCALTIME CDATA #REQUIRED>
<!ELEMENT HOST (METRIC)+>
<!ATTLIST HOST NAME CDATA #REQUIRED
IP CDATA #REQUIRED
REPORTED CDATA #REQUIRED
GMOND_STARTED CDATA #REQUIRED>
<!ELEMENT METRIC EMPTY>
<!ATTLIST METRIC NAME CDATA #REQUIRED
VAL CDATA #REQUIRED
TYPE (string|int8|uint8|int16|uint16|
int32|uint32|float|double) #REQUIRED
UNITS CDATA #IMPLIED
SOURCE (gmond|gmetric) #REQUIRED>
]>
<GANGLIA_XML VERSION="2.4.1" SOURCE="gmond">
<CLUSTER NAME="unspecified" LOCALTIME="1029744023">
<HOST NAME="node1001.foo.bar.com" IP="10.0.0.1" REPORTED="1029744015
" GMOND_STARTED="1029743791">
<METRIC NAME="mem_free" VAL="9740" TYPE="uint32" UNITS="KBs" SOURCE="gmond"/>
<METRIC NAME="mem_cached" VAL="144300" TYPE="uint32" UNITS="KBs" SOURCE="gmond"/
>
<METRIC NAME="proc_total" VAL="154" TYPE="uint32" UNITS="procs" SOURCE="gmond"/>
<METRIC NAME="cpu_num" VAL="1" TYPE="uint16" UNITS="CPUs" SOURCE="gmond"/>
...
<METRIC NAME="os_name" VAL="Linux" TYPE="string" UNITS="" SOURCE="gmond"/>
<METRIC NAME="load_five" VAL="1.17" TYPE="float" UNITS="" SOURCE="gmond"/>
<METRIC NAME="cpu_idle" VAL="0.0" TYPE="float" UNITS="%" SOURCE="gmond"/>
<METRIC NAME="mem_total" VAL="255832" TYPE="uint32" UNITS="KBs" SOURCE="gmond"/>
<METRIC NAME="boottime" VAL="1028607062" TYPE="uint32" UNITS="" SOURCE="gmond"/>
<METRIC NAME="os_release" VAL="2.4.18-5" TYPE="string" UNITS="" SOURCE="gmond"/>
</HOST>
</CLUSTER>
</GANGLIA_XML>
Connection closed by foreign host.
3) ´Ù¸¥ ³ëµå·Î º¹»çÇϱâ
ù ¹øÂ° ³ëµå¿¡ ¼³Ä¡µÈ gmond °ü·Ã ÆÄÀϵéÀ» ´Ù¸¥ Ŭ·¯½ºÅÍ ³ëµå·Î º¹»çÇÑ´Ù.
$ su root
# /etc/rc.d/init.d/gmond stop # µ¥¸óÀ» ÁßÁö½ÃŲ´Ù.
¼³Ä¡µÈ gmond°ü·Ã ÆÄÀϵéÀ» tar·Î ¹´Â´Ù.
# cd /
# tar cvf ganglia.tar usr/local/ganglia/ etc/rc.d/init.d/gmond
¸ðµç ³ëµå¿¡ ´ëÇØ ´ÙÀ½ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.
# rlogin node_A
# cd /
# rcp node1001:/ganglia.tar . # node1001Àº À§¿¡¼ ganglia¸¦ ¼³Ä¡ÇÑ ³ëµåÀÇ À̸§
# /etc/rc.d/init.d/gmond stop # ±âÁ¸¿¡ gmond°¡ ½ÇÇàµÇ°í ÀÖÀ» °æ¿ì µ¥¸óÀ» ¸ØÃá´Ù
# tar xvf ganglia.tar
# rm -f ganglia.tar
# /sbin/chkconfig --add gmond
# /etc/rc.d/init.d/gmond start
4) Ganglia Cluster Status Tool (gstat) »ç¿ëÇϱâ
gstat´Â Ŭ·¯½ºÅÍÀÇ »óŸ¦ Äĸǵå¶óÀλ󿡼 º¸±â À§ÇÑ µµ±¸ÀÌ´Ù.
# /usr/local/ganglia/bin/gstat --help
# /usr/local/ganglia/bin/gstat -a # ¸ðµç ³ëµåÀÇ »óŸ¦ Ãâ·ÂÇÑ´Ù
CLUSTER INFORMATION
Name: unspecified
Hosts: 2
Gexec Hosts: 1
Dead Hosts: 0
Localtime: Mon Aug 19 17:20:09 2002
CLUSTER HOSTS
Hostname LOAD CPU Gexec
CPUs (Procs/Total) [ 1, 5, 15min] [ User, Nice, System, Idle]
node1002.foo.bar.com
1 ( 1/ 60) [ 0.88, 0.00, 0.00] [ 38.8, 0.0, 61.2, 0.0] OFF
node1001.foo.bar.com
1 ( 2/ 154) [ 0.94, 0.76, 0.80] [ 36.8, 0.0, 63.2, 0.0] ON
1.3. Ganglia Meta Daemon (gmetad) ¼³Ä¡Çϱâ [[¸ñÂ÷]]
gmetad´Â À¥ÇÁ·ÐÆ®¿£µå¸¦ ¼³Ä¡ÇϱâÀ§ÇØ ÇÊ¿äÇϸç expat, rrdtool, XML-Parser ÆÞ¿ë
¸ðµâÀÌ Æ÷ÇԵǾî ÀÖ´Ù. µû¶ó¼ À¥¼¹ö°¡ ¼³Ä¡µÉ ÇÑ °³ÀÇ ³ëµå¿¡¸¸ ¼³Ä¡ÇØ ÁÖ¸é
µÈ´Ù. gmetad¶ó´Â µ¥¸óÀ¸·Î µ¿ÀÛÇϸç 8651 Æ÷Æ®¸¦ »ç¿ëÇϸç perl·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù.
Âü°í>> ¹öÀü 2.5.0¿¡¼ gmetad°¡ monitor-core·Î Æ÷ÇÔµÇ¸é¼ ÀÛ¼º ¾ð¾î°¡
perl¿¡¼ C·Î ¹Ù²î¾ú´Ù. monitoring-core ¼³Ä¡½Ã ´ÙÀ½°ú °°ÀÌ --with-gmetad ¿É¼ÇÀ»
ÁÖ¾î configure Çϸé gmetad µ¥¸óÀÌ »ý¼ºµÈ´Ù.
CFLAGS=-I/usr/local/rrdtool/include LDFLAGS=-L/usr/local/rrdtool/lib \
./configure --prefix=/usr/local/ganglia --with-gmetad
# tar zxvf gmetad-0.1.1.tar.gz
# cd gmetad-0.1.1
# ./configure --prefix=/usr/local/gmetad
# make
# make install
# vi /usr/local/gmetad/etc/gmetad_sources
node1001 node1001.foo.bar.com 8649
node1002 node1002.foo.bar.com 8649
...
:wq
µ¥¸óÀ» ½ÃÀÛÇÑ´Ù.
# /usr/local/gmetad/sbin/gmetad
These hosts are being trusted...
127.0.0.1
# ps -ax | grep gmetad
25540 ? S 0:00 /usr/bin/perl -Tw /usr/local/gmetad/sbin/gmetad
25542 ? S 0:46 /usr/bin/perl -Tw /usr/local/gmetad/sbin/gmetad
# telnet localhost 8651
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE GANGLIA_XML [
<!ELEMENT GANGLIA_XML (CLUSTER)+>
<!ATTLIST GANGLIA_XML VERSION CDATA #REQUIRED
SOURCE CDATA #REQUIRED>
<!ELEMENT CLUSTER (HOST)+>
<!ATTLIST CLUSTER NAME CDATA #REQUIRED
LOCALTIME CDATA #REQUIRED>
<!ELEMENT HOST (METRIC)+>
<!ATTLIST HOST NAME CDATA #REQUIRED
IP CDATA #REQUIRED
REPORTED CDATA #REQUIRED
GMOND_STARTED CDATA #REQUIRED>
<!ELEMENT METRIC EMPTY>
<!ATTLIST METRIC NAME CDATA #REQUIRED
VAL CDATA #REQUIRED
TYPE (string|int8|uint8|int16|uint16|
int32|uint32|float|double) #REQUIRED
UNITS CDATA #IMPLIED
SOURCE (gmond|gmetric) #REQUIRED>
]>
<GANGLIA_XML VERSION="0.1.1" SOURCE="gmetad">
<CLUSTER NAME="unspecified" LOCALTIME="1029821383">
<HOST NAME="node1001.foo.bar.com" IP="10.0.0.1" REPORTED="1029821378
" GMOND_STARTED="1029745034">
<METRIC NAME="cpu_speed" VAL="2000" TYPE="uint32" UNITS="MHz" SOURCE="gmond"/>
<METRIC NAME="cpu_user" VAL="37.0" TYPE="float" UNITS="%" SOURCE="gmond"/>
...
<METRIC NAME="cpu_system" VAL="63.0" TYPE="float" UNITS="%" SOURCE="gmond"/>
<METRIC NAME="swap_free" VAL="995184" TYPE="uint32" UNITS="KBs" SOURCE="gmond"/>
</HOST>
<HOST NAME="node1002.foo.bar.com" IP="10.0.0.2" REPORTED="1029821375
" GMOND_STARTED="1029744366">
<METRIC NAME="cpu_speed" VAL="2000" TYPE="uint32" UNITS="MHz" SOURCE="gmond"/>
<METRIC NAME="cpu_user" VAL="39.8" TYPE="float" UNITS="%" SOURCE="gmond"/>
...
<METRIC NAME="swap_free" VAL="1052248" TYPE="uint32" UNITS="KBs" SOURCE="gmond"/
>
</HOST>
</CLUSTER>
</GANGLIA_XML>
Connection closed by foreign host.
1.4. Ganglia Gmetad Web Frontend ¼³Ä¡ [[¸ñÂ÷]]
À¥ ÇÁ·ÐÆ®¿£µå´Â PHP¾ð¾î·Î ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î PHP°¡ Áö¿øµÇ´Â À¥¼¹ö¿¡
¼³Ä¡µÇ¾î¾ß ÇÑ´Ù. À¥¹®¼ µð·ºÅ丮¿¡ Ç®¾îÁÖ°í, ¸î°¡Áö ¼³Á¤¸¸ ÇÏ¸é µÇ¹Ç·Î
¼³Ä¡°¡ °£´ÜÇÏ´Ù.
# cd /usr/local/apache/htdocs
# tar zxvf gmetad-webfrontend-0.1.1.tar.gz
# mv gmetad-webfrontend ganglia
# cd ganglia
# vi conf.php
...
$gmetad_root = "/usr/local/gmetad";
...
define("RRDTOOL", "/usr/local/rrdtool/bin/rrdtool");
...
:wq
Âü°íÀÚ·á [[¸ñÂ÷]]
1. Ganglia Toolkit Documentation
http://ganglia.sourceforge.net/ganglia_docs/single_page.html
-EOF- Ganglia Ŭ·¯½ºÅÍ ¸ð´ÏÅ͸µ Åø ¼³Ä¡ [[TOP]]