• 검색 결과가 없습니다.

다룰 내용

N/A
N/A
Protected

Academic year: 2022

Share "다룰 내용 "

Copied!
17
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Cacti with Rrdtool

(시스템 모니터링 – Beyond the MRTG)

효주아빠(http://blog.naver.com/cordba)

blog.naver.com/cordba

(2)

서론

예전 블로그를 통하여 MRTG를 이용하여 서버 및 네트웍장비등을 모니터링하는 방법에 대한 내용을 포스트하기도 했었다. MRTG는 SNMP(Simple Network Monitoring Protocal)등을 이용 하여 각종 장비등을 모니터링 할 수 있도록 개발된 프로그램으로 최대 2가지 입력값에 대한 비교적 제한적인 부분에 대한 모니터링만 가능했다.

위의 그래프로 알수가 없는 부분이 너무나 많았고 따라서 관리자는 좀더 유연하고 많은 정 보를 직관적으로 알수 있기를 바랄것이다. 그러한 이유로 관심 받기 시작한 툴이 Rrdtool(Round Robin Database Tool)이였고 좀더 많은 정보를 제공해 줄수 있었다.

하지만 어려운 사용방법 때문에 Rrdtool은 이것을 Base로 이용하여 관리의 용의성이 부여 된 Tool들이 몇가지 나와있고 여기서 이야기 하고자하는 Cacti도 이런류의 프로그램이다.

강력하고 유연한 Rrdtool의 기능에 관리 및 사용상의 용의성이 있는 툴이라 하겠다.

blog.naver.com/cordba

(3)

다룰 내용

이글에서 다룰 내용을 도식화 한 내용으로 상당히 광범위하지만 실제 업무에서 적용 가능 한 기술이라고 할수있다. 위의 그림에서는 모든 객체가 별도의 단위로 분리가 되어있지만 같은 서버에 설치되어도 상관이 없다. Cacti로 모니터링 하기 위해서는 다음과 같은 프로그 램이 필요하며 각각을 설치하고 설정하는 방법에 대하여 알아보도록 하겠다.

blog.naver.com/cordba

(4)

필요한 프로그램

- MySql DB Server (mysql-5.0.27-1 : http://www.mysql.com/) - Apache Httpd Server (httpd-2.2.6-1 : http://www.apache.org/) - PHP (PHP 5.1.6-3.7 : http://www.php.net/ )

- PHP Mysql(php-mysql), Php snmp(php-snmp)

- Net-Snmpd Server (net-snmp-5.3.1 : http://net-snmp.sourceforge.net/ ) - Net-Snmp-Utils (net-snmp-utils-5.3.1 : http://net-snmp.sourceforge.net/ ) - Rrdtool (rrdtool 1.2.23 : http://oss.oetiker.ch/rrdtool-trac/wiki/RRDtool13) - Open SSL (openssl-devel-0.9.8b : http://www.openssl.org/ )

- Cacti (Cacti 0.8.6j : http://www.cacti.net/index.php) - 운용 Server (Fedora Linux 6 : http://fedoraproject.org/)

blog.naver.com/cordba

(5)

프로그램 설치하기

필요한 프로그램들이 많은 관계로 일일이 컴파일하기 보다는 패키지 관리자(system- config-packages)나 yum(Yellowdog Updater Modified)를 이용하여 설치하는 것을 기본으로 한다.

Rrdtool의 설치 예

[root:/root]yum install rrdtool Loading "installonlyn" plugin Setting up Install Process Setting up repositories

Reading repository metadata in from local files Parsing package install arguments

Resolving Dependencies

--> Populating transaction set with selected packages. Please wait.

---> Downloading header for rrdtool to pack into transaction set.

rrdtool-1.2.23-6.fc6.i386 100% |=========================| 12 kB 00:01 ---> Package rrdtool.i386 0:1.2.23-6.fc6 set to be updated

blog.naver.com/cordba

(6)

--> Running transaction check

Dependencies Resolved

=============================================================================

Package Arch Version Repository Size

=============================================================================

Installing:

rrdtool i386 1.2.23-6.fc6 extras 464 k

Transaction Summary

=============================================================================

Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s)

Total download size: 464 k Is this ok [y/N]: y

Downloading Packages:

(1/1): rrdtool-1.2.23-6.f 100% |=========================| 464 kB 00:04 Running Transaction Test

Finished Transaction Test Transaction Test Succeeded Running Transaction

Installing: rrdtool ######################### [1/1]

Installed: rrdtool.i386 0:1.2.23-6.fc6 Complete!

단 cacti는 위의 홈페이지에서 적당한 디렉토리(예: /root/down) 다운로드 받아둔다.

※ 주의: 앞서도 이야기되었듯이 모든 프로그램들은 Fedora Package내에 포함된 상태이므로 디렉토리가 직접 설치한 경우와 다를수도 있다. 다만 자신이 직접 설치하는 경우에는 설치 디렉토리를 꼭 확인하길 바란다.

blog.naver.com/cordba

(7)

프로그램 설정

설정시 다룰 내용이 많으므로 이론적인 이야기보다는 일단 해보는데 중점을 두기로 하며 또한 복잡한 내용을 직관적이게 간소화 시키려 노력할 것이다. 꼭 필요한 부가적인 설명은 내용의 후미에 간략하게 다루기로 한다.

1. Apache Httpd설정

A) Apache PHP Module 확인 (PHP가 설치되면 이곳에 다음 파일이 존재) [root:/etc/httpd/conf]ls /usr/lib/httpd/modules/libphp5.so

/usr/lib/httpd/modules/libphp5.so B) httpd.conf 수정

[root:/etc/httpd/conf]vi httpd.conf

LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule cgi_module modules/mod_cgi.so

#

# PHP Module로드

#

LoadModule php5_module modules/libphp5.so ...

# negotiated documents. The MultiViews Option can be used for the

# same purpose, but it is much slower.

DirectoryIndex index.html index.html.var index.php

# AccessFileName: The name of the file to look for in each directory

#

AddHandler type-map var

#

# .php확장자를 가진 파일을 PHP interpreter가 헨들하도록 지정

#

AddHandler php5-script .php AddType text/html .php

# Filters allow you to process content before it is sent to the client.

# To parse .shtml files for server-side includes (SSI):

AddType text/html .shtml

C) HTTPD 서비스 등록

