데비안 리눅스에서 MRTG 설치하기: 단계별 가이드

기본적인 네트워크 관리 도구인 MRTG에 대한 간단한 소개와, 데비안 리눅스 시스템에 MRTG를 설치하는 방법을 소개한다.

MRTG LOGO

MRTG란?

MRTG(Multi Router Traffic Graph) 는 본래, 네트워크 라우터의 트래픽을 그래프 형태로 표현해 주기위해 만들어진 도구이다.

MRTG 그래프의 예
MRTG 그래프 - https://oss.oetiker.ch/mrtg/

하지만, 숫자로 이루어진 데이터를 시각화 한다는 특징으로 인해 그 사용 방법이 무궁무진하게 확장되었는데, 표현할 수 있는 것들의 예를 들어 보자면,

  • 네트워크 스위치 포트의 비트레이트 그래프
  • PC 스토리지 여유공간 그래프
  • 방 안의 온도-습도와 서버들의 평균 CPU 온도 그래프
  • 시간대별 변기 사용후, 변기의 물통이 다시 채워지는데 걸리는 시간(... 응? ...)
등, 그래프로 표현할 수 있는 모든 것을 MRTG를 통해 구현 할 수 있다. 물론, 같은 용도로 발매되는 상용 도구들도 많이 있다. 그것도 아주 많이 있다. 요즘에는 MRTG쓴다고 하면, 이런 얘기도 듣는다.

PRTG 말씀하시는 거죠? / 아직도 그걸 쓰세요?

하지만 MRTG만큼 가볍고, 설정이 쉬우며, 무엇보다 무료인 도구는 없는듯 하다. 아직도 MRTG가 현역으로 당당히 돌아가는 이유라 생각된다. 또한, 폭 넓은 OS들을 지원한다. 윈도우, 리눅스, 유닉스, 네트웨어등등, 듣도보도 못한 OS들에도 이식 되어 있고, 오랜 기간 사용 되면서 쌓인 수많은 문서들과 자료들이 도처에 널려 있어, 문제가 발생 하면 원인을 찾아 헤메는게 좀 더 수월하다. (찾아 헤메지 않는다고는 말 안했다..)

데비안 리눅스 서버에 MRTG 설치하기

웹 서버와 SNMP 데몬 설치

MRTG는 SNMP를 이용해 수집한 데이터로 그래프를 그리고, 그래프를 그림파일 형태로 만들어 준 다음, 그림파일을 볼 수 있는 웹페이지를 생성해 주는 도구이다. 그런고로 MRTG를 설치하기 전에 SNMP 데몬과 웹서버가 먼저 설치되어 있어야 한다. 아파치 웹서버와 SNMP데몬을 설치하기 위해, 아래의 명령어를 입력해 주자. 이미 웹서버가 설치된 상황 이라면, 이 단계는 넘어가도 된다. (이 경우에는, 설치를 완료한 후 mrtg.cfg파일을 수정해 주어야 한다.)

sudo apt-get install apache2 snmp snmpd -y

뭔가가 좌라라락 올라가며, 설치가 진행 된다. 설치가 완료된 후, 서비스 활성화를 위해, 아래의 명령을 입력해 주면 서비스가 돌기 시작한다.

sudo systemctl start apache2 sudo systemctl enable apache2 sudo systemctl start snmpd sudo systemctl enable snmpd

제대로 활성화가 되었는지, 웹 브라우저를 열어 데비안 리눅스 시스템의 IP를 입력해 보자. 아파치 웹 서버가 정상적으로 동작하고 있고 방화벽 설정에 문제가 없다면, 이런 기본 화면이 나타날 것이다.

아파치 웹 서버의 기본 웹 페이지 화면, 기본 설정 정보들이 표시되고 있다.
아파치 웹 서버의 기본 페이지

MRTG 데몬 설치

기본 준비가 끝났다. 이제 MRTG 설치를 진행해 보자.

sudo apt-get install mrtg -y

여느 APT 패키지와 마찬가지로 설치가 진행되다가, 뭔가를 물어보는 창이 나타난다. MRTG가 사용할 웹서버 경로가 존재하지 않으니 새로 만들겠는가 물어보는 창이다. 그냥 YES를 선택해 주면 되겠다.

MRTG 설치 중, /var/www/html/mrtg 경로를 생성하겠는가 묻고 있다

창에서 빠져 나와 남은 패키지들을 다운로드 받고 설치를 계속 하게 된다.

SNMP 데몬 설정

SNMP 데몬의 설정을 진행해 줄 차례이다. SNMP 데몬의 설정 파일은 /etc/snmp/snmpd.conf 이며, 수정을 위해

sudo nano /etc/snmp/snmpd.conf

를 입력하고 엔터를 쳐 준다. SNMP 데몬에 대한 여러가지 설정 항목들이 있는데, 내용은 윈도우의 SNMP 서비스 설정하기와 man페이지를 참고 하고, 일단 다음과 같이 수정해 준다

