RadarURL
Skip to content
조회 수 7377 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

리눅스 시스템 최적화 튜닝(5)

MRTG 이용한 네트워크 모니터링

 

글쓴이 : 문태준

HTTP://tunelinux.pe.kr, HTTP://database.sarang.net 운영자

 

리눅스 시스템 모니터링과 최적화

2001/8 안정된 시스템 관리를 위한 시스템 모니터링 제대로 쓰기

2001/9 네트워크 모니터링 익히기

2001/10 운영체제와 커널 차원에서의 튜닝과 보안

2001/11 응용프로그램에서의 최적화

2001/12 MRTG 이용한 네트워크 모니터링

 


 

두번째 강의에서는 네트워크 모니터링 프로그램에 대하여 알아보았으며 네트워크 트래픽을 사용하는데 주로 사용되는 MRTG에 대하여 소개를 하였다. MRTG(The Multi Router Traffic Grapher)는 일반적으로 WAN(Wide Area Network) 구간에 대한 트래픽을 점검하는 프로그램으로 회선의 트래픽을 모니터링하기에는 가장 우수한 툴중 하나이다.

 

0. 들어가며

2001년 9월호 강의에서 네트워크 모니터링 프로그램에 대한 전반적인 소개를 하였다. 네트워크 패킷 분석에는 tcpdump, 포트 탐색에는 nmap, 네트워크 상태에 대한 정보는 netstat, 파일과 프로세스, 소켓에 대한 정보는 lsof를 이용한다. 트래픽과 관련해서 일반적으로 많이 사용하고 있는 것이 여기서 설명하고자 하는 MRTG이다. 이외에도 내부 네트워크 레벨의 모니터링 프로그램으로 ntop 등이 있다. 네트워크 모니터링이라고 하면 빠질 수가 없는 것이 네트워크 관리 시스템(Network Management System, NMS)이다. NMS는 안정적이고 효율적으로 네트워크 환경을 제공하기 위해서 네트워크 상에 존재하는 다양한 자원을 모니터링하고 제어한다. 여기에 사용되고 있는 것 중 하나가 IETF(Internet Engineering Task Force)에서 제정한 인터넷 관리 프로토콜인 SNMP(Simple Network Management Protocol)이다. NMS는 위의 개별적인 프로그램과는 그 성격이 다르며 전체 네트워크의 구성을 관리하고 운영할 수 있는 플랫폼으로 볼 수가 있다.

 

운영하는 시스템과 장비가 한두대이면 몰라도 규모가 커질수록 시스템 관리자가 관리할 수 있는 규모는 한계가 있다. 또한 이것을 모두 개별적으로 모니터링하기란 현실적으로 힘든 일이다. 이러한 경우 상용솔루션을 구입하지 않는다면 SNMP와 MRTG를 결합하여 시스템 모니터링을 자동화하는 방법을 이용할 수 있다. 물론 굳이 MRTGSNMP가 아니라고 하더라도 주기적으로 시스템을 모니터링하는 것은 가능하다. 간단한 쉘 스크립트를 짜고 cron을 이용하여 주기적으로 보고서를 만들 수 도 있다. php나 펄등을 이용하여 결과를 웹으로 출력도 가능하다. 그런데 위에서 말을 한것처럼 다양한 자원에 대한 모니터링과 제어가 중요해지면서 발전을 해오것이 SNMP이며 대부분의 네트웍 장비에서도 표준으로 지원하고 있고 리눅스나 솔리리스, HP-UX 등 대부분의 유닉스에서도 사용이 가능하다. MRTGSNMP agent가 탑재된 장치의 트래픽을 모니터링하는 툴로 장치에 주기적으로 SNMP 폴링을 하여 트래픽 정보를 그래프로 보여주는 html 페이지를 생성한다. 복잡한 프로그래밍을 하지 않아도 MRTG의 원리를 조금만 이해하면 시스템 모니터링 작업을 아주 간편하게 처리할 수 있다.

 

원래는 MRTG와 SNMP를 이용하여 시스템 모니터링를 자동화하는 방법에 대해서 설명을 하려고 했는데 이에 관련된 글들이 조금씩 계속 나오고 있고 MRTG 사용자수에 비하여 막상 MRTG 사용에 대한 자료는 부족하기에 이번 강의에서는 MRTG 에 대하여 상세하게 설명을 하겠다. 보통 처음 사용하는 사람들은 설정옵션만 보고도 질려버리는 경우가 많이 있지만 그중 주로 많이 사용되는 옵션을 중심으로 설명을 하겠다.

 

 

1. MRTG란 무엇인가? - MRTG 소개 및 사용방법

그렇다면 MRTG란 무엇인가? The Multi Router Traffic Grapher (MRTG)는 네트워크의 부하를 감시하는 툴이다. MRTG는 현재 네트워크의 상태를 HTML로 만들어서 사용자가 쉽게 볼수록 한다. MRTG 사이트에 있는 http://www.stat.ee.ethz.ch/mrtg/ 화면이나 필자의 사이트에 있는 그래프를 본다면 쉽게 이해가 갈 것이다.

 

 

 