[root:/etc/init.d]chkconfig --add httpd

blog.naver.com/cordba

(8)

2. 방화벽(IPTABLE) 설정하기

[root:/etc/httpd/conf]cd /etc/init.d

[root:/etc/init.d]vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-securitylevel

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

[root:/etc/init.d]./iptables restart

방화벽 규칙을 지웁니다: [ OK ] chains를 ACCEPT 규칙으로 설정합니다: filter [ OK ] iptables 모듈을 업로드하고 있습니다: [ OK ] iptables 방화벽 규칙들을 적용합니다: [ OK ] 추가 iptables 모듈을 읽어오는 중입니다: ip_conntrack_netbio[ OK ] [root:/etc/init.d]iptables –L

※ 참고: TCP 80 – HTTPD Port

TCP, UDP 3306 – Mysql Port

blog.naver.com/cordba

(9)

3. Mysql 설정

A) my.cnf (Mysql 설정파일) [root:/etc]vi my.cnf [mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

# The MySQL server port = 3306

skip-locking key_buffer = 256M max_allowed_packet = 1M table_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache = 8

query_cache_size= 16M

# 자신의 CPU*2

thread_concurrency = 2 [mysql.server]

user=mysql basedir=/var/lib [mysqld_safe]

log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

B) mysql기동

[root:/etc/init.d]./mysqld start

MySQL 데이타베이스를 초기화 하고 있습니다: WARNING: The host 'host1' could not be looked up with resolveip.

This probably means that your libc libraries are not 100 % compatible with this binary MySQL version. The MySQL daemon, mysqld, should work

blog.naver.com/cordba

(10)

normally with the exception that host name resolving will not work.

This means that you should use IP addresses instead of hostnames

