저번엔 쉽게쉽게 됐었는데 이번엔 apt-get으로 설치하는데 많이 애를 먹었다 = =)
설치 해봅시당!
OS : Ubuntu 13.04 / 3.8.0-33-generic
CentOS 6.4 / 2.6.32
1. Introduction
Ganglia는 모니터링 툴로 해당 노드의 CPU, Memory, Network등의 사용량을 그래프로 나타내 준다.
총 3개로 나눠볼 수 있다.
- gmond : 상태를 직접 모니터링하는 데몬, 각 노드에 설치해서 gmetad가 설치된 곳으로 현재 상태를 전송한다.
- gmetad : gmond에서 보내온 데이터를 모아 볼 수 있게 수집한다.
- gnaglia-webfrontend : gmetad를 설치한 곳에서 gmond를 통해 수집한 데이터를 웹을 통해 볼 수 있게 한다.
2. Base
1) Ubuntu
- apache + php
(아래는 apt-get과 yum으로 ganglia설치 할 때 의존성에 의해 같이 설치되므로 생략 가능)
- rrdtool
- libganglia1
3. Ganglia
1) Install
Ganglia meta daemon을 둘 노드 한곳과 나머지 노드를 구분하여 설치한다.
모니터링만 할 노드에는 ganglia-monitor(ganglia, gmond)만 설치하면 된다
- Ubuntu
$ apt-get install ganglia-monitor, gmetad, ganglia-webfrontend
- CentOS
rpmforge repository 추가
$ rpm -ivh http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
$ yum install ganglia ganglia-gmetad ganglia-gmond ganglia-web
설치 중 아파치 재시작을 물어온다. 재시작 두번~
자동으로 실행된 서비스들을 내리자. 나는 스크립트가 뭔가 이상한지 start/stop이 안된다. 일단 내리자.
$ service ganglia-monitor(gmond) stop
$ service gmetad stop
2) Configuration
(1) Ganglia Meta Daemon
$ vi /etc/ganglia/gmetad.conf
data_source "Cluster" node1:8649 node2:8649 ....
....
gridname "Hadoop"
...
Ganglia는 rrdtool을 사용해서 각종 metrics를 표현해준다. 따라서 gmetad가 설치된 노드에 rrdtool을 저장할 곳의 권한이 있어야 한다.
기본값은 /var/lib/ganglia/rrdtool 인듯
(2) Ganglia Monitoring Daemon
$ vi /etc/ganglia/gmond.conf
globals {
...
user = input_user_who_use_ganglia"
...
}
cluster {
name = "Hadoop"
ownder = "input_user_who_use_ganglia"
}
udp_send_channel {
host = node1
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
}
...
/* 이 아래에는 각 metric에 대해 time threshold를 수정하는 변수값들이 있다. */
- CentOS를 위한 자동 실행 설정
$ chkconfig gmond on
$ chkconfig gmetad on
(3) Firewall
$ vi /etc/sysconfig/iptables
-A INPUT -m udp -p udp --dport 8649 -j ACCEPT
-A INPUT -m udp -p tcp --dport 8649 -j ACCEPT
$ service iptables restart
(4) Hadoop-Ganglia
hadoop관련 metrics설정 (for hadoop-2.2.0)
$ vi /where_hadoop_located/etc/hadoop-metrics2.properties
*.sink.file.class=org.apache.hadoop.metrics2.sink.FileSink
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
namenode.sink.ganglia.servers=name.mdms:8649
datanode.sink.ganglia.servers=name.mdms:8649
jobtracker.sink.ganglia.servers=name.mdms:8649
tasktracker.sink.ganglia.servers=name.mdms:8649
maptask.sink.ganglia.servers=name.mdms:8649
reducetask.sink.ganglia.servers=name.mdms:8649