MRTG는 대부분의 운영체제에서 작동을 하며 리눅스도 지원이 된다.라우터에서 트래픽 카운터를 읽는 SNMP를 사용하는 펄 스크립트와 트래픽 데이타를 수집하고 쉽게 읽을 수 있도록 그래픽 화면으로 변환하는 C로 구성되어있다. 속도가 요구되는 부분은 C로 작성하였다.

 

MRTG는 매일매일의 트래픽 상황, 과거 7일간, 4주간, 1년간 트래픽 상황을 그래프로 생성한다. 로그를 효율적으로 관리하기 때문에 로그가 커질 염려는 하지 않아도 되고 2년간의 자료를 보관한다. 비교적 저스펙의 하드웨어에서도 50개 이상의 네트웍 링크를 모니터링할 수 있다.

 

또한 네트웍 트래픽뿐만 아니라 모든 SNMP 변수에 대해서도 모니터링이 가능하다. 외부 프로그램을 이용해서 MRTG가 모니터링할 수 있는 자료를 모을 수도 있다. 시스템 부하, 로그인세션 , 모뎀의 가용성 등도 MRTG를 이용해 모니터링할 수 있다. 2개 이상의 데이터 소스를 하나의 그래프로 나타낼 수도 있다.

 

MRTG의 특징은 다음과 같다.

 

1. 대부분의 Unix플랫폼과, WindowsNT상에서 동작한다.

2. 간단하게 커스터마이즈할 수 있도록 Perl를 사용하고 있다.

3. 이식성이 좋은 펄을 사용해 SNMP 부분을 프로그래밍했다. 그래서 별도로 SNMP 패키지를 설치할 필요가 없다.

4. 로그를 정리하기 위한 독자의 알고리즘을 채용하고 있으므로, MRTG의 로그파일의 사이즈가 커지지 않는다.

5. 반자동의 설정용 툴을 지원한다.

6. 속도가 중요한 부분은 C로 작성되었다.

7. MRTG가 생성하는 HTML파일을 상세하게 설정하는 것이 가능하다

8. MRTGGNU PUBLIC LICENSE 로 제공된다.

 

mrtg 설치하기

MRTG 사이트는 아래와 같다.

http://people.ee.ethz.ch/~oetiker/webtools/mrtg/

 

그림 1 MRTG 사이트

 

 

 

http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/에서 MRTG 최신판을 다운받는다.

그래프를 그려주기 위해서는 GD 라이브러리가 필요하며 리눅스의 경우 보통 기본으로 설치가 되어 있지만 없는 경우 http://www.boutell.com/gd/에서 다운받아 설치를 하면 된다. 물론 rpm으로 설치를 하여도 된다. Perl v.5.005 이상이 필요하며 펄도 일반적으로는 리눅스에 설치가 되어 있다.

 

$ tar xvfz mrtg-2.9.17.tar.gz

$ cd mrtg-2.9.17

$ ./configure

$ make

     

일반적인 공개 소프트웨어 설치 방법과 비슷하다. 이제 MRTG 컴파일하여 사용할 준비를 하였다. 이제 MRTG 사용할 있도록 환경파일을 설정하면 된다. 환경파일에 모니터링할 디바이스를 지정한다. 사이트마다 설정이 다르므로 MRTG 패키지 자체에 미리 설정된 파일을 제공하지는 않는다. 그대신 cfgmaker라는 프로그램을 이용하여 기본적인 설정작업을 쉽게 있다. Cfgmaker 네트워크 디바이스에 특정 SNMP 신호를 보내 MRTG 적절한 설정 파일을 만드는 역할을 한다. 사용방법은 다음과 같다.

 

cfgmaker <community>@<router-host-name or IP > mrtg.cfg

 

여기에서 라우터를 모니터링할 경우 라우터에 설정되어 있는 community 지정해야하는데 일반적으로 기본값은 public이므로 정확히 모를 경우에는 public으로 지정하면 된다. Cfgmaker 프로그램은 출력결과를 화면으로 보내기 때문에 파일로 리다이렉션해서 저장한다.

 

아래에서 mrtg 설치는 /usr/local/mrtg , HTML 페이지는 /home/httpd/html/mrtg/pse 디렉토리라고 가정한다.

 

 

# /usr/local/mrtg/bin/cfgmaker --global 'Workdir:/home/httpd/html/mrtg/pse' --global 'language:korean' public@211.11.11.11 > /usr/local/mrtg/pse.cfg

--base: Get Device Info on public@211.11.11.11

--base: Vendor Id:

--base: Populating confcache

--base: Get Interface Info

--base: Walking ifIndex

--base: Walking ifType

--base: Walking ifSpeed

--base: Walking ifAdminStatus

--base: Walking ifOperStatus

 

--global에서 Workdir은 모니터링 결과가 생성될 웹디렉토리를 지정하고 language는 웹에서 출력할 언어를 선택하는 것인데 여기서 웹디렉토리는 /home/httpd/html/mrtg/pse 로 지정하였고 언어는 한국어로 지정하였다. 언어를 korean으로 지정하면 웹에서 모니터링한 결과를 한글로 볼 수 있다.

 

만약 community가 잘못되었다면 아래와 같은 에러가 뜰 것이다.

 

# /usr/local/mrtg/bin/cfgmaker --global 'Workdir:/home/httpd/html/mrtg/pse' --

global 'language:korean' publc@211.11.11.11

--base: Get Device Info on publc@211.11.11.11