The latest information about MySQL is available on the web at http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com [ OK ] MySQL (을)를 시작합니다: [ OK ]

C) mysqld 서비스 등록

[root:/etc/init.d]chkconfig --list mysqld

mysqld 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제 [root:/etc/init.d]chkconfig --level 5 mysqld on

[root:/etc/init.d]chkconfig --list mysqld

mysqld 0:해제 1:해제 2:해제 3:해제 4:해제 5:활성 6:해제 [root:/etc/init.d]ls ../rc5.d/*mysqld

../rc5.d/S64mysqld

D) mysqld root password변경

[root:/etc/init.d]mysqladmin -u root‘자신의 패스워드’

4. Cacti 환경 생성

A) cacti database create

[root:/etc/init.d]mysqladmin -u root -p create cacti Enter password: (이전에 설정한 root의 패스워드 입력) [root:/etc/init.d]mysqlshow -u root -p

Enter password:

+---+

| Databases | +---+

| information_schema |

| cacti |

| mysql |

| test | +---+

blog.naver.com/cordba

(11)

B) cacti.sql 수행 – 이전에 받아 두었던 cacti를 압축을 풀어 그속에 포함된 cacti.sql 을 수행한다.

[root:/etc/init.d]cd ~/down/

[root:/root/down]tar zxvf cacti-0.8.6j.tar.gz cacti-0.8.6j/

cacti-0.8.6j/lib/

[root:/root/down]cd cacti-0.8.6j

[root:/root/down/cacti-0.8.6j]mysql -u root -p cacti < cacti.sql Enter password:

[root:/root/down/cacti-0.8.6j]mysql –u root –p mysql Enter password:

mysql>

C) cactiuser 생성 – 아래의 예 중에서 하나를 골라서 설정한다.

예1) cactiuser 모든(*) 곳에서 접속 가능

mysql> GRANT ALL ON cacti.* TO cactiuser IDENTIFIED BY '패스워드';

예2) cactiuser 로컬(localhost)에서만 접속 가능

mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '패스워드';

※ 설명: cactiuser를 생성하고 cacti Database의 모든 권한(ALL ON cacti.*)을 부여 mysql> flush privileges;

D) cacti mysql 환경 설정

[root:/root/down/cacti-0.8.6j]vi include/config.php

/* make sure these values refect your actual database/host/user/password */

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "패스워드";

$database_port = "3306";

blog.naver.com/cordba

(12)

E) OS cactiuser 생성 및 환경

[root:/root/down/cacti-0.8.6j]useradd –g users –d /var/www/html/cacti cactiuser [root:/root/down/cacti-0.8.6j]passwd cactiuser

Changing password for user cactiuser.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root:/root/down/cacti-0.8.6j]chown -R cactiuser:users ../cacti-0.8.6j [root:/root/down]cd ..

[root:/root/down]cp -pr cacti-0.8.6j /var/www/html/cacti/

[root:/root/down]chmod 755 /var/www/html/cacti [root:/root/down]su – cactiuser

[cactiuser:/var/www/html/cacti]crontab –e

*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1 [cactiuser:/var/www/html/cacti]crontab -l

*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1

blog.naver.com/cordba

(13)

Cacti 처음 접속

1. 처음 접속 – “http://localhost/cacti” 나 “http://ip address/cacti”로 접속하면 다음과 같은 화면을 볼수 있다.

2. Cacti Type

blog.naver.com/cordba

(14)

3. Cacti path setup

blog.naver.com/cordba

(15)

4. Cacti Login – 위의 주소로 접속할 때 매번 볼수 있는 화면

※ 처음 로그인 할 때 ID와 패스워는 admin/admin이다.

5. Cacti Console

blog.naver.com/cordba

(16)

문제해결

1. Mysql 관련 문제 - Cacti를 설치.사용하면서 가장 흔하게 직면하는 문제는 다름아닌 Mysql과 관련된 설정이 제대로 안된 경우이다. 가장 대표적인 예로는 php-mysql모듈이 제대 로 설치되지 않은 경우나 ID와 패스워드(config.php 파일의)가 잘못 설정된 경우는 http://localhost/cacti를 수행하면 아무런 화면을 볼수 없다. 따라서 PHP를 의심하는 경우 가 많으나 문제의 포인트를 Mysql과 관련 시켜볼 필요가 있다.

