'그래프'에 해당되는 글 3건

  1. 2011.05.14 안드로이드 스마트폰으로 우리동네 대기오염도 알아보기
  2. 2009.04.08 SNMP와 MRTG 이용 네트워크 시스템 모니터링 (2)
  3. 2009.03.30 시스템 및 네트워크 모니터링 (RRDtool, cacti) (2)
2011.05.14 14:31

안드로이드 스마트폰으로 우리동네 대기오염도 알아보기


지난 ’10.12월  환경부에서는 삼성전자와 “스마트폰 대기오염도 서비스”를 위한 자발적 협약을 체결하고, 「우리동네 대기정보 어플리케이션」을 출시(’11.1)하였습니다.

이를 계기로 환경부 최초로 인터넷 웹사이트에서 제공되는 대기오염도 정보를 안드로이드 기반 갤럭시 스마트폰 및 갤럭시 탭에서 「우리동네 대기정보 어플리케이션」으로 제공하고 있습니다.

다양한 대기오염도를 한눈에 보기 쉽게 색으로 구분하여 수치 정도를 제공해주고 그에 따른 행동 요령도 알려줍니다. 월 기준 혹은 그날의 시간대별 대기오염도도 확인할 수 있고요. 다양한 대기 정보 확인을 통해 우리 동네 공기는 어떤지. 그리고 환경이 얼마나 중요한 것인지 다시금 돌이켜보는 계기를 가져보면 어떨까요?





T-store 접속 → ‘우리동네 대기정보’ 검색 → ‘우리동네 대기정보’앱 다운로드

    <스마트폰 메뉴 - T-store>          <T-store 메인 검색화면>           <우리동네 대기정보 앱 검색>


 <우리동네 대기정보 앱 다운>        <우리동네 대기정보 앱 설치>





       <메인(1차 레이어)>            <대기오염물질 오염도(2차 레이어)>  <대기오염물질 오염도(3차 레이어)>
- 측정소 설정                             - 대기오염물질 오염도 수치             - 대기오염물질 날짜별 그래프
- 대기오염물질 오염도                   - 대기오염물질 수치별 행동요령       - 대기오염물질 정보
- 대기오염 달력
- 대기오염 시계
- 홍보 배너(순환)
- 공지사항 게시판



            <대기오염 달력(2차 레이어)>         <대기오염 시계(2차 레이어)>          <공지사항(2차 레이어)>
          - 날짜별 대기오염도                      - 시간별 대기오염도            - 공지사항 게시판(홍보배너 표출문구)


<공지사항(3차 레이어) 및 홍보배너(2차 레이어) 표출 세부 내용>


출처 : mamoblue.kr

Trackback 0 Comment 0
2009.04.08 16:14

SNMP와 MRTG 이용 네트워크 시스템 모니터링

MRTG는 장비의 CPU, 메모리, 4∼7계층 스위치, 다양한 서버와 애플리케이션의 상태를 모니터링 하는 툴로, 네트워크 관리자라면 한번 이상은 사용해 봄직한 공개용 툴이다. 하지만 알고 있는 것과 실제로 잘 활용하는 것은 별개의 문제. MRTG 설치시 유의할 점과 MRTG 전체 구조의 이해 등을 통해 실력있는 네트워크 관리자의 세계로 한단계 성큼 다가서 보자.

 

네트워크에 연결돼 있는 수많은 스위치, 라우터, 서버 등과 같은 여러 장비들을 관리하는 엔지니어들이 가장 궁금해 하는 것 중에 하나가 바로 '어떻게 장비의 상태를 주기적으로 모니터링할 수 있을까'일 것이다.


과거 네트워크 장비 상태를 점검한다고 하면 대부분 '트래픽'의 양에만 국한됐다. 하지만 최근에는 장비의 CPU, 메모리, 4∼7계층 스위치, 다양한 서버와 애플리케이션까지 등장하면서 보다 다양한 값을 포함하게 됐다.


MRTG 는 이런 상태를 모니터링하는 툴 중 하나로, 'Mutli Router Traffic Grapher'의 줄임말이다. MRTG는 이름에서 알 수 있듯이 기본적으로 라우터에서 가장 중요한 여러 인터페이스들의 'In/Out' 트래픽을 일간, 주간, 월간, 년간을 기준으로 각각 별도의 그래프를 그려주고, 이들의 현재, 평균, 최대치를 한눈에 알 수 있게끔 해주는 아주 유용한 툴이다.

 


 

 

MRTG는 라우터를 기본적으로 하고 있지만 조금만 응용해서 사용한다면 상상 이상의 것들도 모니터링이 가능하다. MRTG 활용으로 유명한 국내 사이트인 www.mrtg.co.kr로 가면 네트워크 장비들의 내부 온도를 나타내는 수치를 이용해, 온도 그래프까지 그려보이고 있다.
그 만큼 네트워크를 하는 사람들에게 MRTG는 잘 알려진 툴이며, 많이들 사용하고 있고, 실제 상용화된 네트워크 제품들이 통계치를 가진 그래프가 필요할 때 많이 사용된다. 아직 MRTG를 접해보지 않은 독자들이 있다면 이번 글을 통해 유용한 툴 하나를 얻을 수 있을 것이다.

 

MRTG의 동작 원리

 