SNMP Error:

no response received

SNMPv1_Session (remote host: "211.11.11.11" [211.11.11.11].161

                  community: "publc"

                 request ID: 861935728

                PDU bufsize: 8000 bytes

                    timeout: 2s

                    retries: 5

                    backoff: 1)

SNMPGET Problem for sysDescr sysContact sysName sysLocation sysObjectID on publc

@211.11.11.11

--base: Vendor Id:

--base: Populating confcache

SNMP Error:

no response received

SNMPv1_Session (remote host: "211.11.11.11" [211.11.11.11].161

                  community: "publc"

                 request ID: 861935729

                PDU bufsize: 8000 bytes

                    timeout: 2s

                    retries: 5

                    backoff: 1)

SNMPWALK Problem for 1.3.6.1.2.1.2.2.1.2 on publc@211.11.11.11

SNMP Error:

no response received

 

 

이런 경우 네트워크 관리자에게 community를 확인해보거나 직접 네트워크 관리를 한다면 라우터에서 SNMP 기능이 활성화되어 있는지 확인하고 활성화되어 있다면 community를 적절히 설정해야한다. 일반적으로 기본설정은 public으로 되어있다.

 

 

위에서 설정파일을 에러없이 만드는데 성공했다면 이제 MRTG 프로그램을 실행하여 결과를 확인해본다.

 

# /usr/local/mrtg/bin/mrtg /usr/local/mrtg/pse.cfg

 

여기에서 아무런 메시지가 출력되지 않으면 정상적으로 프로그램이 실행된 것이다. 그런데 제일 처음 실행하는 경우에는 아래와 같은 메시지가 출력된다.

 

 

 

Rateup WARNING: /usr/local/mrtg-2.9.4/bin/rateup could not read the primary log file for 211.11.11.11_1

Rateup WARNING: /usr/local/mrtg-2.9.4/bin/rateup The backup log file for 211.11.11.11_1 was invalid as well

Rateup WARNING: /usr/local/mrtg-2.9.4/bin/rateup Can't remove 211.11.11.11_1.old updating log file

Rateup WARNING: /usr/local/mrtg-2.9.4/bin/rateup Can't rename 211.11.11.11_1.log to 211.11.11.11_1.old updating log file

 

 

이는 MRTG에서 모니터링한 결과를 로그파일에 기록하는데 제일 처음 실행하는 경우에는 아직 로그파일이 생성되어 있지 않기 때문이다. 위와 같은 에러메시지가 없어질 때까지 몇번 실행을 하면 된다. MRTG를 실행하면 설정파일에 있는 각 디바이스로부터 SNMP 데이터를 수집하고 Workdir에 지정한 디렉토리에 웹페이지를 생성한다. 먼저 웹에서 모니터링한 결과가 제대로 생성되었는지 확인을 해보자.

 

그림 2 MRTG 모니터링 출력 페이지

 

 

MRTG는 네트워크 성능과 관련한 정보를 그래프로 보여주고 또한 모니터링하는 인터페이스의 추가정보도 출력을 한다. 그래프는 모두 네개의 페이지로 나누어져 있으며 일별, 주별, 월별, 년별로 평균 전송량을 초당 바이트 단위로 보여준다. 그림에서 보듯이 여기에 해당 디바이스에 대한 정보도 포함하고 있다.

 

출력되는 결과는 SNMP를 통하여 수집된 자료를 보여준다. System은 sysName과 sysLocation 객체를 보여주고 Maintainer는 sysContact 객체에서 값을 가져온다. Description에서는 해당 디바이스가 이더넷이라는 것을 보여준다. Max Speed는 ifSpeed 객체를 8로 나누어 계산을 한다. 해당 인터페이스에서 지원하는 초당 전송량을 바이트로 나타낸다. 그 다음줄에는 모니터링 대상이 되는 디바이스의 ip가 출력이 된다. 그 다음에는 레포트를 생성한 날짜와 시간을 보여주고 디바이스가 재부팅되었거나 디바이스의 네트워크 관리 컴포넌트가 재설정된 이후의 가동시간을 보여준다.

 

일간 그래프를 보면 5분 단위 평균값 기준으로 전송량을 보여주는데 여기에서 평균은 현재와 과거의 값의 차이를 비교하여 시간으로 나눈 값으로 누적된 전체 전송량을 보여주는 것이 아니다. X축은 두시간 간격으로 증가되고 있고 Y축은 0부터 최대 값의 사이에서 바이트 단위로 보여준다. 그래프는 수신과 송신으로 나누어 입력과 출력된 전송량을 다르게 보여주고 있는데 이러한 색깔 등은 나중에 설정파일을 통하여 변경가능하다. 또 그래프 하단에서는 최대, 평균, 현재로 나누어 간단한 요약 정보를 보여주고 있다. MRTG에서 설정을 조정하여 색상과 그래프 출력을 조절할 수 있다. 그래프에서는 최근의 정보를 왼쪽에서 보여주는 것이 기본값이며 오른쪽으로 변경 가능하다.

 

 

Workdir에 설정된 디렉토리를 살펴보면 아래와 같은 파일이 생성되어 있을 것이다.

 

# ls -l /home/httpd/html/mrtg/pse/

합계 308

