시스템 및 네트워크 모니터링 (RRDtool, cacti)

RRDtool은 일정시간 동안 몇가지 어떤 값을 측정하여 이 정보를 임의의 기간동안 RRDtool에 의해 저장되고 사용자에 의해서 그래프파일을 생성한다. 


저장되는 값들은 일반적으로 숫자값이지만 반드시 이러한 값에는 제한이 없다.
많 은 예제들이 SNMP를 사용하여 장비가 가지고 있는 MIB값을 추출하여 이값을 RRDtool은 데이터베이스를 만들고 이곳에 데이터를 저장하고. 이 데이터를 추출하는 웹 브라우저를 통해 볼수 있도록 GIF나 PNP형식으로 그래프를 만들어 준다
예를 들어 평균 네트워트 사용률이나 최대 사용률등을 계속 모니터링을 하면서 볼수 있도록 개발되어 있다


리눅스 시스템의 하드디스크 상황, 메모리 상황, 프로세스 상황, 이더넷의 네트웍트래픽 상황 등을 웹상에서 쉽게 모니터링 하고자 한다면 RRDtool과 cacti를 사용한다


RRDtool 배포 사이트 : http://oss.oekiker.ch/rrdtool



1. RRDtool 다운로드 및 설치하기

 
rrdtool을 설치하기 앞서 다음 패키지가 설치되어 있어야 한다

  -libart_lgpl
 -libart_lgpl-devel
 -zlib
 -zlib-devel
 -libpng
 -libpng-devel
 -freetype
 -freetype-devel
 -net-snmp-perl
 -net-snmp-libs
 -net-snmp
 -net-snmp-devel
 -net-snmp-utils

먼저 해당 패키지가 존재 하는지 검색을 한다

[root@nayana ~]# rpm -qa | grep libart_lgpl

패키지가 존재하지 않는다면 yum을 이용하여 패키지를 다운로드 한다

[root@nayana ~]# yum -y install libart_lgpl libart_lgpl-devel
[root@nayana ~]# yum -y install zlib zlib-devel
[root@nayana ~]# yum -y install libpnb libpng-devel
[root@nayana ~]# yum -y install freetype freetype-devel
[root@nayana ~]# yum -y install net-snmp-*

보통 devel 개발 버전이 설치되어 있지 않을것이다
devel 패키지와 net-snmp를 설치하면 될 것이다.


net-snmp 패키지를 설치하였다면 /etc/snmp/snmpd.conf 파일에서 4가지 설정사항을 해줘야 한다




위의 그림과 같이 기존에 있던 것은 주석처리를 해주고  그 아래 그림과 같이 수정한다
즉 sec.name 부분과 community부분을 public으로 설정하도록 한다
마지막으로 access 접근 제어 부분에서 그룹명을 public으로 설정하고 read권한부분을 all로 설정한다

설정이 완료 되었다면 snmp데몬을 시작한다

[root@nayana ~]# /etc/rc.d/init.d/snmpd start
snmpd (을)를 시작합니다:                                   [  확인  ]


RRDtool을 다운로드 하고 컴파일을 한 다음 설치하도록 하자

다운로드 사이트 :
http://oss.oetiker.ch/rrdtool/  
download를 클릭하여 해당 버전을 다운로드 하면 된다




소스 다운로드 링크 : http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz

우리는 편하게 하기 위하여 wget을 이용한다 / 다운로드는 원하는곳에 다운로드 하면 된다

[root@nayana ~]# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz

다운로드 받은 rrdtool을 압축을 푼다

[root@nayana ~]# tar xvfz rrdtool-1.2.27.tar.gz
[root@nayana ~]# cd rrdtool-1.2.27



[root@nayana rrdtool-1.2.27]#
./configure –prefix=/usr/local/rrdtool –disable-tcl
–disable-python –disable-ruby

–중략
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
—————————————————————-
Config is DONE!


          With MMAP IO: yes
         Perl Modules: perl_piped perl_shared
         Perl Binary: /usr/bin/perl
         Perl Version: 5.8.5
         Perl Options: PREFIX=/usr/local/rrdtool LIB=/usr/local/rrdtool/lib/perl/5.8.5
         Ruby Modules:
         Ruby Binary: no
         Ruby Options: sitedir=/usr/local/rrdtool/lib/ruby
         Build Tcl Bindings: no
         Build Python Bindings: n
         Build rrdcgi: yes
         Build librrd MT: yes


Type ‘make’ to compile the software and use ‘make install’ to
install everything to: /usr/local/rrdtool.


… that wishlist is NO JOKE. If you find RRDtool useful
make me happy. Go to http://tobi.oetiker.ch/wish and
place an order.


                               — Tobi Oetiker <tobi@oetiker.ch>
—————————————————————-
컴파일 작업을 시행한다

[root@nayana rrdtool-1.2.27]# make && make install

컴파일 작업이 이상없이 되었는지 확인하기 위하여 아래와 같은 명령어를 사용한다
여기서 0이 아닌 다른 숫자가 나올 경우 컴파일 중에 문제가 발생한 것이다
문제가 발생하면 위에서 필요한 패키지 중 설치하지 않는 패키지가 있는지 확인한다