MRTG는 여러 가지 요소가 복합적으로 동작을 하기 때문에 제일 먼저 MRTG가 전체적으로 어떻게 구성돼 있는지를 이해해야만 한다. 필자가 처음 MRTG를 접하고 나서 어느 정도 익숙해지기까지 시간이 많이 걸렸던 것도 바로 이런 부분을 그냥 지나쳤기 때문이었던 것으로 기억한다. 때문에 이 같은 시행착오를 거치지 않으려면 MRTG의 전체 구성을 반드시 이해하고 넘어가는 것이 좋다.
MRTG는 (그림 1)과 같이 모니터링 대상이 되는 시스템과 그 시스템을 모니터링 하는 두 개의 시스템으로 구성된다.

 


 

 

(그 림 1)과 같이 네트워크 장비의 트래픽을 모니터링하고 싶을 경우 MRTG 서버의 SNMP(Simple Network Management Protocol) 요청에 응답하기 위해 시스템에서 제일 먼저 SNMP는 에이전트(Agent)를 구동시켜야 한다. 물론 이때 두 시스템은 네트워크에서 연결이 돼야 한다(인터넷 구간에서도 많이들 사용한다).


다음으로 MRTG가 구동될 서버에는 모니터링 장비에 정보를 요청하고, 그 값을 로그로 남기고, 그래프를 만드는 MRTG 프로그램을 설치해야 한다. 이들 결과값을 사용자가 웹 브라우저를 이용해서 볼 수 있도록 웹 서버를 설치해야 한다. 웹 서버는 결과값을 만드는데는 필요하지 않고, MRTG의 결과값이 gif, png 형태의 그래프와 HTML 형식으로 만들어지기 때문에 사용될 뿐이다.
여기서 웹 서버는 자주 사용하는 리눅스(유닉스 계열)의 아파치나 마이크로소프트의 윈도우 NT 계열 이상에 설치되는 IIS 또는 개인용 웹서버라고 불리우는 'Persnal Web Server'이어도 상관없다.
다 시 한번 정리하면 모니터링 대상이 되는 시스템에 SNMP가 구동돼야 하고, MRTG가 설치된 서버에 MRTG 프로그램과 웹 서버를 설정하면 모든 작업은 끝난다. 이제 필요할 때마다 웹 브라우저를 이용해 장비 상태를 점검하면 된다.

 

다양한 운영체제 지원

 

MRTG가 가장 많이 사용되는 시스템은 리눅스(유닉스) 계열이고, 최근에는 마이크로소프트의 윈도우 계열에서도 많이 사용한다. 그 이유는 더 편해서라기 보다는 대부분의 사람들이 윈도우를 사용하기 때문일 것이다.
최근 리눅스 배포판들의 경우는 대부분 MRTG를 이미 포함하고 있기 때문에 리눅스가 있다면 바로 사용할 수 있다. 참고로 MRTG는 다음과 같은 다양한 운영체제를 지원한다.

 

·리눅스 1.2.x, 2.0.x, 2.2.x, 2.4.x(인텔, 알파, 스팍, 파워PC)
·리눅스 MIPS, 리눅스 S/390
·SunOS 4.1.3
·MacOSX 10.2.8
·솔라리스 2.4, 2.5, 2.5.1, 2.6, 7, 8, 9
·AIX 4.1.4, 4.2.0.0, 4.3.2
·HPUX 9,10,11
·윈도우 NT 3.51, 4.0, 2k, XP, 2003(95, 98, ME too, but only for die-hards)
·IRIX 5.3, 6.2, 6.5
·BSDI BSD/OS 2.1, 4.x, 3.1
·NetBSD 1.5.x 1.6.x
·FreeBSD 2.1.x, 2.2.x, 3.1, 3.4, 4.x
·OpenBSD 2.x, 3.x
·Digital Unix 4.0
·SCO Open Server 5.0
·Reliant UNIX
·NeXTStep 3.3
·OpenStep 4.2
·Mac OS X 10.1
·기타 유닉스 계열의 운영체제

 

이렇게 다양한 운영체제를 지원하는 것만으로도 MRTG가 얼마나 범용적인 툴인가를 알 수 있다.

 

MRTG 설치시 유의 사항 'Perl 설치하기'

 

이번 기고에서는 지면 관계상 MRTG 설치법에 대해서는 자세히 다루지 않는다. 그렇다고 걱정할 필요는 없다. 다음과 같은 홈페이지를 이용하면, 보다 더 자세한 설치 매뉴얼을 얻을 수 있으니 말이다.

http://www.mrtg.co.kr/
http://oss.oetiker.ch/mrtg/

대 신 MRTG 설치시 주로 고민하게 되는 몇 가지에 대해서만 간단히 짚고 넘어가도록 하겠다. 우선 MRTG는 펄(Perl)과 C를 기본으로 동작하는데, 리눅스의 경우 대부분 펄이 이미 설치돼 있기 때문에 MRTG만 설치하면 되지만, 윈도우에서는 그렇지가 못하다. 때문에 '윈도우용 Perl'을 별도로 설치해야만 한다.
자신의 시스템에 펄이 설치돼 있지 않다면 www.perl.com이나 www.perl.org를 방문해서 별도로 펄을 설치해야 한다. 참고로 펄은 스크립트형 프로그래밍 언어로, 유닉스 계열에서 많이 사용되며, 특히 웹 서버들의 프로그래밍에 많이 사용돼 왔다.


MRTG 실행 파일 활용 1 : cfgmaker

 

MRTG에는 다음과 같은 3개의 실행 파일이 있다.

 