drwxr-sr-x    2 www      www          4096 Nov  3 14:45 ./

drwxrwsr-x   24 www      www          4096 Nov  3 14:39 ../

-rw-r--r--    1 root     www         10755 Nov  3 14:45 211.11.11.11_1-day.gif

-rw-r--r--    1 root     www          8115 Nov  3 14:45 211.11.11.11_1-month.gif

-rw-r--r--    1 root     www          8579 Nov  3 14:45 211.11.11.11_1-week.gif

-rw-r--r--    1 root     www          9358 Nov  3 14:45 211.11.11.11_1-year.gif

-rw-r--r--    1 root     www          7955 Nov  3 14:45 211.11.11.11_1.html

-rw-r--r--    1 root     www         47349 Nov  3 14:45 211.11.11.11_1.log

-rw-r--r--    1 root     www         47100 Nov  3 14:45 211.11.11.11_1.old

 

 

파일명의 앞에 IP 주소와 인터페이스 번호가 매겨져있다. 앞에서 본 웹페이지가 여기에 나오는 html 파일이며 gif 파일은 일간, 주간, 월간, 년간 그래프를 담은 파일로 레포트를 보여주는 html 파일에서 사용한다. Log와 old 파일에는 SNMP로 요청하여 받은 정보가 담겨있고 그래프를 그릴때 사용한다.

 

로그파일 내용을 살펴보면 다음과 같은 형태로 구성이 되어 있다.

.

1004855100 93604 182541 98175 190298

1004854800 98175 190298 98175 190298

1004854500 108736 231082 111666 242160

1004854200 82967 186263 84180 190673

.

 

형식은 unix_time, current_in, current_out, max_in, max_out으로 되어있다. 로그시간을 보면 5분마다 기록이 되어 있다는 것을 알 수 있다. 로그파일이 작성되는 원리를 이해한다면 펄이나 PHP등 다른 언어로도 가공하여 처리하는 것이 가능하다.

 

이제 주기적으로 모니터링 결과를 보려면 cron으로 설정하면 된다. 레드햇등에서는 /etc/crontab 파일에 등록할수도 있고 crontab e 명령을 이용할 수도 있다. 아래는 매 5분마다 MRTG를 실행한다.

 

0-59/5 * * * * /usr/local/mrtg/bin/mrtg /usr/local/mrtg/pse.cfg

 

 

 

2. 기본설정

 

지금까지는 MRTG 설치부터 사용하는 방법과 출력결과에 대한 설명을 하였다. 이제 자신의 필요에 맞게 세부적으로 MRTG를 설정하는 방법에 대하여 설명하겠다.

 

앞에서 cfgmaker 프로그램으로 생성한 환경파일을 살펴보자.

 

# cat pse.cfg

 

# Created by

# /usr/local/mrtg/bin/cfgmaker --global Workdir:/home/httpd/html/mrtg/pse --global language:korean public@211.11.11.11

 

Workdir:/home/httpd/html/mrtg/pse

language:korean

 

######################################################################

# System: SR2501

# Description: SsangYong Router System Ver. 4.0.45  Compiled at 15-OCT-1999 by S.S.Kang

# Contact: TEL: (02) 262-8312   FAX: (02) 262-8147

# Location: _

######################################################################

 

 

### Interface 1 >> Descr: 'Ethernet Driver' | Name: '' | Ip: '211.11.11.11' | Eth: '' ###

 

Target[211.11.11.11_1]: 1:public@211.11.11.11

SetEnv[211.11.11.11_1]: MRTG_INT_IP="211.11.11.11" MRTG_INT_DESCR="Ethernet Driver"

MaxBytes[211.11.11.11_1]: 1250000

Title[211.11.11.11_1]: Traffic Analysis for 1 -- SR2501

PageTop[211.11.11.11_1]: <H1>Traffic Analysis for 1 -- SR2501</H1>

 <TABLE>

   <TR><TD>System:</TD>     <TD>SR2501 in _</TD></TR>

   <TR><TD>Maintainer:</TD> <TD>TEL: (02) 262-8312   FAX: (02) 262-8147</TD></TR>

   <TR><TD>Description:</TD><TD>Ethernet Driver  </TD></TR>

   <TR><TD>ifType:</TD>     <TD>iso88023Csmacd (7)</TD></TR>

   <TR><TD>ifName:</TD>     <TD></TD></TR>

   <TR><TD>Max Speed:</TD>  <TD>1250.0 kBytes/s</TD></TR>

   <TR><TD>Ip:</TD>         <TD>211.11.11.11 ()</TD></TR>

 </TABLE>

 

 

 

모니터링하려는 장비에 따라 여러 개의 인터페이스가 출력될 수 있다. 예를 들어 전용선을 사용하는 경우 최소한 네트워크 회선을 제공하는 업체와 연결되는 WAN 회선이 있고 내부 네트워크과 연결되는 이더넷 포트가 있을 것이다. 해당 인터페이스마다 타겟을 설정해야한다. cfgmaker를 이용할 경우 각 인터페이스마다 중간에 주석이 생겨서 구별을 쉽게 할 수 있다.

 

MRTG 설정은 크게 두가지로 나누어 전체적으로 적용되는 부분과 모니터링하고자 하는 타겟에 적용되는 부분으로 구분이 된다. 여기에서도 필수적으로 적용되어야 할 부분과 옵션으로 선택할 수 있는 부분으로 세분화가 된다. 먼저 필수적으로 적용되는 것부터 살펴보겠다.

 

