2009년 12월 16일 수요일

FreeBSD 7 시스템 사용량 통계를 그래프로 출력. rrdtool. cacti.

CPU, 메모리 사용량, 네트워크 트래픽 등을 기록하여, 그래프로 쉽게 출력해주는 cacti.
설치해두면 언젠가 시스템을 모니터링 해야할때가 오면 쓸모가 많습니다.



기본적으로 MySQL, Apache, PHP는 설치되어 있어야합니다. 제 블로그에 있습니다.
기준은 FreeBSD 7.2, Apache 2.2, PHP5, MySQL 5.1 UTF-8 입니다.
PHP5 설치 옵션 중에 net-snmp support 부분이 있을것입니다. 체크해주세요. (관련이 있는지는 잘 모름)

일단 cacti를 설치하도록 합니다. 의존성에 의해서 net-snmpd와 rrdtool이 함께 설치됩니다.
# cd /usr/ports/net-mgmt/cacti && make install clean


MySQL의 DB와 계정을 셋팅합니다.
# mysqladmin --user=root -p create cacti
# mysql -u root -p
mysql> GRANT ALL ON cacti.* TO cacti at localhost IDENTIFIED BY 'passwd'; FLUSH PRIVILEGES;
mysql> quit;
# mysql -u cacti -p passwd < /usr/local/share/cacti/cacti.sql


cacti의 DB연결을, 위에서 세팅한 DB에 맞게 수정합니다.
# vi /usr/local/share/cacti/include/config.php
[code]
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "passwd";
$database_port = "3306";
[/code]

crontab을 수정하여 아래의 내용을 추가합니다.
# vi /etc/crontab
[code]
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
[/code]

net-snmpd의 접근할 계정을 만들어줍니다.
# net-snmp-config  --create-snmpv3-user -ro
계정명 엔터, 패스워드 엔터, 빈칸으로 엔터


웹에서 접근이 가능하도록 링크를 만들어줍니다. 아파치 2.2 기준.
(링크하는 방법에 마음에 들지 않는다면, httpd.conf에 Alias를 추가해도 된다.)
# ln -s /usr/local/share/cacti /usr/local/www/apache22/data/cacti


필요한 데몬들을 활성화합니다.
# vi /etc/rc.conf
[code]
snmpd_enable="YES"
snmptrapd_enable="YES"
[/code]
# /etc/rc.d/cron restart
# /usr/local/etc/rc.d/snmpd start
# /usr/local/etc/rc.d/snmptrapd start

웹브라우저로 cacti에 접근하여 로그인. 초기 계정과 비밀번호는 admin / admin
http://호스트IP/cacti

cacti는 익숙해지려면, 잠시 혼란스러울 수 있습니다.
(죄송합니다... 제 수준으로는 제대로 설명을 못하겠습니다.)
좌측의 Devices 메뉴 클릭 후 Localhost 로 들어가서 노랗게 표시한 곳을 수정하고 저장한다.
SNMP 유저네임과 패스워드는 아까 net-snmp-config 툴로 만든 계정이다.
앗!!! 깜박하고 표시를 안해두었다!! 계정 밑의 SNMP Privacy Protocol은 None으로 한다!!


스크롤을 내려 하단에 보면 모니터을 원하는 장치를 추가할 수 있다.
SNMP를 설정했기 때문에 ucd/net snmp를 이용해서 모니터링해도 된다.

나의 경우는 기본적으로 있던 목록들을 전부 삭제하고, 아래의 4개를 추가했다.
ucd/net load average
ucd/net cpu usage
linux memory usage
snmp - interface statistics
추가했으면 좌측 상단메뉴의 new graphs를 클릭하여 모니터링을 원하는 장치들의 그래프를 만들어준다.
완료했으면 죄측 상단의 graphs 라는 큰 메뉴를 클릭하면 그래프가 5분 단위로 갱신되고 있다.





linux - memory usage가 마음에 드는데, 유닉스인 FreeBSD에서는 작동하지 않는다.
하지만, 따로 추가적인 작업을 해주면 리눅스처럼 사용이 가능하다.


리눅스 에뮬레이터를 설치하고, 아래의 내용을 추가한다.
# cd /usr/ports/emulators/linux_base-fc4 && make install clean
# vi /etc/rc.conf
[code]
linux_enable="YES"
[/code]


fstab에 아래의 내용을 추가한다. 오타나면 부팅 불능의 사태가 발생할 수 있다!! 협박아님!! 진짜!!
# vi /etc/fstab
[code]
linproc /compat/linux/proc linprocfs rw 0 0
[/code]


cacti의 스크립트를 수정한다.
# vi /usr/local/share/cacti/scripts
[code]
#!/usr/bin/perl

$mem = `cat /compat/linux/proc/meminfo | grep -w "$ARGV[0]"`;
$mem =~ s/($ARGV[0].*\s)(.*[0-9])( kB)//;

print $2;
[/code]

# reboot

참고 사이트: http://blog.pages.kr/151

댓글 없음:

댓글 쓰기