·cfgmaker
·mrtg
·indexmaker

 

cfgmaker 는 이름에서 짐작할 수 있듯이 MRTG가 구동되기 위한 Config 파일을 만드는데 사용된다. 사실 Config 파일의 포맷을 정확히 알고 있다면 cfgmaker를 사용할 필요가 없지만, 그렇지 않은 경우에는 cfgmaker를 이용해서 설치를 한 후에 간단하게 Config 파일을 만들 수 있다.
그 다음으로 이 Config 파일을 자신이 원하는 형태로 수정을 하면 된다. cfgmaker의 경우, 처음에 Config 파일을 생성할때만 사용된다. 다음은 간단한 cfgmaker 사용법이다.

 

[root@tech mrtg]# cfgmaker > switch.cfg

 

여기에 사용된 'admin'은 실제 모니터링을 할 시스템인 192.168.10.10에 설정된 SNMP 커뮤니티 값이다. 그리고 다음에 있는 switch.cfg는 cfgmaker에 의해 만들어질 Config 파일의 이름이다.
여 기서 cfgmaker는 192.168.10.10 시스템에 직접 SNMP 통신을 해 모든 인터페이스들의 값을 나타내고자 한다. 그러므로 cfgmaker를 구동할 때는 시스템과 SNMP 통신이 가능해야만 한다. 만약에 그렇지 않다면 '에러'를 만나게 될 것이다.

 

MRTG 실행 파일 활용 2 : mrtg

 

MRTG 의 또다른 실행파일인 mrtg는 기본적으로 5분마다 실행돼 Config 파일에 따라서 SNMP 요청을 하고, 그 결과값으로 로그를 남기고 그래프도 만든다. cfgmaker와 indexmaker가 어떤 대상을 모니터링 하고자 할 때 처음에만 사용된다고 한다면, mrtg 파일은 모니터링을 하는 동안 계속해서 사용된다.

 

[root@tech mrtg]# mrtg switch.cfg

 

mrtg 파일은 cfgmaker로 만들어지거나 임의로 만든 Config 파일을 이용해 실행할 수 있다. 이때도 물론 해당 서버와 통신이 가능해야만 정확한 값을 가지고 올 수 있다. mrtg의 경우, 이전에 남은 로그를 비교해서 만들기 때문에 초기에 실행하면 첫번째, 두번째는 에러가 나고, 세번째에야 에러가 없이 동작을 하게 되니, 첫 번째, 두 번째 에러에 너무 당황하지 않아도 된다.
설치 초기에만 mrtg 파일을 수동으로 실행시키고 이후에는 유닉스의 자동 스케줄 프로그램인 cron을 이용해서 5분마다 구동시키면 된다. 다음은 cron에 등록돼 5분마다 실행하도록 추가된 내용이다.

 

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /var/www/html/mrtg/switch.cfg

 

mrtg를 5분마다 실행하는 또 다른 방법으로는 Config 파일에 다음과 같은 항목을 넣어주는 것이다.

 

RunAsDaemon:Yes
Interval:5

 

위와 같은 항목만 넣어주고 mrtg가 실행되면서 데몬으로 동작을 하게된다. mrtg가 cron에서 동작할 경우 매번 Config 파일을 로딩하고 파싱을 해야 하는 반면, 데몬의 경우 그 동작을 한번만 수행하는 장점이 있다.


다만 데몬으로 동작하는 경우는 시스템 구동시 시작되도록 시작 스크립트에 mrtg가 한번 구동되도록 해야 한다는 점을 절대 잊지 말자.

 

MRTG 실행 파일 활용 3 : indexmaker

 

'indexmaker' 파일도 cfgmaker와 마찬가지로 초기에 cfgmaker를 만들고, mrtg 파일을 다음에 한번만 생성하면 된다. 이 파일은 실제 mrtg가 동작하는데 사용되기 보다는 mrtg로 만들어진 결과값을 사용자가 웹 브라우저로 볼 때 만들어지는 HTML 형태의 초기 화면을 만들어주는 역할을 한다. 그러니 mrtg를 구동하고 처음에 한번만 실행을 하면 된다.

 

[root@tech mrtg]# indexmaker --title '스위치' --output ./switch/index.html switch.cfg

 

위 의 명령어를 실행시키고 나면 'switch'라는 폴더에 'index.html'이라는 파일이 생성됨을 알 수 있을 것이다. 물론 이 페이지를 열게 되면 페이지 맨 위의 제목이 '스위치'로 돼 있다. 참. 이때 간단한 내용이지만 주의할 점은 이 파일이 만들어지는 위치는 당연히 웹 서버의 홈 디렉토리 내부에 위치해야만 웹 브라우저로 볼 수가 있다는 것이다.
지금까지 살펴본 cfgmaker, mrtg, indexmaker 파일이 각각 어떤 역할을 하는지 명확히 구분할 수 있다면 MRTG를 처음 설치하더라도 걱정할 것이 없다.


 

MRTG 팁

 

그래프가 114Mbps 이상에서 이빨 빠진 것처럼 되는 이유와 해결책

 

(화면 1)은 라우터의 기가포트에 대한 트래픽을 나타내는 그래프다.

 


 

(화면 1) 32비트 카운터를 사용할때 볼 수 있는 화면

 

 

자 세히 살펴보면 150Mbps 이상을 계속 사용하고 있음에도 불구하고 이상하게도 트래픽은 항상112Mbps 근처에서 더 이상 증가하지 않는다. 증가하지 않는 이유와 왜 하필 값이 112Mbps 근처가 되는지, 그리고 이 문제를 해결하기 위해서 어떻게 해야 되는지 알아보자.

 