위에서는 전체 설정으로 레포트 생성 디렉토리를 /home/httpd/html/mrtg/pse 로 지정하고 언어를 korean 으로 지정했다. 언어는 필수적으로 지정하지 않아도 되는 부분이지만 국내에서 사용할때는 한글이 편리하므로 여기에서 미리 설명을 하는 것이다. # 는 주석으로 cfgmaker로 생성을 하면 환경파일 작성에 참고가 되도록 몇가지 내용이 주석처리되어 나온다. Target, SetEnv, MaxBytes, Title, PageTop이 각 타겟에 적용되는 부분이다.

 

다음의 형태로 설정을 한다.

 

Command [label] args

 

Command 는 다음과 같이 나뉘어진다.

Target

SetEnv

MaxBytes

Title

PageTop

 

각 Command 뒤에 있는 label은 구분자로 사용되며 같은 label을 그룹으로 묶어 하나의 HTML 페이지가 구성이 된다. Label은 IP 주소와 인터페이스 번호를 결합하여 구성이 되어있다. 앞에서 생성하였던 페이지를 보면 label에 지정한 이름으로 파일이 생성되었음을 확인할 수 있다.

 

Target 키워드는 MRTG에서 모니터링할 대상을 가리킨다. 다음의 형태로 구성을 한다.

 

Target[label]: port:community@device

 

Port는 모니터링하는 디바이스의 인터페이스 번호이다. Cfgmaker를 이용하는 경우 자동으로 디바이스에서 모든 인터페이스를 찾는다.

 

SetEnv는 설정파일에서 외부 스크립트를 실행하는 경우 스크립트에 특정할 값을 넘겨줄 수 있다. 다른 프로그램에서 사용할 수 있도록 환경변수를 설정해주는 것이다.

 

MaxBytes 키워드는 모니터링하는 트래픽에 대한 최대 상한선을 지정하고 그래프에서 Y축의 최대값으로 설정이 된다. 일반적으로 초당 바이트로 설정을 하는데 인터페이스의 대역폭을 8로 나누어 계산을 한다. 예를 들어 이더넷의 경우 초당 10Mbits인데 8로 나누면 1250000이다. 이 값을 정확히 세팅하는 것이 중요하다. 그래야 실제 정확한 자료를 볼 수 있기 때문이다.

 

Title 키워드는 모니터링하려는 인터페이스에 대한 정보를 담고 있으며 html 코드의 <title> 태그에 들어간다.

 

마지막으로 PageTop은 레포트의 상단에 인터페이스에 대한 상세한 정보를 출력하기 위한 용도로 사용이 된다.

 

 

3. 부가 옵션 설정

지금까지는 MRTG를 사용하기 위해 필요한 최소한의 설정에 대하여 살펴보았다. 전체적인 설정과 특정한 타겟에 필요한 설정으로 나눈다고 했는데 위에서 설명한 부분은 반드시 필요한 설정이라고 볼 수 있다. Cfgmaker를 이용하여 자동으로 위와 같은 설정파일을 만들 수 있지만 여기에서 출력 결과를 다양하게 조정하려면 부가적인 설정 옵션을 이용하여야 한다.

 

ㅇ 전체 부가 옵션 설정

Refresh

MRTG 레포트를 주기적으로 업데이트할 시간(초단위)

Interval

Mrtg를 호출할 주기

WriteExpires

Yes로 설정하면 MRTG 레포트에 대한 만료기간을 설정하는 메타 파일을 생성

IconDir

Mrtg의 아이콘 파일을  보관할 디렉토리

LoadMIB

지정한 MIB 파일을 가져와서 MIB대신 OID를 사용할 수 있음

Language

출력할 언어 지정

UseRRDTool

Rrdtool 사용

 

 

Refresh 키워드는 브라우저에서 MRTG 레포트를 얼마나 자주 다시 읽어들일 것인지를 지정한다. 기본값은 300초(5분)이다. Mrtg 프로그램을 실행하는 주기에 따라 조정하면 된다. IconDir는 mrtg 의 아이콘 파일을 별도 디렉토리로 분리하는 것이다. LoadMIB는 MIB대신 OID를 이용하는 경우에 사용한다. Language는 한글로 설정할 경우 반드시 옵션을 조정해야 할 부분이다. 프락시나 로컬 캐쉬 때문에 문제가 생기는 경우에는 WriteExpires를 조정해야하지만 일반적으로는 별다른 세팅없이 사용해도 문제가 생길 일은 없다.

 

 

ㅇ 타겟 부가 옵션 설정

AddHead

PageTop 키워드와 유사하나 </TITLE> 과 </HEAD> HTML 태그사이에 들어가서 적용됨.

Absmax

그래프를 그릴 수 있는 최대값을 지정

WithPeak

5분간 최대(peak)값 출력

Suppress

일주월년 그래프중 특정한 그래프 출력 없앰

Directory

해당 label 파일을 특정 디렉토리에 생성

Xsize/Ysize

그래프의 수평, 수직 크기를 조정

Xzoom/Yzoom

그래프의 픽셀수 조정