[root@nayana rrdtool-1.2.27]# echo $?


0

여기서는 컴파일 작업 중 아무런 문제가 발생되지 않아 0 이 나타났다



2. cacti 다운로드 및 설치하기

cacti는 위에서 어늡한 RRDtool의 데이터베이스를 이용한 웹그래픽 생성엔진이다
cacti는 각종 데이터를 Mysql등의 데이터베이스에 시스템 상황들의 데이터값을 저장하고  시간단위로 저장된 데이터를 분석하여 웹상에서 그래프를 생성하여 보여주는 매우 유용한 시스템 모니터링 도구이다.

cacti,는 기본적으로 php를 기반으로 사용하는 웹도구이므로 반드기 php가 설치되어 있어야 한다
기본적으로  APM은 설치되어 있어야 하는것이다.

다운로드 사이트 : http://www.cacti.net/

 


우리는 wget을 이용하여 다운로드 한다
다운로드 위치는 /usr/local/src

소스 다운로드 : http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz

[root@nayana rrdtool-1.2.27]# cd /usr/local/src
[root@nayana src]# wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz

다운로드 받은 파일을 압축은 푼다

[root@nayana src]# tar xvfz cacti-0.8.7b.tar.gz

폴더명이 너무 길기 때문에 폴더명을 수정해 준다

[root@nayana src]# mv cacti-0.8.7b cacti
[root@nayana src]# cd cacti



mysql데몬을 어디서나 바로 start stop시킬수 있게 경로를 지정해 줬다


[root@nayana cacti]# vi /root/.bash_profile   (mysql, apache를 어디서나 start / stop 시킬수있게 경로 지정)


PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/apache/bin


BASH_ENV=$HOME/.bashrc


USERNAME=”root”

[root@nayana ]# source /root/.bash_profile  (바로 적용할 수 있게)



cacti 데이터 파일들을 저장하기 위해 mysql 데이터베이스를 생성

[root@nayana cacti]# mysqladmin create cacti -u root -p
Enter password:
[root@nayana cacti]#



cacti 데이터 베이스에 필요한 테이블 및 기본 데이터 생성하기


[root@nayana cacti]# mysql cacti < cacti.sql -u root -p
Enter password:
[root@nayana cacti]#

cacti 데이터베이스 접급권한 설정하기







[root@nayana cacti]# mysql -u root -p mysql
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.20-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY ‘123456’;
Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY ‘123456’;

 cacti@localhost  : 사용자
‘123456’ : 사용자 패스워드 (즉 cacti의 패스워드)

mysql 권한 설정 후 권한 재설정 사항을 적용하기 위해서 flush privileges; 명령어를 수행한다
위에서 기본제공되는 cacti.sql파일을 mysql에 저장하였다

저장된 mysql 데이테베이스를 확인하도록 하자






mysql> show databases;


+———-+
| Database |
+———-+
| cacti    |
| mysql    |
| test     |
+———-+
3 rows in set (0.00 sec)


mysql> use cacti;
Database changed


mysql> show tables;
+—————————+
| Tables_in_cacti           |
+—————————+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
| data_template_data        |
| data_template_data_rra    |
| data_template_rrd         |
| graph_local               |
| graph_template_input      |
| graph_template_input_defs |
| graph_templates           |
| graph_templates_gprint    |
| graph_templates_graph     |
| graph_templates_item      |
| graph_tree                |
| graph_tree_items          |
| host                      |
| host_graph                |
| host_snmp_cache           |
| host_snmp_query           |
| host_template             |
| host_template_graph       |
| host_template_snmp_query  |
| poller                    |
| poller_command            |
| poller_item               |
| poller_output             |
| poller_reindex            |
| poller_time               |
| rra                       |
| rra_cf                    |
| settings                  |
| settings_graphs           |
| settings_tree             |
| snmp_query                |
| snmp_query_graph          |
| snmp_query_graph_rrd      |
| snmp_query_graph_rrd_sv   |
| snmp_query_graph_sv       |
| user_auth                 |
| user_auth_perms           |
| user_auth_realm           |
| user_log                  |
| version                   |
+—————————+


48 rows in set (0.00 sec)


mysql>quit



본 데이터베이스를 확인한 다음 cacti의 접속 환경설정 php파일을 수정하도록 하자




mysql 계정 및 패스워드를 입력한다



데이터 파일과 로그 파일이 저장될 디렉토리인 rra디렉토리와 log디렉토리의 퍼미션을 777로 설정한다






[root@nayana cacti]# chmod 777 rra log
[root@nayana cacti]#


기본 웹서버 디렉토리아래에 심볼릭링크를 걸어준다






[root@nayana cacti]# ln -s /usr/local/src/cacti /usr/local/apache/htdocs/cacti
[root@nayana cacti]# cd /usr/local/apache/htdocs/
[root@nayana htdocs]# ll
합계 2096
-rw-r–r–  1 lee  games    2326  1월  6  2005    apache_pb.gif
lrwxrwxrwx  1 root root            20  2월 21 11:10   cacti -> /usr/local/src/cacti





