지난번, 시스템에 Cacti를 설치하고, 정작 그래프는 출력이 안되서
결과적으로 실패한 경험을 했습니다. 지난번 설치시에, Ubuntu의 aptitude를 이용한 설치를 했었는데, 그것때문에 데이터 디렉토리의 권한 등에 문제가 있지 않았나 하는 생각이 좀 들었지요. 그래서 다음으로는 수동설치를 해보았습니다. (수동 설치도 어렵지 않습니다. 문서도 많고요.)
결론부터 말하자면, 그래프가 출력되지 않은 이유는 SNMP 프로토콜의 권한 설정때문이었습니다. 그래서 SNMP 프로토콜의 권한을 v1, public 으로 설정하고 그래프 출력까지 제대로 나오도록 완료했습니다.
우선 참고한 문서는
SNMP + RRDTool + Cacti on Debian Lenny mini-HOWTO
입니다.
SNMP 설정을 바꾸는 것이 중요했지, aptitude를 이용한 설치냐 수동설치냐는 중요하지 않았기때문에, aptitude를 이용한 설치법을 알려드리겠습니다.
서버에 ssh로 접근해서, 아래 명령을 실행하면 됩니다. (PHP, MySQL, Apache2가 설치되어있다고 가정합니다.)
$ sudo apt-get install cacti*
이 명령으로, cacti와 cacti-spine이 설치됩니다. cacti-spine은 데이터를 수집할때, PHP 스크립트(cmd.php)를 돌리는 대신 설정할 수 있는 바이너리 실행파일입니다. (속도 향상이 있다고 하네요.)
그리고 나서, http://localhost/cacti 에 접속해보면, 처음 설치에 따른 몇가지 설정을 하게 되지요.
그 다음은 서버에 snmpd와 각종 snmpwalk 같은 SNMP 유틸리티를 설치하는 것인데, 아래 명령으로 설치하면 됩니다.
$ sudo apt-get install snmpd snmp
그 후 고쳐줘야 할 부분이, 외부 서버에서 이 서버의 SNMP 정보를 취득할 수 있도록 해주는 것인데요, /etc/snmp/snmpd.conf 파일과
/etc/default/snmpd 파일을 수정해야 합니다.
우선 /etc/snmp/snmpd.conf 파일을 다음처럼 수정…
#com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private
기본값은 paranoid인데, readonly로 수정했습니다.
그리고 /etc/default/snmpd 파일을
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
이렇게 수정해서, 다른 서버에서 들어오는 요청에도 응답하도록 수정합니다. 다만, 이렇게 수정한다면 서버가 잘 동작하는 firewall 아래 있어야겠지요. 아니면, SNMP v3로 사용자 계정을 설정한다던가 하는 다른 방법을 선택해야 합니다.
서비스를 재시작합니다.
$ sudo service snmpd restart
아래 명령을 실행해서 출력이 제대로 나오는지 확인해보세요.
$ snmpwalk -Os -c public -v 1 localhost system
Cacti는 잘 설치되어있고, 서버에 잘 접속했다면 기본적으로 device에 현재 서버(localhost)가 등록되어있을텐데, 그 서버를 삭제하고, 새로 작성합니다. device에서 add로 서버를 추가하는데, Host Template를 ucd/net SNMP Host를 선택하고, SNMP Version을 Version 1. 그리고 나머지 부분은 기본값으로 잘 동작합니다.
설치하고 나면, 왼쪽 메뉴중 New Graphs를 선택해서 기본적인 Graph들을 추가하고, 10분쯤 새로고침 해보면 예쁜 그래프가 나와있을겁니다. 이제 Graph Log는 작성되고 있으니, 본업으로 돌아가 코딩을 해야겠군요.
다음에 할일은..
- SNMP v1 인증을 v3 인증이나, ssh tunneling을 이용한 것으로 바꾸기.
- Apache2, MySQL, Memcached에 대한 템플릿 추가하기.