Xscale/Yscale

그래프의 x, y 스케일 조정

Ytics/YticsFactor

그래프당 Y축 라인수 및 이에 따른 스케일 조정

Options

그래프 출력 조정

Colours

출력 색상 조정

Background

출력 HTML 페이지의 바탕 색상 조정

Ylegend

Y축 라벨

ShortLegend

최대, 평균, 현재에서 사용하는 단위의 명칭(기본값은 b/s)

Legend[1234IO]

색상으로 구분한 범례 명칭 지정(수신, 송신 등 변경)

 

AddHead는 HEAD 태그에 추가 정보를 넣는 경우 사용하며 MRTG 레포트에 추가 정보를 넣는 경우 사용한다. Withpeak는 모니터링하는 디바이스의 인터페이스에 입력, 출력되는 트래픽에 대한 최대 5분간의 전송값을 보여준다. 여기에서 일간 그래프는 이미 5분간의 최대값을 보여주고 있기 때문에 주간, 월간, 년간 그래프에서만 WithPeak 키워드를 사용할 수 있다. Suppress는 일간, 주간, 월간, 년간 그래프중에서 특정한 그래프를 제외할 수 있다. MRTG는 기본적으로 Workdir 키워드에 지정한 디렉토리에 모든 파일을 생성한다. 그렇지만 모니터링하는 디바이스와 인터페이스가 많을 경우 Directory 키워드를 이용하여 특정 label 의 파일을 별도 디렉토리로 바꿀 수가 있다. Ylegend는 Y축 라벨을 변경하며 ShortLegend는 최대, 평균, 현재에서 사용하는 단위를 바꾼다. 프로세스나 세션 수 등을 모니터링할 때 유용하다. Legend는 일간 그래프등에서 출력되는 범례와 WithPeak로 설정을 했을 때 나오는 범례에 대한 명칭을 변경할 수 있다. Xsize, Xzoom, Xscale, Ytics 등은 그래프 출력을 변경할 때 사용한다.

 

Options는 MRTG에서 그래프를 보여주는 방식을 바꿀 수 있는 부분으로 여러가지 세부 설정을 할 수 있다.

 

Growright

오른쪽에서 그래프 그림

Bits

바이트 대신 비트로 변경

Noinfo

Uptime과 디바이스에 대한 정보 출력 제외함

Nopercent

퍼센트(%) 출력을 제외함

Gauge

측정한 값을 절대값으로 받고 증가시키지 않음

 

MRTG는 기본적으로 왼쪽에 신규 자료가 추가되지만 growright 옵션을 이용하여 오른쪽에서 그래프가 그려지도록 바꿀 수 있다. 모니터링된 값은 기본적으로 바이트로 출력이 되지만 bits 옵션을 이용하여 비트로 바끌 수 있다. 이경우 바이트보다 더 상세하게 그래프를 출력할 수 있을 것이다. Noinfo는 최종 갱신일시, 가동시간 등의 정보를 출력에서 제외한다. Nopercent는 각 그래프마다 % 비율로 나오는 정보를 출력에서 제외한다. Gauge는 증분값을 받는 것이 아니라 절대적인 수치로 처리한다. 이것은 디스크 공간, 프로세스 활용율, 세션수 등을 측정하는 경우에 유용하다. 위의 옵션은 여러가지를 같이 사용할 수 있다.

 

ㅇ 특수 타겟 이름

MRTG에서는 몇가지 특수 타겟 이름을 제공하는데 이를 이용하여 MRTG의 설정을 좀더 편리하게 할 수 있다. 여기에는 ^, $, _ 가 있다.

 

^는 모든 타겟의 PageTop 앞에 추가가 된다. 여기에 모든 타겟에서 공통으로 사용할 정보를 추가하면 된다.

 

PageTop[^]: <H1>tunelinux mrtg</H1>

 

$는 반대로 모든 PageTop의 하단에 추가가 된다.

PageTop[$]: 담당자<a href=http://tunelinux.pe.kr>Taejun</a>

 

중간에 다시 이러한 적용을 제외하고자 한다면 빈 값으로 세팅을 하면 된다. 그러면 이후에 나오는 타겟에는 적용이 되지 않는다.

 

PageTop[^]:

PageTop[$]:

 

_ 는 모든 타겟에 적용할 기본값을 설정하는데 사용한다.

 

MaxBytes[_]: 1250000

Title[_]: Tunelinux Monitoring

Options[_]: bits

PageTop[_]: <H1>Traffic check</H1>

 

위의 세가지 옵션을 조정하면 MRTG 세팅이 간단해질 수 있다.

 

4. 인덱스 페이지 만들기

모니터링하는 디바이스의 인터페이스가 여러 개일 경우 개별 HTML 페이지가 생성된다. 개수가 적을 경우에는 상관없지만 관리할 규모가 커진다면 사용하기에 불편하다. 이런 경우 설정파일을 기초로 자동으로 인덱스 페이지를 만들어주는 프로그램이 indexmaker 프로그램이다.

 

$ /usr/local/mrtg/bin/indexmaker /usr/local/mrtg/pse.cfg > /home/httpd/html/mrtg/index.html 

 

 

그림 3 인덱스 페이지

 

 

