[클러스터] Ganglia 클러스터 모니터링 툴 설치
Ganglia 클러스터 모니터링 툴 설치
이 문서는 클러스터 모니터링 툴로 버클리에서 개발된 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 데몬에
멀티캐스트 메시지를 보내어 자신의 상태를 알리며, 다른 호스트의 정보를
수집하여 자신과 다른 노드의 시스템 상태를 XML형식으로 알려준다.
– Ganglia Meta Daemon (gmetad)
gmond는 같은 네트웍상의 호스트에게만 호스트정보를 전달하기 때문에
WAN(Wide Area Network)에서는 멀티캐스팅이 되지 않는다. 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]]