...(생략)... # Read-only access to everyone to the systemonly view #rocommunity public default -V systemonly // #을 붙여 public 커뮤니티를 사용할 수 없게 한다. #rocommunity6 public default -V systemonly // #을 붙여 public 커뮤니티를 사용할 수 없게 한다. ...(생략)... # rouser: a SNMPv3 read-only access username # arguments: username [noauth|auth|priv [OID | -V VIEW [CONTEXT]]] #rouser authPrivUser authpriv -V systemonly // #을 붙여 사용할 수 없게 한다.

데비안 리눅스 서버에 대한 접근권한을 가진 커뮤니티(V1/ V2)와 계정(V3)을 없에버려, 혹시 모를 보안 위협에 대비하기 위한 설정이다.

SNMP 에이전트 통신 확인

SNMP에서는, 데이터를 제공하는 (즉, 모니터의 대상이 되는)놈을 Agent라고 부른다. 반대로 데이터를 수집하는 (즉, 모니터 시스템)놈은 메니저(Manager)라고 부른다. 지금 우리가 MRTG를 설치하고 있는 데비안 리눅스 시스템은 메니저이고, 우리가 값을 가지고 올 타겟 시스템은 에이전트이다.

SNMP에 대한 설정이 끝났으니, 에이전트와의 통신을 확인해 볼 차례이다. SNMP OID 목록을 가지고 올 수 있는 snmpwalk 명령을 이용해 타겟이 되는 에이전트에 접근을 해 보자.

snmpwalk -v 1 -c eqmakerblogdemo 192.168.xxx.yyy

  • snmpwalk : SNMP를 이용해 가지고올 수 있는 OID가 뭐뭐 있는지 한번 뒤져보렴
  • -v 1 : SNMP 버전 v1 을 사용할 거고,
  • -c eqmakerblogdemo : 커뮤니티 이름은 eqmakerblogdemo 를 사용하면 되.
  • 192.168.xxx.yyy : 타겟 에이전트는 IP 192.168.xxx.yyy 서버에 있다.

에이전트 시스템의 설정이 정상으로 이루어 졌고 방화벽등의 통신에 문제가 없다면, 타겟 에이전트에서 제공 가능한 OID 목록과 데이터들이 표시 될 것이다.

mrtg.cfg 생성

mrtg.cfg 파일은 MRTG의 설정 파일이다. 문제는, 처음 mrtg를 설치하고 나면 설정파일이 별도로 생성되는게 없다는 것이다. 처음부터 한줄 한줄 작성해 주어야 하는데, 그 작업을 대신 해 주는 프로그램이 있다. MRTG 패키지를 설치할때 함께 딸려오는 cfgmaker라는 프로그램으로, 우리는 이 프로그램이 생성한 mrtg.cfg를 적당히 수정해 사용하면 된다.

cfgmaker eqmakerblogdemo@192.168.xxx.yyy > /etc/mrtg.cfg // 루트 계정일 경우 sudo bash -c "cfgmaker eqmakerblogdemo@192.168.xxx.yyy > /etc/mrtg.cfg" // 일반 사용자 계정일 경우

  • cfgmaker : MRTG config 를 만들건데,
  • eqmakerblogdemo@192.168.xxx.yyy : 타겟 IP는 192.168.xxx.yyy이고, 사용할 커뮤니티는 eqmakerblogdemo이다.
  • > /etc/mrtg.cfg : 만든 파일을 /etc/mrtg.cfg 로 저장해라

mrtg.cfg 편집

cfgmaker을 이용해 작성된 mrtg.cfg는, 타겟 에이전트에서 '사용 할 만한 것들'을 전부 가져다가 때려 박아 둔다. 필요한 것만 골라서 수정을 해 줘야 하는데, mrtg.cfg 파일의 구조타겟 장비의 OID를 알고 있어야 한다. 이 부분은 나중에 확인해 보도록 하고, 지금은 '설치'해 보는게 목적인 만큼, 생성된 파일을 그대로 사용하기로 한다.

웹 페이지 생성

MRTG는 그래프를 그려 웹서버를 통해 볼 수 있도록 해 준다고 했다. 웹 페이지 역시 처음에는 생성이 되어 있지 않다. cfgmaker를 통해 작성된 mrtg.cfg를 가지고 웹 페이지를 준비해 줘야 하는데, 이때 사용되는 프로그램이 indexmaker라는 놈이다. 그 전에 일단, 사용할 웹 페이지의 경로를 만들어 주자.

sudo mkdir /var/www/html/mrtg // MRTG 웹 페이지의 루트 생성 indexmaker /etc/mrtg.cfg > /var/www/html/mrtg/index.html // 루트 계정일 경우 sudo bash -c "indexmaker /etc/mrtg.cfg > /var/www/html/mrtg/index.html" // 일반 사용자 계정일 경우

  • indexmaker : MRTG 인덱스 페이지를 만들건데,
  • /etc/mrtg.cfg : /etc/mrtg.cfg 파일을 참고해서 만들어서
  • > /var/www/html/index.html : /var/www/html/index.html 파일로 저장해라.