웹 브라우저를 이용하여 심볼릭링크를 걸어둔 URL로 접속한다

http://192.168.0.10/cacti/


 NEXt를 클릭한다
 
신규로 설치를 할 것인지 묻는느다>
처음 설치를 하기 때문에 New Install을 선택하고 NEXT버튼을 클릭한다



NOT FOUNT라고 경고 메시지가 뜬다
cacti에서 경로를 /usr/local/bin/rrdtool로 인식하기 때문이다
이것을 위의 그림과 같이 경로를 재 설정해 준다

/usr/local/rrdtool/bin/rrdtool    –>수정


혹 PHP 경로가 잘못 설정되어 있다고 나온다면
which php를 입력하여 나온 경로를 입력해 주면 된다

Finish 버튼을 클릭을 한다



User Login 창이 나타나면 admin admin 이라고 입력을 한다  


다음 접속부터 사용할 패스워드를 입력한다


 


위의 화면이 정상적으로 출력이 되면 설치가 제대로 된 것이다.



이제부터 cacti를 설정해 보자

 


   1. devices 클릭
  2. Localhost 클릭



 


1. Downed Device Detection : None
2. SNMP Version : Version1
3. SNMP Community : public

위의 그림과 같이 수정을 해 준 다음 save 버튼을 클릭한다.



다음은 cacti의 기본 환경 설정이다
1. 좌측메뉴의 Setting 클릭
2. General  클릭
3. RRDTool Utility Version :  RRDtool 1.2.x 버전 선택
4. SNMP Version : Version 1 선택
5. save



관리자 root의 crontab에 아래의 내용을 추가한다






[root@nayana cacti]# crontab -e


*/5 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null2>&1


 cacti에서 기본적으로 제공하는 poller.php 스크립트를 매 5분마다 실행하여 그래프플 생성하도록
crontab에 설정을 추가한다




3. cacti 모니터 그래프 생성하기




좌측메뉴 devices 클릭 – 우측 localhost 클릭

 

Add Data Query 항목에서 아래 그림과 같이 3개의 항목을 추가해 준다
SNMP-Get Mounted Partions 선택 —> add 버튼 클릭



항목 설명
  1. SNMP – Get Mounted Partitions       :   해당 o/s 의 파티션 정보 표시
  2. SNMP – Get Processor Information  : cpu 정보 표시
  3. SNMP – Interface Statistics             : 이더넷 트래픽 정보 표시

 이 밖에도 많은 것들을 추가하여 그래프로 보여 줄 수 있다.
원하는 항목들을 선택하여 추가한 다음 save 버튼을 클릭하면 된다



위에서 생성했던 그래프 항목의 속성값들이 모두 나타난다
여기서 원하는 항목(그래프)만 선택하여 Create 버튼을 클릭한다





기본값으로 선택 후 create버튼을 클릭한다 (원하는 색상으로 변경할 수 있다)

 


선택하지 않은 항목이 있으면 이곳에서 선택해서 그래프를 생성할 수 있다




 좌측메뉴의 Graph Trees 클릭  —> Default Tree 클릭




Tree Items항목에서 ++ 버튼을 클릭한다




 1. Parent Item           : root
2. Tree Item Type     : Host
3. Host                     : localhost
4. Create 버튼 클릭




default Tree 항목에 localhost 항목이 새롭게 생겼다.





좌측 상단 graphs를 클릭하면 위 화면과 같이 나타난다 이것은 아직 로그 파일들이 생성되지 않아 타나난것이다.
약 5분정도 시간이 경과되면 아래와 같은 화면이 출력된다.




5분정도 경과 후 새로고침을 하면 위 화면처럼 그래프 화면이 보여진다



위 그림은 실제 모니터링이 되고 있는 모습이다


서버의 하드디스크 상황 . 메모리 상황 , 프로세스 상황  로그인 유저 상황 그리고 이더넷 카드의
트래픽을 확인 할 수 있다.

또한 기본 설정값으로 5분마다 웹페이지가 refresh 되도록 설정되어있기 때문에 5분이 지나면 웹페이지가
자동으로 새로고침되어 보여 준다.
그리고 해당 그래프 화면을 클릭하면 5분 . 일주일  1개월 1년의 그래프 화면을 볼수 있다




참고적으로 스위치 및  라우터 그리고 MS 계열도 모두 모니터링이 가능하다.





위 그림은 스위치 모니터링 페이지이며 각각 포트별로 트래픽을 확인 할 수 있다
스위치의 경우 각각 스위치마다 communiti 가 설정되어 있다
그 값을 불러주면 포트별로 트래픽을 확인 할 수 있다

이상으로 모니터링을 할 수 있는 RRDtool과 cacti에 대해 설명 하였으며
원격에 있는 리눅스 서버 및 MS 서버 그리고 라우터 및 스우치 등 다양하게 모니터링을 할 수 있다

감사합니다.


출처 : http://nayana.com/


서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

2 Responses

  1. 2022년 6월 21일

    2container

  2. 2023년 1월 27일

    3estonia

페이스북/트위트/구글 계정으로 댓글 가능합니다.