MRTG를 이용하여 SNMP 객체에 대한 정보뿐만 아니라 다른 정보도 가능하다. OID를 이용할 수도 있으며 외부 프로그램을 실행할 수도 있다. 다음의 예를 보자.

 

Target[taejun.pe.kr.web]: `/usr/local/mrtg/web_count.sh`

WithPeak[taejun.pe.kr.web]: my

MaxBytes[taejun.pe.kr.web]: 100

Title[taejun.pe.kr.web]: tunelinux.pe.kr: httpd daemon & httpd session

Options[taejun.pe.kr.web]: gauge,integer,nopercent

YLegend[taejun.pe.kr.web]: Number

LegendI[taejun.pe.kr.web]: httpd daemon:

LegendO[taejun.pe.kr.web]: httpd session:

Legend1[taejun.pe.kr.web]: Number of httpd

Legend2[taejun.pe.kr.web]: Number of session

Legend3[taejun.pe.kr.web]: 5 Min Max Number of httpd

Legend4[taejun.pe.kr.web]: 5 Min Max Number of httpd session

ShortLegend[taejun.pe.kr.web]: 개

PageTop[taejun.pe.kr.web]: <H1>tunelinux.pe.kr: httpd daemon & session</H1>

 

 

여기에서는 타겟에 스크립트가 들어가있다.

 

# cat /usr/local/mrtg/web_count.sh

 

#!/bin/sh

http_process=`ps auxw | grep http | grep -v grep | wc -l`

http_session=`netstat -an | grep :80 | grep -v "0.0.0.0" | grep ESTABLISHED | wc -l`

 

echo $http_process

echo $http_session

 

이 프로그램을 실행하여 보자.

# /usr/local/mrtg/web_count.sh

21

7

 

스크립트를 실행하면 두가지 값이 출력되고 MRTG에서 이 값을 받아 로그에 기록하여 모니터링한 결과를 웹으로 볼 수가 있는 것이다. 타겟에서 여러 개의 값을 받아서 더하기 등의 수학적인 연산을 할 수도 있다. 그러면 여러가지 나오는 값을 조합하여 자신에게 필요한 통계를 만들어 낼 수 있다. 이를 통해서 생각해보면 MRTG는 SNMP 에이전트에게 원하는 값을 요청하여 받을 수가 있고 SNMP나 스크립트 등을 통하여 받은 값을 주기적으로 계산하여 출력하는 기능을 가지고 있다고 볼 수 있다.

 

그림 4 웹 프로세서 모니터링 예제

 

 

5. 추가 패키지

MRTG 설치 디렉토리의 contrib 디렉토리에는 위에서 말한 cpu부하등의 정보를 모니터링하는 툴과 문서가 있어 참고하기에 좋다. 여기에는 라우터 트래픽 모니터링, CPU 모니터링, 디스크 모니터링, TCP 관련 모니터링 다양한 소스가 들어있다. MRTG 어떻게 응용할 것인지에 대한 좋은 아이디어가 생길 것이다.

 

 

$ ls /usr/local/mrtg/contrib/

00INDEX              cisco_tftp/           ircstats2/             mrtgrq/

14all/               ciscoindex/           jm/                    net-hosts/

GetSNMPLinesUP/      cpuinfo/              linux_stat/            nt-services/

IxDisk/              cpumon/               meminfo/               nt_n_cisco/

NSI/                 diskmon/              monitor/               ovmrtg/

PMLines/             distrib/              mrtg-archiver/         ping-probe/

TCH/                 forecd/               mrtg-archiver-script/  portmasters/

TTrafic/             gentcucci-1.0.0/      mrtg-blast/            procmem/

TotalControlModem/   get-active/           mrtg-dynip/            rdlog2/

accesslistmon/       get-equi/             mrtg-ipacc/            routers/

apc_ups/             get-multiserial/      mrtg-ipget/            rumb-stat/

ascendget/           ipchainacc/           mrtg-mail/             snmpping/

atmmaker/            ipchains/             mrtg.php/              stat/

cfgmaker_ATM/        ipfilter/             mrtg_php_portal/       stfc/

cfgmaker_cisco/      iptables-accounting/  mrtgidx/               switchmaker/

cfgmaker_dlci/       iptables_acc/         mrtgindex.cgi/         whodo/

cisco_BPX_MGX/       iptables_acc_snmp/    mrtglog/               xlsummary/

cisco_ipaccounting/  ircstats/             mrtgmk/

 

 

 

지면상 상세한 예제파일을 싣는 것은 힘들지만 필자의 사이트나 관련 사이트에서 MRTG와 관련된 글을 통해 더 상세한 내용을 알 수 있을 것이다. 설정파일에 대한 예제는 필자의 사이트에서 참고하기 바란다. (http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=72)

 

 

그림 5 NET-SNMP 웹사이트

 

위에서 계속 등장하였던 것이 SNMP이다. SNMP는 네트워크 관리를 위한 프로토콜로 네트워크 관리나 개발을 하고자 한다면 필수적으로 알고 있어야 할 분야이다. MRTG 도 SNMP를 이용하여 값을 가져오는 것이다. 일반적인 네트워크 관리하는 분야뿐만이 아니라 서버를 다량으로 운영하는 경우 개별적인 서버에 대하여 상세한 모니터링은 인력과 시간상 거의 불가능하며 방치하기가 쉽다. 이런 것들을 몇가지 공개적인 프로토콜과 프로그램을 이용하면 자동으로 처리할 수 있기에 매우 편리할 것이다. 주기적으로 모니터링하는 것뿐만이 아니라 SNMP의 트랩 기능을 이용하면 서버에 문제가 발생하였을 경우 문제가 생긴 이후에 급하게 대처하는 것이 아니라 사전에 미리 예측하여 문제를 해결할 수 있는 가능성이 높아진다.

 

 

 