첫째, 왜 한계값이 114Mbps 인가?

 

위와 같은 문제가 생기는 이유는 MRTG가 기본적으로 32비트 카운터를 사용하기 때문이다. 32비트 카운터를 사용할 때 다룰 수 있는 최대값은 2의 32승 = 4,294,967,296이고, 이것을 5분간 평균치로 구하기 위해 300으로 나누면 14,316,557.65333이 된다. 이것을 우리가 알아보기 편한 비트 단위로 환산하기 위해 8을 곱하면 다음과 같다.

 

14,316,557.65333×8 = 114,532,461.22666

 

다시 말하면 (2의 32승 바이트 / 300초)×8 = 약 114Mbps 가 되는 것이다.

 

둘째, 그럼 해결책은 무엇인가?

 

32 비트를 사용하기 때문에 약 114Mbps 영역까지만 제대로 표시할 수 있다. 이 문제를 해결하기 위해서는 상위버전인 64비트 카운터를 이용하면 된다. 물론, 114Mbps 이하의 영역에 있는 100Mbps 이하의 속도를 가지고 있는 인터페이스에서는 평소대로 32비트 카운터를 이용하면 된다.
64비트 카운터를 이용하기 위해서는 CFG 파일 내부에 'Target' 부분의 마지막 부분에 콜론(:)을 다섯 개를 써준 후 숫자 2(64비트 카운터를 의미함)를 써주면 된다. 이때 주의할 점은 구형 기종과 IOS는 64비트 카운터를 지원하지 않는 경우가 있으니 유의해야 된다.

 

Target[10.10.10.1_1]: 1:public@10.10.10.1:
→ Target[10.10.10.1_1]: 1:public@10.10.10.1:::::2


 


 

(화면 2) 64비트 카운터를 사용할때 볼 수 있는 화면

 

 

 

 

라우터의 OID 값 구하는 방법 

 



(화면 3) 라우터 메모리의 OID 값 구하기

 

 

트 래픽에 대한 정보는 MRTG에서 기본적으로 제공하기 때문에 문제가 없지만, 메모리나 CPU 등을 모니터링 하기 위해서는 각각의 OID(Object ID) 값을 알아야 한다. 이번에는 시스코웍스에 포함돼 있는 What's up gold를 이용해 실제 라우터에서 OID 값을 찾는 방법과 이것을 MRTG에 적용하는 방법에 대해 알아보도록 하자.

먼저 라우터 메모리 OID(Object ID) 값을 구해보자. 라우터에 접속한 후 show memory 라는 명령어를 이용하면 다음과 같은 내용을 볼 수 있다.

 

7206vxr#show memory

           Head        Total         Used          Free     ...
Processor  62AE40C0   206683968    29212292    177471676    ...
      I/O  F000000    16777216     7282508     9494708      ...
   ....

 

여기서 Used, Free 부분을 모니터링하려고 한다.

 

7200 라우터 전체 메모리 = 시스템 메모리 + 프로세서 메모리 + I/O 메모리

 

What's up gold를 실행 후 Net Tools의 SNMP에서 What 부분을 셀렉터(...) 클릭한다(화면 4). 

 

iso → org → dod → internet → private → cisco → ciscoMgmt → ciscoMemoryPoolObjects → ciscoMemoryPoolTable → ciscoMemoryPoolEntry

 

 


(화면 4) Net Tools의 SNMP를 실행한 화면

 

(화면 4)에서 우리가 모니터링하려고 하는 대상은 다섯 번째와 여섯 번째에 해당하는 다음과 같은 것이다.

 

ciscoMemoryPoolUsed → 1.3.6.1.4.1.9.9.48.1.1.1.5
ciscoMemoryPoolFree → 1.3.6.1.4.1.9.9.48.1.1.1.6 

 

자, 이제 맨 마지막에 instance 값을 붙이는 일만 남았다(보통 CPU처럼 한개만 있는 항목은 0을 사용함). instance는 굳이 한글로 번역한다면 '종류' 혹은 '인덱스 번호' 정도로  해석할 수 있다. 메모리의 경우에도 프로세서 메모리, I/O 메모리, Fast 메모리, PCI 메모리 등 많은 종류가 있는데 이런 것을 구별하기 위하여 instance라는 것이 필요한 것이다.
처음에 show memory를 실행시켰을 때 나온 값을 보면 7200라우터의 주된 항목으로 프로세서 메모리와 I/O 메모리가 보임을 알 수 있다. instance 값에 대한 확인은 메모리 타입이나 메모리 이름으로 알 수 있다. 이제 ciscoMemoryPoolEntry를 선택하고, Get All Subitems를 체크한 후 start 버튼을 클릭하면 된다.
(화면 5)에서 instance 값이 1번은 프로세서 메모리이고, 2번은 I/O 메모리이기 때문에 우리가 MRTG에 기록하는 값(OID+instance)은 각각 다음과 같다.

 

 


 

 

(화면 5) instance 값 확인하기

 

ciscoMemoryPoolUsed → 1.3.6.1.4.1.9.9.48.1.1.1.5.1  1.3.6.1.4.1.9.9.48.1.1.1.5.2
ciscoMemoryPoolFree → 1.3.6.1.4.1.9.9.48.1.1.1.6.1  1.3.6.1.4.1.9.9.48.1.1.1.6.2


 

 

