Ubuntu Linux 에서 MRTG 설치 구성하기

HYEONG HWAN, MUN/ 5월 24, 2018/ 미분류/ 7 comments

https://blog.lael.be/post/6983

Ubuntu Linux 16.04Ubuntu Linux 18.04 에서 테스트 되었습니다.

물리 서버, 가상 서버, 클라우드 서버 모두 설치 이용 가능합니다.

 

MRTG전세계에서 가장 널리 사용되는 트래픽 그래프 프로그램입니다.

Multi Router Traffic Grapher 의 약자입니다. PC(서버)에 장착된 랜카드 단위로 트래픽 그래프를 표시해 줍니다.
MRTG 공식 사이트https://oss.oetiker.ch/mrtg/
프로그램 라이센스 : GPL (공개/무료)

 

트래픽 그래프를 봐야하는 이유

- 내 서버의 트래픽 패턴 및 트래픽 사용량을 확인할 수 있다.
- 서버의 장애 유무를 알 수 있다.
- 서버의 이상을 파악할 수 있다. 작은 디도스나 기타 악성 트래픽 확인.

요약하자면 “지금 내 서버가 멀쩡한 상태이군” 을 판단하는데 도움이 되기 때문에 MRTG 를 이용해야 합니다.

서버호스팅 업체에서 별도로 MRTG 를 제공해 준다면 굳이 이것을 설치할 필요는 없습니다.

 


MRTG 동작의 원리

서버에 root 계정으로 접속 후, 랜카드 네트워크 상태를 보는 명령어인 ifconfig 를 실행해보자.

# ifconfig

별도의 설정을 하지 않아도, 각 랜카드는 보내고(TX) 받은(RX) 데이터양을 자동으로 기록합니다. (재부팅 또는 일정한 조건이 되면 초기화됨)

이 기록을 주기적으로 확인하고 변화량 을 측정하면 속도가 계산된다.

이 속도 값을 그래프로 표시한 것이 MRTG 이다.

예시의 위 그래프의 서비스는 서비스의 주요 사용시간10시 ~  새벽 2시 라는 것을 알 수 있다.

주간이나, 월간, 연간 그래프를 보고 “내 서비스의 이용자 수 변화“도 시각적으로 볼 수 있다.

 


MRTG 설치 및 세팅

MRTG 는 주기적으로 측정 프로그램을 실행하고, 측정 결과를 계산해서 그래프를 그려주는 프로그램이다.
SNMP 는 네트워크 장치 및 관련 정보를 읽어와 표시하는 프로그램입니다.

SNMP 를 설치하지 않으면  MRTG 가 데이터를 읽어올 수 없어서 그래프가 그려지지 않습니다.
SNMPSimple Network Management Protocol 의 약자입니다.

 

SNMP 설치
# apt-get install snmp snmpd
MRTG 설치
# apt-get install mrtg

/etc/mrtg.cfg 파일의 권한을 root:root 의 640 퍼미션으로 설정하라는 경고메세지가 나온다. 엔터 입력하면 자동 설정됨. 혹시나 실수로 파일 권한을 바꾸지 말라는 메세지가 출력된다.
SNMP 명령어가 노출되기 때문에 보안문제가 발생할 수 있다는 것이다. 이상한 것을 하지 않는 이상 문제가 발생하지 않는다.

 

 

SNMP 의 로컬 권한 허용 설정
# vi /etc/snmp/snmpd.conf

