Category Archives: 리눅스서버관리

[NMS] 추천할만한 시스템 모니터링 툴 Cacti

사용자 삽입 이미지
괜찮은 NMS툴인 Cacti를 소개합니다. 이름 자체는 선인장인 Cactus의 복수 형을 뜻합니다. 위의 스크린샷에서 대충 알 수 있듯이 트리형태의 뷰를 제공하고 네트워크 트래픽뿐만 아니라 SNMP에서 가져올 수 있는 모든 정보를 보기 좋게 보여줍니다. 인터페이스도 깔끔하고 좋습니다.

이 글은 기억용으로 대충 작성한 글입니다. 참고하시기엔 어려움이 있을것 같습니다. 죄송합니다.

선행 작업으로 다음의 두가지 글을 먼저 수행하시기 바랍니다. Cacti는 기본적으로 rrdtool을 사용합니다.
[rrdtool 설치] [SNMP 설치]

[이곳]에 가셔서 Cacti의 최신버젼을 다운받도록 합시다. 다음은 시스템에 미리 필요로 하는 패키지들을 확인해 보도록 하겠습니다. RPM기반의 리눅스를 사용하고 있다고 가정할 때 다음과 같이 설치가 되어있는지 확인해 봅시다.
[code]httpd
php
php-mysql
php-snmp
mysql
mysql-server
net-snmp[/code]
컴파일 하여 설치할 경우 php의 configure 옵션에 SNMP사용을 위한 –with-snmp가 있어야 합니다.

이제 Cacti를 설치하여 봅시다.
[code]tar xzvf cacti-version.tar.gz
cd cacti-version
mysqladmin –user=root create cacti
mysql cacti < cacti.sql[/code]
MySQL에서 사용자 권한도 추가해 줍니다.
[code lang-sql]> mysql –user=root mysql
> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ‘somepassword’;
> flush privileges;[/code]
압축을 푼 Cacti 폴더를 적당한 웹페이지로 접속할수 있는곳으로 이동합니다. 그리고 include/config.php 파일을 수정합니다.
[code]$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cacti”;[/code]
Cacti 수행을 위해 cactiuser라는 계정을 만들었다는 조건하에 다음을 수행합니다.
[code]chown -R cactiuser rra/ log/[/code]
그리고 crontab에 다음을 추가합니다. (/var/www/html/cacti에 위치한다고 할때)
[code]*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1[/code]
이후에 접속하셔서 설정을 진행하시면 됩니다.
그래프의 한글이 깨질경우 include/config.php파일에 putenv(“LANG=ko_KR.UTF-8”);를 추가해 주시면 해결 됩니다.

SNMP 서비스 컴파일 설치 하기

[Net-SNMP]에서 제공하는 SNMP를 컴파일 하여 직접 설치해 보도록 하겠습니다. 이 글을 작성하는 시점에서의 가장 최신 버젼은 5.5입니다. 시간이 지나서 이글을 보실 경우에는 홈페이지에 방문하여 나오는 가장 최신인 안정화 버젼을 사용하시면 됩니다.

컴파일 하여 설치하기
/usr/local/net-snmp에 설치한다는 조건하에 다음과 같은 옵션으로 설치합니다.

$ tar -zxvf net-snmp-5.5.tar.gz
$ cd net-snmp-5.5
$ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure --prefix=/usr/local/net-snmp \
  --disable-shared --with-mib-modules=mibII,host,mibII/ip,mibII/tcp,mibII/udp, \
  mibII/icmp,mibII/var_route,mibII/kernel_linux,ucd_snmp
$ make
$ make install

설정 파일 생성하기
EXAMPLE.conf 파일을 참고하셔서 설정파일을 생성하시면 됩니다. 기본적인 위치는 /usr/local/net-snmp/share/snmp/snmpd.conf 입니다.

rocommunity public
rocommunity public 127.0.0.1
rocommunity test 87.65.43.21
includeAllDisks

위와 같은 간단한 설정만으로도 CPU사용량, 로드에버리지, 네트워크, 메모리/스왑 사용량, 접속 사용자, 실행중인 프로세스 정보를 얻어올 수 있습니다. includeAllDisks옵션은 NFS를 포함한 마운트된 모든 파티션의 정보를 얻어올 수 있게 하는 옵션입니다.

서비스 실행
서비스는 다음의 명령으로 실행합니다. /etc/rc.d/rc.local 파일등에 넣어두면 자동 실행 시킬 수 있습니다.

/usr/local/net-snmp/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a

서비스가 정상적으로 수행중인지 정상적으로 161번 포트가 열려있는지 확인해 봅시다. 결과가 출력된다면 성공입니다.

$ netstat -ln | grep 161

참고 : http://forums.cacti.net/about15353.html