라우터의 CPU 사용률 모니터링하기

 

 

 


(화면 6) 라우터의 CPU 사용률을 모니터링한 화면

 

 

What's up gold 실행 후 Net Tools의 SNMP탭에서 What 부분을 셀렉터(...) 클릭해 보자.

 

iso → org → dod → internet → private → cisco → local → lsystem에서 avgBusy1과 avgBusy5 항목을 찾을 수 있다(화면 7).

 

 



(화면 7) avgBusy1과 avgBusy5 항목 확인하기

 

과연 이 값이 맞는지 라우터에 들어가서 다음과 같이 직접 확인해 보자.

 

7206vxr#show processes cpu
CPU utilization for five seconds: 19%/18%; one minute: 20%; five minutes: 20%
PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min    TTY Process
1           0         1          0     0.00%  0.00%  0.00%   0 Chunk Manager
2         288   1147692          0     0.00%  0.00%  0.00%   0 Load Meter
3          12       112        107     0.08%  0.00%  0.00%   2 Virtual Exec
...
...

 

위 의 결과를 통해 avgBusy1: CPU 1분간 평균값, avgBusy5: 5분간 평균값 항목이 정확하다는 것을 알 수 있다. 따라서 우리가 구하고자 하는 값은 avgBusy1 = 1.3.6.1.4.1.9.2.1.57.0, avgBusy5.0 = 1.3.6.1.4.1.9.2.1.58.0이다. 아래는 MRTG 설정의 예이다.

 

 Target[cpu]: 1.3.6.1.4.1.9.2.1.57.0&1.3.6.1.4.1.9.2.1.58.0:public@1.1.1.1
 MaxBytes[cpu]: 100
 Options[cpu]: growright,gauge
 Unscaled[cpu]: dwmy
 YLegend[cpu]: CPU Utilization
 ShortLegend[cpu]: %
 LegendI[cpu]: 1 Min:
 LegendO[cpu]: 5 Min:
 Legend1[cpu]: AvgBusy 1 Min
 Legend2[cpu]: AvgBusy 5 Min
 Title[cpu]: 7206 Router CPU utilization
 PageTop[cpu]: <H1>7206 Router CPU utilization</H1>

 

 

 

index(html 파일 목차) 만들기

 

 

MRTG 를 이용해서 그래프와 html 파일을 생성시켰다면 이제는 이것을 웹으로 보여줘야 할 일이 남아 있다. 물론, html 파일을 사용자가 직접 메모장에서 수정할 수 있지만, MRTG에서 제공하는 indexmaker를 이용하면 간단하게 index 파일을 만들 수 있다.

 

·cfg 화일 만들기

 

 C:\mrtg\bin>perl cfgmaker --ifdesc=alias public@1.1.1.1> 7206.cfg

 

 


(화면 8-1) CPU utilization

 

 

 


(화면 8-2) GigabitEthernet0/1 "KOREN21-1Gbps"

 

 

 


(화면 8-3) GigabitEthernet0/3 "KT-Metro-155Mbps"

 

 

 


(화면 8-4) GigabitEthernet2/0 "FireWall-1Gbps"

 

 

 


(화면 8-5) Serial5/0 "Seoul-EI"

 

위의 명령에서 --ifdesc=alias 옵션을 주는 이유는 (화면 8)에서 보듯이 그래프의 제목을 라우터에 설정된 description으로 지정해 주기 위해서이다. 실제로 라우터에서는 다음과 같이 설정돼 있다.

 

   ...
   ...
   interface GigabitEthernet0/1
      description "KOREN21-1Gbps"

   interface GigabitEthernet0/3
      description "KT-Metro-155Mbps"

   interface GigabitEthernet2/0
      description "FireWall-1Gbps"

   interface Serial5/0
      description "Seoul-E1"
   ...
   ...

 

·index 파일 만들기 : [형식] perl indexmaker [옵션] [cfg파일]

 

C:\mrtg\bin>perl indexmaker --output=c:\mrtgdata\7206\index.html 7206.cfg

 

 

 

수식을 이용한 그래프


어 느 날 이런 문의가 들어왔다. 본사와 지사간에는 E1 전용회선을 3회선 이용하고 있고 MRTG를 이용해 모니터링하고 있다. 평소에는 상사에게 MRTG를 이용해 각 인터페이스의 트래픽 그림을 보여주면서 3개의 회선의 이용도가 이 정도이다라고 보고했다. 그런데 어느 날 갑자기 상사가 각 인터페이스별로 그래픽을 따로 표시할 것이 아니라 하나로 합쳐서 전체 6Mbps 중에 회선 이용률이 얼마나 되는지 알 수 있도록 하라고 지시를 내린 것이다. 이런 상황에서도 당황해 할 필요 없다. MRTG는 자체내에서 그런 것을 아주 간단하게 제공하고 있기 때문이다.

 

  Target[sum]: 1:public@1.1.1.1 + 2:public@1.1.1.1 + 3:public@1.1.1.1
   ...
   ...

 

위 의 설정처럼 하면 3개 인터페이스의 트래픽을 하나로 합쳐서 보여줄 수 있다. 그리고 덧셈뿐만 아니라 나머지 사칙연산도 지원하고 있는데, 사칙연산을 이용할 때 주의해야 할 점은 연산자라는 것을 확실히 구분하기 위해 연산자 앞뒤에는 반드시 공백이 있어야 된다는 것이다.

 

 