다 쓰여있고, 주석(#)만 풀어주면 된다. 수정 후 저장.

public@localhost 에게 네트워크 정보를 확인할 권한이 부여된다.
이 부분을 잘 설정하면 다른 서버에서 이 서버의 SNMP 정보를 읽어올 수 있게 수정할 수 있다.

적용을 위해 SNMP 서비스 재시작
# service snmpd restart

 

cfgmakerindexmakermrtg 패키지에 포함된 명령어 이다.

 

SNMP 를 이용해서 mrtg 환경설정 생성
# cfgmaker public@localhost > /etc/mrtg.cfg

 

페이지를 볼 도메인, 사이트 준비하기.

웹사이트를 세팅할 줄 안다고 가정하겠다.
로컬 디렉토리는 /home/myuser1/www/mymrtg
도메인 주소는 mrtg-example.lael.be 로 정했다.

여러분의 상황에 맞게 경로, 도메인을 입력하세요. (적당히 잘 설정해주세요)
제 예제는 아무튼 이렇습니다.

 

MRTG 출력 경로 설정
# vi /etc/mrtg.cfg

 

MRTG 인덱스 페이지 만들기
# indexmaker /etc/mrtg.cfg > /home/myuser1/www/mymrtg/index.html

랜카드 목록 페이지를 생성합니다. index.html 페이지 하나가 생성됩니다.
페이지를 꾸미고 싶으면 열어서 수정하시면 됩니다.

 

MRTG 한번 실행 (테스트)
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

초기 1회 실행시 경고메세지가 표시될 수도 있다. 그래프 파일이 생성된 것을 확인 할 수 있다.

 

그래프 확인

http://mrtg-example.lael.be/mymrtg/ (데모링크 종료)

일반 웹 사이트 확인하듯이 열어보면 된다.

 

자동 생성 페이지의 템플릿을 바꾸려면 /etc/mrtg.cfg 파일을 열어서 수정한다.
각종 설정 구문 설명은 https://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html 에서 볼 수 있다.

mrtg 프로그램/etc/mrtg.cfg 파일을 기준으로 자동으로 5분마다 실행된다.

자동 실행 명령어의 위치는 /etc/cron.d/mrtg 이다.  (파일을 삭제하면 자동실행이 안된다. 자동 실행 시간 주기나 명령어를 바꾸고 싶으면 수정하면 된다.)

 

자동실행 정보 확인
# cat /etc/cron.d/mrtg

 

취향에 따라서 확인 HTML 페이지에 IP 제한을 걸거나, 암호 제한을 설정해도 좋다.

 

트래픽 모니터링 페이지 완성!

7 Comments

  1. 안녕하세요~
    좋은 강의 감사드립니다.
    에러가 나는데 이거 정상인가요?

    # cfgmaker public@localhost > /etc/mrtg.cfg
    –base: Get Device Info on public@localhost:
    –base: Vendor Id: Unknown Vendor – 1.3.6.1.4.1.8072.3.2.10
    –base: Populating confcache
    –base: Get Interface Info
    –base: Walking ifIndex
    –snpd: public@localhost: -> 1 -> ifIndex = 1
    –snpd: public@localhost: -> 2 -> ifIndex = 2
    –base: Walking ifType
    –snpd: public@localhost: -> 1 -> ifType = 24
    –snpd: public@localhost: -> 2 -> ifType = 6
    –base: Walking ifAdminStatus
    –snpd: public@localhost: -> 1 -> ifAdminStatus = 1
    –snpd: public@localhost: -> 2 -> ifAdminStatus = 1
    –base: Walking ifOperStatus
    –snpd: public@localhost: -> 1 -> ifOperStatus = 1
    –snpd: public@localhost: -> 2 -> ifOperStatus = 1
    –base: Walking ifMtu
    –snpd: public@localhost: -> 1 -> ifMtu = 65536
    –snpd: public@localhost: -> 2 -> ifMtu = 1500
    –base: Walking ifSpeed
    –snpd: public@localhost: -> 1 -> ifSpeed = 10000000
    –snpd: public@localhost: -> 2 -> ifSpeed = 4294967295
    You have new mail in /var/mail/root

    # indexmaker /etc/mrtg.cfg > /var/www/html/mrtg/index.html
    bash: /var/www/html/mrtg/index.html: No such file or directory

    1. 글 내용이 보강 수정되었습니다.
      다시 살펴봐주세요!

      1. 성공했습니다
        감사합니다!

  2. 리눅스 모니터링 툴 추천해주실만한거 있을까요?

    Nginx, php , mariadb, redis, 이정도 사용하고

    대역폭, 트래픽, cpu, ram 사용량등도 확인할 수 있으면 좋겠는데…

    netdata는 실시간(약1시간~) 만 보여주고, 한달 치 통계는 못보는거 같구..

    무민은 실시간 통계되나요??

    아무튼 몇개 추천 부탁드립니다

    1. 가비아 서버 모니터링 서비스 사용해보세요. 무료입니다.
      windows, linux 설치가능.
      현재 계속 테스트중이고, 4달정도 썼는데, 괜찮더라구요.

      https://xms.gabia.com/

      1. 가비아에서 근무하시는구나..

        들어가려면 멀 준비하조 서버쪽?

        1. 가비아에서 근무하고 있지 않습니다.
          다만 모니터링 툴은 가비아제품이 쓸만합니다.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*