PHP를 테스트하기 위하여 /var/www/html 밑에 다음과 같은 test.php를 만들어 테스트를 해 볼수 있다.

-- test.php ---

<?php

echo "<H1>PHP Ok!</H1>";

?>

--- http://localhost/test.php

2. snmp관련 문제 – 다음과 같이 어떠한 데이터도 가져오지 못하는 경우에는 Snmp관련 프로 그램이 설치되지 않았거나 문제가 있는 경우이다. 믈론 snmp에서 데이터를 가져올 때 잘 못 된 OID(snmp mib의)가 잘못 입력된 경우도 있을수 있지만 후에 이 문서와 별도로 다룰 예정 이다.

blog.naver.com/cordba

(17)

마치며..

시스템의 관리자의 입장에서 관리의 포인트(대상)는 기하급수적으로 늘어나지만 그것을 일 일이 감시하고 모니터링할 수는 없는 입장이다. 따라서 어떻하면 쉽고 간편하게 관리할수 있을까라는 고민을 하게된다. 믈론 비싼 돈을 투자하여 사용의 NMS등을 도입하면 상당히 편 리할수도 있으나 현실은 그렇지 못한 경우가 많기 때문에 “어떻하면 돈 안들이고 쉽게 모 니터링 할수 없을까?” 수많은 고민을 하게된다.

그래서 생각하게 되는 SNMP인테 이것을 이용한 시스템 및 네트웍 모니터링 툴들은 상당히 많이 나와 있으며 각기 사용하는 방법도 조금씩 다르다. 앞서 이야기했던 MRTG도 그러한 툴 들 중에 하나이고 나름대로 좋은 툴이지만 투자한 시간에 비하여 결과는 만족 스럽지 못한 것도 사실이다. 그런 이유로 좀더 강력한 모니터링 환경을 구축을 갈망하는 관리자에게 rrdtool은 단비와도 같은 존재이지만 복잡한 지식이 필요하여 포기하는 수가 많았다.

주위에도 그러한 부분에 대한 고민을 이야기를 하는 경우가 많았지만 의외로 모르는 관리 자가 많아서 이글을 쓰게되었다.

이 문서를 보는 관리자에게 rrdtool의 강력한 기능과 cacti의 쉬운 기능으로 약간의 노고 를 덜어 줄수 있었으면 좋겠다.

시간상 cacti를 사용하기 위한 소개와 설치에 비중을 두었으나 다음에는 실무에서 만날수 있는 서버(unix, windows)와 네트웍 장비, 프린터등 SNMP를 지원하는 많은 장비등을 원격에 서 모니터링 할수 있도록하는 내용을 다룰 예정이다.

blog.naver.com/cordba

참조

관련 문서

홈네트워크 서비스를 운영관리하기 위한 관련 장비 로써 원격검침을 수행하기 위한 원격검침 서버, 차량출 입관리 서버, 댁내외 홈네트워크 서비스 보완을 위한 방화벽 등과 관리

이 연구에서는 미국보다 더 좋은 절단면을 만들기 위해서 시신의 온몸을 포매하고 얼리는 장비 (포매상자, 냉동고)와 기술, 그리고 0.2 mm 간격으로 연속절단하는 장비

[r]

4차 산업혁명시대에 개인의 의무기록 및 의료정보를 수집하고, 가치 있는 보건의료 데이터 와 정보를 분석 〮 생성해 양질의 의료와 환자의 질병예방을

• 오라클, SQL 서버 등 일반적으로 알고 있는 데이터베이스 제품이 DBMS다..

유파별 태평무의 소개와 내용 2... 유파별 태평무의

 물리적 모델링 : Target DBMS의 스키마로 변환 Reporting 및 모델 통합/버전 관리 등 지원.  Reporting 및 모델 통합/버전

(Micro wave