출처 : 온더넷


Trackback 8 Comment 2
  1. jslee233 2010.03.24 16:47 address edit & del reply

    좋은 정보 잘 보았습니다. 먼저 감사 드리며,,, MRTG을 DB 서버와도 연동이 가능한지여, 또한 OID값을 이용하여 다른 정보도 그래프로 그릴 수 있는지 궁금합니다.

    • Favicon of https://blog.pages.kr 날으는물고기 2010.03.25 19:00 신고 address edit & del

      MRTG 를 프로그램 수정하시면
      DB 연동 가능하시고요..
      SNMP에서 제공되는 모든 정보에 대해서
      그래프 기능이 가능합니다.

2009.03.30 18:45

시스템 및 네트워크 모니터링 (RRDtool, cacti)

RRDtool은 일정시간 동안 몇가지 어떤 값을 측정하여 이 정보를 임의의 기간동안 RRDtool에 의해 저장되고 사용자에 의해서 그래프파일을 생성한다. 

저장되는 값들은 일반적으로 숫자값이지만 반드시 이러한 값에는 제한이 없다.
많 은 예제들이 SNMP를 사용하여 장비가 가지고 있는 MIB값을 추출하여 이값을 RRDtool은 데이터베이스를 만들고 이곳에 데이터를 저장하고. 이 데이터를 추출하는 웹 브라우저를 통해 볼수 있도록 GIF나 PNP형식으로 그래프를 만들어 준다
예를 들어 평균 네트워트 사용률이나 최대 사용률등을 계속 모니터링을 하면서 볼수 있도록 개발되어 있다
 

리눅스 시스템의 하드디스크 상황, 메모리 상황, 프로세스 상황, 이더넷의 네트웍트래픽 상황 등을 웹상에서 쉽게 모니터링 하고자 한다면 RRDtool과 cacti를 사용한다

RRDtool 배포 사이트 : http://oss.oekiker.ch/rrdtool

 

1. RRDtool 다운로드 및 설치하기

 
rrdtool을 설치하기 앞서 다음 패키지가 설치되어 있어야 한다

  -libart_lgpl
  -libart_lgpl-devel
  -zlib
  -zlib-devel
  -libpng
  -libpng-devel
  -freetype
  -freetype-devel
  -net-snmp-perl
  -net-snmp-libs
  -net-snmp
  -net-snmp-devel
  -net-snmp-utils
 
먼저 해당 패키지가 존재 하는지 검색을 한다

[root@nayana ~]# rpm -qa | grep libart_lgpl

패키지가 존재하지 않는다면 yum을 이용하여 패키지를 다운로드 한다

[root@nayana ~]# yum -y install libart_lgpl libart_lgpl-devel
[root@nayana ~]# yum -y install zlib zlib-devel
[root@nayana ~]# yum -y install libpnb libpng-devel
[root@nayana ~]# yum -y install freetype freetype-devel
[root@nayana ~]# yum -y install net-snmp-*

보통 devel 개발 버전이 설치되어 있지 않을것이다
devel 패키지와 net-snmp를 설치하면 될 것이다.

net-snmp 패키지를 설치하였다면 /etc/snmp/snmpd.conf 파일에서 4가지 설정사항을 해줘야 한다



위의 그림과 같이 기존에 있던 것은 주석처리를 해주고  그 아래 그림과 같이 수정한다
즉 sec.name 부분과 community부분을 public으로 설정하도록 한다
마지막으로 access 접근 제어 부분에서 그룹명을 public으로 설정하고 read권한부분을 all로 설정한다

설정이 완료 되었다면 snmp데몬을 시작한다

[root@nayana ~]# /etc/rc.d/init.d/snmpd start
snmpd (을)를 시작합니다:                                   [  확인  ]


RRDtool을 다운로드 하고 컴파일을 한 다음 설치하도록 하자

다운로드 사이트 :
http://oss.oetiker.ch/rrdtool/  
download를 클릭하여 해당 버전을 다운로드 하면 된다


소스 다운로드 링크 : http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz

우리는 편하게 하기 위하여 wget을 이용한다 / 다운로드는 원하는곳에 다운로드 하면 된다

[root@nayana ~]# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz

다운로드 받은 rrdtool을 압축을 푼다

[root@nayana ~]# tar xvfz rrdtool-1.2.27.tar.gz
[root@nayana ~]# cd rrdtool-1.2.27



[root@nayana rrdtool-1.2.27]#
./configure --prefix=/usr/local/rrdtool --disable-tcl
--disable-python --disable-ruby

--중략
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
----------------------------------------------------------------
Config is DONE!

          With MMAP IO: yes
          Perl Modules: perl_piped perl_shared
          Perl Binary: /usr/bin/perl
          Perl Version: 5.8.5
          Perl Options: PREFIX=/usr/local/rrdtool LIB=/usr/local/rrdtool/lib/perl/5.8.5
          Ruby Modules:
          Ruby Binary: no
          Ruby Options: sitedir=/usr/local/rrdtool/lib/ruby
          Build Tcl Bindings: no
          Build Python Bindings: n
          Build rrdcgi: yes
          Build librrd MT: yes

Type 'make' to compile the software and use 'make install' to
install everything to: /usr/local/rrdtool.

... that wishlist is NO JOKE. If you find RRDtool useful
make me happy. Go to http://tobi.oetiker.ch/wish and
place an order.

                               -- Tobi Oetiker <tobi@oetiker.ch>
