MRTG 설정 파일 가이드: mrtg.cfg의 구성과 키워드 이해하기

MRTG의 핵심 설정 파일인 mrtg.cfg를 이해하기 위한 완전 가이드. Global Config Options, SNMP Target 설정, OID 연산, Per Target 옵션 등 반드시 알아야 할 설정 항목들을 실제 서비스 예시와 함께 자세히 설명합니다.

MRTG는 MRTG의 동작을 정의하는 mrtg.cfg 파일에서 설정 정보를 읽어와 동작한다. 기본적으로 알고 있어야 하는 설정 항목을 정리해 보고, 실제 서비스 중인 cfg파일과 MRTG그래프가 어떻게 표시되는지 확인해 보겠다.

mrtg.cfg의 개요

mrtg.cfg 기본 규칙

MRTG가 mrtg.cfg를 읽어와 적용할 때는 아래의 3가지 규칙을 따라 읽어오게 된다.

  • 빈 줄과 #으로 시작하는 줄은 주석 처리한다..
  • 모든 키워드는 줄 맨 앞에서 시작해야 한다.
  • 키워드로 시작된 줄의 다음줄이 공백일 경우, 윗줄에서 이어지는 것으로 취급한다.

mrtg.cfg의 구성

mrtg.cfg는 크게 세 부분으로 나눌 수 있다.

  • Global Config Options : MRTG 전체의 동작 방식을 설정한다.
  • Target : 어떤 장비에서 어떤 값을 읽어올지 정의하는, mrtg.cfg에서 가장 중요한 영역이다.
  • Per Target Options : 읽어온 값을 어떻게 해석하고 어떤 모양의 그래프로 만들지 정한다.

mrtg.cfg의 구조

cfgmaker를 통해 생성된 mrtg.cfg파일을 열어보면 많은 설정 항목들이 존재 한다. 각각 어떤 의미를 가지며 어느 용도인지 정리해 본다.

Global Config Options

WorkDir

mrtg.cfg 파일에서 제일 처음 등장하는 것은 WorkDir 항목이다. MRTG가 HTML파일을 작성하고, 그래프를 그리고, 데이터를 쌓아놓는 경로를 지정해 준다. 각 OS별로 설정 예시가 나와 있으며 #으로 주석 처리 되어 있다. 웹 서버를 통해 접근할 수 있는 경로를 지정해 주면 된다. 만약, 각각의 파일을 별도의 공간에 저장하고 싶다면,

# WorkDir: /var/www/html/mrtg
Htmldir: /www/mrtg/			//	HTML이 저장될 경로
Imagedir: /www/mrtg/images	//	그래프가 저장될 경로
Logdir: /www/mrtg/logs		//	로그 데이터가 저장될 경로

와 같이 Htmldir, Imagesdir, Logdir 키워드를 통해 직접 설정해 줄 수 있다.

Options[_]

MRTG의 동작 옵션들을 설정한다. 별도의 옵션을 사용하고자 할 경우, #을 지워 해당 줄을 활성화 해 주고 원하는 옵션을 ,로 구분하여 적어주면 된다. 예를 들어,

Options[_]: growright, bits

이 경우, growright 옵션과 bits 옵션을 사용하겠다는 의미이다. 사용할 수 있는 옵션의 갯수는 총 26개 이며, 그 중 자주 사용되는 유용한 옵션들에는 아래와 같은 것들이 있다.

growright
그래프의 시간이 오른쪽에서 시작되어 왼쪽으로 흘러가게 한다. (왼쪽은 과거, 오른쪽은 현재)
bits
모니터링 타겟 변수를 바이트 단위 대신 비트 단위로 표시한다. (X8)
noinfo
웹페이지에 타겟 장비의 가동 시간과 장비 이름을 표시하지 않는다.
nopercent
허용 최대값 대비 현재 값(사용율)의 비율을 표시하지 않는다.
transparent
그래프의 배경을 투명하게 만든다.
integer
수치를 소수점과 쉼표 없는 정수로 표시한다.
dorelpercent
첫 번째 타겟 변수와 두 번째 타겟 변수의 비율을 계산해 그래프에 추가한다.
gauge
수치를 ‘현재 상태 관찰 값’으로 취급하여 그래프에 표시한다. (카운터 방식이 아닌 절대값을 그대로 사용)
absolute
카운터 유형의 데이터 소스로 취급해 마지막 읽은 값과 현재 값의 차이를 계산하지 않는다.
unknaszero
알 수 없는 데이터를 0으로 기록한다.
withzeroes
평균 전송 속도를 계산할 때 0 값도 포함한다.
noi
첫 번째 변수(보통 입력)의 그래프를 그리지 않고 HTML 페이지에서도 해당 변수를 숨긴다.
noo
두 번째 변수(보통 출력)의 그래프를 그리지 않고 HTML 페이지에서도 해당 변수를 숨긴다.

대부분의 활용 환경에서는 growrightgauge 조합이 매우 자주 쓰인다. 여기에 추가해 SNMPv3, IPv6사용, MIB파일에서 OID라벨 읽어오기, 갱신주기, 다국어 설정, 외부 로깅 서버로 데이터 전송, 등의 기능도 설정할 수 있다. 자세한 것은 MRTG 홈페이지를 참고하기 바란다.

SNMP Target 설정