별 다른 에러메시지가 나타나지 않고 프롬프트가 떨어지면, 인덱스메이커가 정상적으로 작동했다는 뜻이다. 웹 브라우저로 MRTG 루트를 열어보면 생성된 인덱스 페이지가 보일 것이다.

MRTG INDEX PAGE 데이터를 수집하지 않아 그래프가 표시되지 않고 있다.

아직은 아무런 데이터도 수집하지 않았고, 그래프도 그려둔 것이 없다. 아무 그림이 표시되지 않는 것이 정상이다. 만약, 읽을 수 없다면, 인덱스메이커의 출력 경로가 잘못된 것이다.

MRTG 실행

이제, 준비가 다 완료되었다. MRTG를 실행하기 위해 sudo env LANG=c /usr/bin/mrtg /etc/mrtg.cfg를 입력해 보자.

newuser@debian:~$ sudo env LANG=c /usr/bin/mrtg /etc/mrtg.cfg perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "c" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.xxx.yyy_ethernet_32772 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.xxx.yyy_ethernet_32772 was invalid as well 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.xxx.yyy_ethernet_32772.log to 192.168.xxx.yyy_ethernet_32772.old updating log file 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.xxx.yyy_ethernet_2 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.xxx.yyy_ethernet_2 was invalid as well 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.xxx.yyy_ethernet_2.log to 192.168.xxx.yyy_ethernet_2.old updating log file 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.xxx.yyy_ethernet_3 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.xxx.yyy_ethernet_3 was invalid as well 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.xxx.yyy_ethernet_3.log to 192.168.xxx.yyy_ethernet_3.old updating log file 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.xxx.yyy_ethernet_4 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.xxx.yyy_ethernet_4 was invalid as well 2024-11-21 13:19:26, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.xxx.yyy_ethernet_4.log to 192.168.xxx.yyy_ethernet_4.old updating log file newuser@debian:~$

기대를 가지고 엔터를 쳤지만 뭔가 경고가 잔뜩 올라온다. 하지만 쫄 것 없다. 다시 한 번 같은 명령을 실행 해 보면, 그 많았던 경고가 사라진 것을 볼 수 있다.

newuser@debian:~$ sudo env LANG=c /usr/bin/mrtg /etc/mrtg.cfg perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "c" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). newuser@debian:~$

참고로, 끝까지 살아남아 있는 저 경고 메시지들은 다국어 설정과 관련된 경고이다. 한글을 사용하지 않는다면 문제 될 일은 없으니 무시해도 상관 없다. 그리고 다시 웹 브라우저를 통해 접근해 보면

MRTG INDEX PAGE 그래프만 표시되고 데이터는 존재하지 않는다.

드디어 뭔가 그럴듯 해 보이는 창이 나타났다! 예제의 그림에서는 필자가 시험용으로 사용하고 있는 WINDOWS PC의 랜카드들이 보이고 있다. (실제로는 cfgmaker가 에이전트의 OID를 제대로 구분하지 못한 관계로 4개 모두 같은 그래프이다. )

Corn 등록

MRTG는 약 5분에 한번씩 에이전트의 데이터들을 수집해 그래프를 그린다. 이를 위해 Corn에 MRTG가 동작하도록 등록해 주어야 한다. sudo nano /etc/cron.d/mrtg명령을 이용해 편집기를 열어, 다음의 내용을 복사해 넣어준 뒤 저장해 준다.

*/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ] && [ -d "$(grep '^[[:space:]]*[^#]*[[:space:]]*WorkDir' /etc/mrtg.cfg | awk '{ print $NF }')" ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi

확인

약 10분정도 시간이 흐른 뒤, 웹 페이지를 다시 한번 갱신해 본다. 그래프에 변화가 생겼을 것이다.

MRTG INDEX PAGE 데이터를 수집하여 그래프가 그려진 모습
그래프의 구석에 조그마한 색깔이 보인다. 축하한다! 데비안 리눅스에 MRTG를 성공적으로 설치 했다!

이어서..

이 글은 데비안 리눅스 시스템에 MRTG를 설치하는 방법에 대해서만 설명 하고 있다. MRTG를 제대로 사용하기 위해서는 좀 더 여러가지 사항들을 알고 있어야 하는데,

  1. mrtg.cfg :MRTG의 가장 핵심적인 파일이다. 이 파일을 가지고 MRTG를 마음대로 주무를 수 있게 된다.
  2. OID : SNMP를 통해 가지고 올 값들의 ID로, MRTG에 띄울 값을 찾는 방법을 알아야 한다.
  3. index.html : 인덱스메이커를 통해 생성된 인덱스 페이지로, 예쁜(?) MRTG페이지를 만드려면 이걸 건드려야 한다.
에 대한 추가적인 공부가 필요하다. 하지만 뭐 어떻겠는가? 일단 우리는 MRTG를 돌리는데 성공했다. 그럼 된거다. 나머지 것들은 필요할 때 마다 조금씩 알아가면 되는 거다!

반응형