----------------------------------------------------------------
컴파일 작업을 시행한다

[root@nayana rrdtool-1.2.27]# make && make install

컴파일 작업이 이상없이 되었는지 확인하기 위하여 아래와 같은 명령어를 사용한다
여기서 0이 아닌 다른 숫자가 나올 경우 컴파일 중에 문제가 발생한 것이다
문제가 발생하면 위에서 필요한 패키지 중 설치하지 않는 패키지가 있는지 확인한다

[root@nayana rrdtool-1.2.27]# echo $?

0

여기서는 컴파일 작업 중 아무런 문제가 발생되지 않아 0 이 나타났다

 

2. cacti 다운로드 및 설치하기

cacti는 위에서 어늡한 RRDtool의 데이터베이스를 이용한 웹그래픽 생성엔진이다
cacti는 각종 데이터를 Mysql등의 데이터베이스에 시스템 상황들의 데이터값을 저장하고  시간단위로 저장된 데이터를 분석하여 웹상에서 그래프를 생성하여 보여주는 매우 유용한 시스템 모니터링 도구이다.

cacti,는 기본적으로 php를 기반으로 사용하는 웹도구이므로 반드기 php가 설치되어 있어야 한다
기본적으로  APM은 설치되어 있어야 하는것이다.

다운로드 사이트 : http://www.cacti.net/

 

우리는 wget을 이용하여 다운로드 한다
다운로드 위치는 /usr/local/src
 
소스 다운로드 : http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz

[root@nayana rrdtool-1.2.27]# cd /usr/local/src
[root@nayana src]# wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz

다운로드 받은 파일을 압축은 푼다

[root@nayana src]# tar xvfz cacti-0.8.7b.tar.gz

폴더명이 너무 길기 때문에 폴더명을 수정해 준다

[root@nayana src]# mv cacti-0.8.7b cacti
[root@nayana src]# cd cacti


mysql데몬을 어디서나 바로 start stop시킬수 있게 경로를 지정해 줬다

[root@nayana cacti]# vi /root/.bash_profile   (mysql, apache를 어디서나 start / stop 시킬수있게 경로 지정)

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/apache/bin

BASH_ENV=$HOME/.bashrc

USERNAME="root"

[root@nayana ]# source /root/.bash_profile  (바로 적용할 수 있게)


cacti 데이터 파일들을 저장하기 위해 mysql 데이터베이스를 생성

[root@nayana cacti]# mysqladmin create cacti -u root -p
 Enter password:
[root@nayana cacti]#


cacti 데이터 베이스에 필요한 테이블 및 기본 데이터 생성하기


[root@nayana cacti]# mysql cacti < cacti.sql -u root -p
 Enter password:
[root@nayana cacti]#

cacti 데이터베이스 접급권한 설정하기


[root@nayana cacti]# mysql -u root -p mysql
 Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.20-log
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY '123456';

 cacti@localhost  : 사용자
 '123456' : 사용자 패스워드 (즉 cacti의 패스워드)
 
mysql 권한 설정 후 권한 재설정 사항을 적용하기 위해서 flush privileges; 명령어를 수행한다
위에서 기본제공되는 cacti.sql파일을 mysql에 저장하였다

저장된 mysql 데이테베이스를 확인하도록 하자

mysql> show databases;

+----------+
| Database |
+----------+
| cacti    |
| mysql    |
| test     |
+----------+
3 rows in set (0.00 sec)
 

mysql> use cacti;
Database changed

mysql> show tables;
+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
| data_template_data        |
| data_template_data_rra    |
| data_template_rrd         |
| graph_local               |
| graph_template_input      |
| graph_template_input_defs |
| graph_templates           |
| graph_templates_gprint    |
| graph_templates_graph     |
| graph_templates_item      |
| graph_tree                |
| graph_tree_items          |
| host                      |
| host_graph                |
| host_snmp_cache           |
| host_snmp_query           |
| host_template             |
| host_template_graph       |
| host_template_snmp_query  |
| poller                    |
| poller_command            |
| poller_item               |
| poller_output             |
| poller_reindex            |
| poller_time               |
| rra                       |
| rra_cf                    |
| settings                  |
| settings_graphs           |
| settings_tree             |
| snmp_query                |
| snmp_query_graph          |
| snmp_query_graph_rrd      |
| snmp_query_graph_rrd_sv   |
| snmp_query_graph_sv       |
| user_auth                 |
| user_auth_perms           |
| user_auth_realm           |
| user_log                  |
| version                   |
+---------------------------+

48 rows in set (0.00 sec)

mysql>quit

 

본 데이터베이스를 확인한 다음 cacti의 접속 환경설정 php파일을 수정하도록 하자



mysql 계정 및 패스워드를 입력한다



데이터 파일과 로그 파일이 저장될 디렉토리인 rra디렉토리와 log디렉토리의 퍼미션을 777로 설정한다

[root@nayana cacti]# chmod 777 rra log
[root@nayana cacti]#

기본 웹서버 디렉토리아래에 심볼릭링크를 걸어준다

[root@nayana cacti]# ln -s /usr/local/src/cacti /usr/local/apache/htdocs/cacti
[root@nayana cacti]# cd /usr/local/apache/htdocs/
[root@nayana htdocs]# ll
합계 2096
-rw-r--r--  1 lee  games    2326  1월  6  2005    apache_pb.gif
lrwxrwxrwx  1 root root            20  2월 21 11:10   cacti -> /usr/local/src/cacti