mrtg.cfg에서 가장 중요한 부분이 바로 여기다. 데이터를 읽어올 대상과 방법을 지정해 준다. 아래의 두 가지를 반드시 기억하고 Target 설정을 건드려야 한다.

  • 하나의 타겟은 무조건 두 개의 변수 값을 읽어 와야 한다.

    도대체 왜? 라고 묻는다면, 본 필자도 할 말이 없는게, MRTG의 메뉴얼에 이렇게 사용하고 적혀 있다. 만든 이가 이렇게 만들었다. 만약 CPU의 온도 설정을 읽어오고 싶다면, 변수 두개에 CPU 온도 OID를 동일하게 넣어 주어야 한다는 소리다.

  • 타겟 변수의 순서는 첫 번째 변수가 입력, 두 번째 변수가 출력이 된다.

SNMPv1

가장 기본적인 Target은 이런식으로 표현할 수 있다. SNMPv1 을 이용해 192.168.123.123장비에서 두 개의 OID를 읽어오도록 지정한 예이다.

Target[SERVER1_MEM]: 1.1.1.1&2.2.2.2:eqblogdemo@192.168.123.123
>Target[]
타겟을 선언하는 키워드
SERVER1_MEM
타겟의 이름(사용자가 임의로 붙일 수 있다.)
1.1.1.1
타겟의 첫 번째 변수로 읽어올 OID (IN)
2.2.2.2
타겟의 두 번째 변수로 읽어올 OID (OUT)
eqblogdemo
SNMP community 문자열
192.168.123.123
타겟 장비의 IP 주소

SNMPv2

SNMPv1은 32bit 정수 데이터를 사용한다. 기가비트급 네트워크 포트 트래픽과 같이, 32bit를 사용하면 overflow가 되는 큰 숫자를 처리해야 할 경우에는 64bit 정수 데이터를 사용할 수 있는 SNMPv2를 이용해 주어야 한다. SNMPv2를 사용해야 한다면 아래와 같이 타겟의 주소 뒤에 :::::2을 추가해 준다.

Target[SERVER1_MEM]: 1.1.1.1&2.2.2.2:eqblogdemo@192.168.123.123:::::2

OID의 사칙연산

MRTG는 받아온 데이터들에 대한 사칙연산을 지원한다.

AAA&BBB:eqblogdemo@192.168.123.123:::::2 / CCC&1DDD:eqblogdemo@192.168.123.123:::::2 * 100

라고 설정할 경우, AAA÷CCC×100 그래프와 BBB÷DDD×100 그래프, 즉 백분률 그래프를 그려준다. 사용률(%)을 표시하기 위해 자주 활성되는 방식이다. 이처럼 상수를 더하거나, 각 OID의 수치들 간의 사칙연산이 가능한다.

Per Target 설정들

Target에서 받아온 수치들 어떻게 해석하고, 수치들로 어떤 모양의 그래프를 그릴지 설정해 준다. 기본 형식은 아래의 예와 같다. 아래는, [SERVER1_MEM]타겟 그래프에 표시해 줄 이름을 설정하는 예이다.

Title[SERVER1_MEM]: Memory Usage - Server 1
Title
키워드
SERVER1_MEM
타겟 설정에서 선언한 타겟의 이름
Memory Usage - Server 1
해당 키워드에 할당할 속성값

상당히 많은 키워드들이 존재한다. 그 중에서 자주 사용되는 (라고 쓰고, 본 필자가 사용해 본 이라고 읽는다.) 키워드들은 아래와 같은 것 들이 있다.

MaxBytes
타겟 변수의 최대값(그래프 Y축의 최대값)을 설정한다. 이 값을 넘어가면 무시된다.
두 변수의 최대값이 다를 경우 MaxBytes1, MaxBytes2를 사용한다.
Title
생성될 그래프에 표시할 그래프 이름
Unscaled
그래프 자동 축적을 사용하지 않는다. d(ay), w(eek), m(onth), y(ear)의 인자를 사용하며 yd yw ym yy와 같이 그래프와 기간을 지정한다.
XSize
그래프의 가로 픽셀 크기
YSize
그래프의 세로 픽셀 크기
YLegend
그래프 Y축에 표시할 라벨
LegendI
그래프에 표시할 첫 번째 변수(IN)의 라벨.
LegendO
그래프에 표시할 두 번째 변수(OUT)의 라벨.
Legend1
그래프 페이지 아래쪽에 표시할 첫 번째 변수의 라벨.
Legend2
그래프 페이지 아래쪽에 표시할 두 번째 변수의 라벨.
PageTop
상세 페이지의 그래프 위쪽 영역에 삽입할 제목. 보통 문자열 또는 HTML 태그를 포함한다.

mrtg.cfg 의 예시

마지막으로, 본 필자가 구축해 사용중인 MRTG 모니터의 설정 파일과 생성된 페이지의 모습을 공개한다.

Windows PC의 가상메모리 크기와 가상메모리 사용량, 물리메모리 크기와 물리메모리 사용량을 가져온 후, 가상메모리 사용률과 물리메모리 사용률을 계산해 표출하고 있다. MRTG와 mrtg.cfg의 동작을 이해하는데 조금이나마 도움이 되길 바란다.

mrtg.cfg

MRTG 설정 파일 mrtg.cfg에서 WorkDir, Options, Target, MaxBytes 등이 작성된 설정 예시 화면
윈도우 시스템의 가상메모리와 물리메모리 사용률 그래프를 표시하는 mrtg.cfg의 예

MRTG 그래프의 예

MRTG로 생성된 서버 메모리 사용량 그래프 화면으로 Daily, Weekly, Monthly, Yearly 사용률이 표시된 예시

🔄 갱신 내역

  • 최초 게시
  • 블로그 이전 및 수정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다