6. 강좌를 마치며

시스템 모니터링을 제대로 하기 위한 방법부터 시작하여, 네트워크 모니터링 프로그램, 운영체제와 커널 차원에서의 튜닝과 보안, 응용프로그램에서의 최적화, 시스템 모니터링 자동화에 대해서 설명을 하였다. 시스템을 운영하고 관리하는 입장에서 항상 시스템의 상태에 대하여 정확하게 분석하고 모니터링하는 것은 가장 중요한 작업중의 하나이다. 또한 다양한 튜닝작업을 통하여 최적의 성능을 내는 것도 중요한 부분중의 하나이다. 그러기 위해서는 운영체제, 네트워크, 보안, 데이터베이스, 프로그래밍 등 다양한 기술을 필요로 한다. 나날이 새로운 기술을 익히는 것도 중요하지만 현재 사용하고 있는 것도 제대로 사용하고 있는지 다시 한번 점검해보고 운영체제와 TCP-IP 등 기본기가 되는 것들에 대해서도 공부를 해야 한다. 튜닝이라는 것이 단지 시스템 설정 몇 개 바꾸어서 되는 것들이 아니라 그만큼 시스템 구성 전반에 대한 이해와 효율적인 설계가 필요한 것이고 그러기 위해서는 운영체제가 작동하는 원리, 네트워크를 통하여 어떻게 자료들이 오고가는지 등 근본적인 원리에 대한 이해가 반드시 필요하다. 그동안의 연재를 통하여 많은 분들에게 도움이 되었으면 좋겠다.

 

 

## 참고자료

1.     http://www.mrtg.org (MRTG 사이트)

2.     Unix Network Management Tools (steve maxwell 저, McGrawHill 출판)

3.     http://tunelinux.pe.kr (MRTG 관련 자료를 찾아보기 바란다)

4.     http://www.mrtg.co.kr (MRTG에 대한 상세한 자료가 많은 국내 사이트)

5.     http://www.netsnmp.org/ (NET-SNMP 사이트)

 

출처 : http://blog.naver.com/corps32/20007447786

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
63 일반형 항온항습기와 일체형 항온항습기 비교 JaeSoo 2013.12.18 2481
62 IP 대역 계산 JaeSoo 2013.11.26 6673
61 회선비, 상면비 JaeSoo 2013.10.24 2747
60 코로케이션(Co-location)이란? JaeSoo 2013.10.24 1927
59 데이터 센터에 대한 일반 상식 JaeSoo 2013.10.24 2231
58 텐센트 10TB 무료 대용량 클라우드 서비스 모바일 APP/PC 클라이언트 한글화 배포(PC버전 추가) JaeSoo 2013.09.28 4653
57 인터넷속도측정 10초면 가능 인터넷속도 체크해보세요 JaeSoo 2013.09.11 5330
56 구글(Google) Play 결제 정보 변경 JaeSoo 2013.09.10 2439
55 SDN,어떻게 접근해야 할 것인가 (SDN의 도입에 따른 이해관계자 분석과 시사점) JAESOO 2013.07.22 4536
» MRTG 이용한 네트워크 모니터링 JaeSoo 2013.04.13 7377
53 MRTG 설치부터 활용 까지 JaeSoo 2013.04.12 3268
52 광탭 (Fiber TAP)의 탭이 무엇인가? JaeSoo 2013.02.20 1594
51 핑(ping) 등 네트워크 지연시간이 길어져서 유,무선인터넷이 끊길때 공유기(iptime 등) 설정방법 JaeSoo 2013.02.12 4355
50 ‘쿨 네티즌’ 양성에 적극 나서라 JaeSoo 2013.02.06 1057
49 Nslookup을 사용하여 MX 레코드 구성 확인 방법 JaeSoo 2013.01.21 1442
48 웹사이트 로딩시간-웹페이지의 모든 개체 로딩시간 테스트 JaeSoo 2012.12.27 1418
47 웹사이트 블로그 로딩속도 테스트를 할수있는 웹서비스 모음 JaeSoo 2012.12.27 1385
46 IEEE 802. Standard (표준) 종류 JaeSoo 2012.03.13 2506
45 802.3, IEEE 802.3 Institute of Electrical and Electronic Engineers 802.3 이더넷 LAN 표준 JaeSoo 2012.03.13 2444
44 전자파 도청 [電磁波盜聽, Transient Electromagnetic Pulse:TEMPEST] JaeSoo 2012.01.25 2944
Board Pagination Prev 1 2 3 4 5 Next
/ 5

PageViews   Today : 0   Yesterday : 1,525   Total : 19,712,068  /  Counter Status   Today : 0   Yesterday : 508   Total : 1,393,942
Site Info   Member : 230  /  Total documents : 1,221   New documents : 0  /  Total comments : 24

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소