MRTG의 설정파일인 mrtg.cfg에 대한 설명과 흔히 사용되는 옵션을 정리했다.
MRTG는 MRTG의 동작을 정의하는 mrtg.cfg 파일에서 설정 정보를 읽어와 동작한다. 오랜 기간 사랑받고 사용되어온 도구답게, 별별 설정이 다 가능하다. 하지만, 그 설정을 다 사용할 필요는 없다. 기본적으로 알고 있어야 하는 설정 항목을 정리해 보고, 실제 서비스 중인 cfg파일과 MRTG그래프가 어떻게 표시되는지 확인해 보겠다.
mrtg.cfg의 개요
mrtg.cfg 기본 규칙
MRTG가 mrtg.cfg를 읽어와 적용할 때는 아래의 3가지 규칙을 따라 읽어오게 된다.
- 빈 줄과 #으로 시작하는 줄은 주석처리 한다.
- 키워드 항목 은 각 줄의 제일 처음에 적는다.
- 키워드로 시작된 줄의 다음줄이 공백일 경우, 윗줄에서 이어지는 것으로 취급한다.
mrtg.cfg의 구성
mrtg.cfg는 크게 세 부분으로 나눌 수 있다. 하나는 MRTG의 전반적인 동작에 대해 설정하는 Global Config Options 파트이며, 나머지 하나는 MRTG가 접근해 데이터를 긁어 올 대상과 방법에 대해 정의하는 Target, 마지막으로 긁어올 데이터로 그래프를 그리는 방법에 대해 정의하는 Per Target파트이다.
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 페이지에서도 변수를 숨긴다.
기타 글로벌 설정들
SNMPv3, IPv6사용, MIB파일에서 OID라벨 읽어오기, 갱신주기, 다국어 설정, 외부 로깅 서버로 데이터 전송, 등의 기능도 설정할 수 있다. 자세한 것은 MRTG 홈페이지를 참고하기 바란다.
Target 설정
mrtg.cfg에서 가장 중요한 부분이 바로 여기다. 데이터를 읽어올 대상과 방법을 지정해 준다. 두 가지를 기억해야 하는데, 첫째로, 하나의 타겟은 무조건 두 개의 변수 값을 읽어 와야 한다. 도대체 왜? 라고 묻는다면, 본 필자도 할 말이 없는게, MRTG의 메뉴얼에 이렇게 사용하고 적혀 있다. 만든 이가 이렇게 만들었다. CPU의 온도 설정을 읽어오고 싶다면, 변수 두개에 CPU 온도 OID를 동일하게 넣어 주어야 한다는 소리다. 둘째로, 입력받는 타겟 변수의 순서는 입력이 첫 번째, 출력이 두 번째이다. 이 두가지를 꼭 기억하고 Target 설정을 건드려야 한다.
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
- 2.2.2.2 : 타겟의 두 번째 변수로 읽어올 OID
- eqblogdemo : 사용할 SNMP 커뮤니티 이름
- 192.168.123.123 : 타겟의 주소
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, BBB, CCC ,DDD는 OID이다.
위의 예는 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 : 각 그래프에 표시할 첫 번째 변수의 라벨 (입력)
- LegendO : 각 그래프에 표시할 두 번째 변수의 라벨 (출력)
- Legend1 : 그래프페이지 아래에 표시할 첫 번째 변수의 라벨
- Legend2 : 그래프페이지 아래에 표시할 첫 번째 변수의 라벨
- PageTop : 상세 페이지의 그래프 위쪽 영역에 삽입할 제목 (문자열로, 보통 HTML 태그를 포함시킨다.)
mrtg.cfg 의 예시
마지막으로, 본 필자가 구축해 사용중인 MRTG 모니터의 설정 파일과 생성된 페이지의 모습을 공개한다. Windows PC의 가상메모리 크기와 가상메모리 사용량, 물리메모리 크기와 물리메모리 사용량을 가져온 후, 가상메모리 사용률과 물리메모리 사용률을 계산해 표출하고 있다. (IP와 커뮤니티 명은 변경 했다.) MRTG와 mrtg.cfg의 동작을 이해하는데 조금이나마 도움이 되길 바란다.