웹 브라우저를 이용하여 심볼릭링크를 걸어둔 URL로 접속한다

http://192.168.0.10/cacti/


  NEXt를 클릭한다
  
신규로 설치를 할 것인지 묻는느다>
처음 설치를 하기 때문에 New Install을 선택하고 NEXT버튼을 클릭한다
 


NOT FOUNT라고 경고 메시지가 뜬다
cacti에서 경로를 /usr/local/bin/rrdtool로 인식하기 때문이다
이것을 위의 그림과 같이 경로를 재 설정해 준다

/usr/local/rrdtool/bin/rrdtool    -->수정

혹 PHP 경로가 잘못 설정되어 있다고 나온다면
which php를 입력하여 나온 경로를 입력해 주면 된다

Finish 버튼을 클릭을 한다


User Login 창이 나타나면 admin admin 이라고 입력을 한다  
 
 
다음 접속부터 사용할 패스워드를 입력한다


 


위의 화면이 정상적으로 출력이 되면 설치가 제대로 된 것이다.

 

이제부터 cacti를 설정해 보자

 

   1. devices 클릭
   2. Localhost 클릭


 

1. Downed Device Detection : None
2. SNMP Version : Version1
3. SNMP Community : public

위의 그림과 같이 수정을 해 준 다음 save 버튼을 클릭한다.



다음은 cacti의 기본 환경 설정이다
1. 좌측메뉴의 Setting 클릭
2. General  클릭
3. RRDTool Utility Version :  RRDtool 1.2.x 버전 선택
4. SNMP Version : Version 1 선택
5. save


 

관리자 root의 crontab에 아래의 내용을 추가한다

[root@nayana cacti]# crontab -e

*/5 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null2>&1

 cacti에서 기본적으로 제공하는 poller.php 스크립트를 매 5분마다 실행하여 그래프플 생성하도록
 crontab에 설정을 추가한다
 

 

 

3. cacti 모니터 그래프 생성하기



좌측메뉴 devices 클릭 - 우측 localhost 클릭

 

Add Data Query 항목에서 아래 그림과 같이 3개의 항목을 추가해 준다
SNMP-Get Mounted Partions 선택 ---> add 버튼 클릭
 


항목 설명
   1. SNMP - Get Mounted Partitions       :   해당 o/s 의 파티션 정보 표시
   2. SNMP - Get Processor Information  : cpu 정보 표시
   3. SNMP - Interface Statistics             : 이더넷 트래픽 정보 표시

 이 밖에도 많은 것들을 추가하여 그래프로 보여 줄 수 있다.
 원하는 항목들을 선택하여 추가한 다음 save 버튼을 클릭하면 된다


위에서 생성했던 그래프 항목의 속성값들이 모두 나타난다
여기서 원하는 항목(그래프)만 선택하여 Create 버튼을 클릭한다
 



기본값으로 선택 후 create버튼을 클릭한다 (원하는 색상으로 변경할 수 있다)

 


선택하지 않은 항목이 있으면 이곳에서 선택해서 그래프를 생성할 수 있다
 



 좌측메뉴의 Graph Trees 클릭  ---> Default Tree 클릭



Tree Items항목에서 ++ 버튼을 클릭한다
 



 1. Parent Item           : root
 2. Tree Item Type     : Host
 3. Host                     : localhost
 4. Create 버튼 클릭



default Tree 항목에 localhost 항목이 새롭게 생겼다.

 


좌측 상단 graphs를 클릭하면 위 화면과 같이 나타난다 이것은 아직 로그 파일들이 생성되지 않아 타나난것이다.
약 5분정도 시간이 경과되면 아래와 같은 화면이 출력된다.
 


 
5분정도 경과 후 새로고침을 하면 위 화면처럼 그래프 화면이 보여진다



위 그림은 실제 모니터링이 되고 있는 모습이다


서버의 하드디스크 상황 . 메모리 상황 , 프로세스 상황  로그인 유저 상황 그리고 이더넷 카드의
트래픽을 확인 할 수 있다.

또한 기본 설정값으로 5분마다 웹페이지가 refresh 되도록 설정되어있기 때문에 5분이 지나면 웹페이지가
자동으로 새로고침되어 보여 준다.
그리고 해당 그래프 화면을 클릭하면 5분 . 일주일  1개월 1년의 그래프 화면을 볼수 있다


 

참고적으로 스위치 및  라우터 그리고 MS 계열도 모두 모니터링이 가능하다.




위 그림은 스위치 모니터링 페이지이며 각각 포트별로 트래픽을 확인 할 수 있다
스위치의 경우 각각 스위치마다 communiti 가 설정되어 있다
그 값을 불러주면 포트별로 트래픽을 확인 할 수 있다

이상으로 모니터링을 할 수 있는 RRDtool과 cacti에 대해 설명 하였으며
원격에 있는 리눅스 서버 및 MS 서버 그리고 라우터 및 스우치 등 다양하게 모니터링을 할 수 있다

감사합니다.


출처 : http://nayana.com/

Trackback 2 Comment 2
  1. rrdtool 2009.03.30 20:07 address edit & del reply

    설치 설명은 여기에 있네요...
    http://blog.naver.com/831jsh?Redirect=Log&logNo=70043303210

  2. WatchMan 2009.07.27 16:11 address edit & del reply

    좋은 자료 감사합니다.