Cisco 라우터 트래픽을 RRDtool을 사용하여 30초 평균 그래프 만들기(준비)

목적



일반적인 라우터 트래픽을 그래프로 표시하는 도구는 5분 평균입니다.
스파이크와 같은 일시적인 트래픽 증감을 파악하기 위해 30초 평균으로 그래프화합니다.
트래픽의 그래프화에는 RRDtool을 이용합니다.

이 기사에서는 RRDtool의 사용법을 확인하기 위해 명령으로 실행하는 방법을 설명합니다.

Cisco 라우터 및 snmpCisco 라우터의 포트 목록을 SNMP로 검색에 설명되어 있습니다.

실행 이미지



아래와 같이 패킷 데이터량과 패킷수를 30초 평균의 그래프로 합니다.
여기에서는 샘플 데이터로 사인 커브를 저장하고 RRDtool로 그립니다.

송수신 트래픽(전송 데이터량) ※정방향은 수신, 부방향은 송신


송수신 패킷수 ※정방향은 수신, 부방향은 송신


수집 대상 SNMP OID



아래의 OID를 정기적으로 snmpget 로 얻어 RRD 파일에 저장합니다.
  • 트래픽
  • 수신: ifHCInOctets
  • 전송: ifHCOutOctets

  • 유니캐스트 패킷 수
  • 수신: ifHCInUcastPkts
  • 전송: ifHCOutUcastPkts

  • 멀티 캐스트 패킷 수
  • 수신: ifHCInMulticastPkts
  • 전송: ifHCOutMulticastPkts

  • 브로드캐스트 패킷 수
  • 수신: ifHCInBroadcastPkts
  • 전송: ifHCOutBroadcastPkts


  • RRDtool 명령



    대상



    이번은 Cisco1812J 라우터의 FastEthernet0의 인터페이스를 취득 대상으로 한다.
    아래의 snmpwalk의 실행 결과로부터 인덱스 번호는 1로 확인할 수 있다.

    snmpwalk
    % snmpwalk -v2c -c public 192.168.88.101 ifDescr
    IF-MIB::ifDescr.1 = STRING: FastEthernet0
    IF-MIB::ifDescr.2 = STRING: FastEthernet1
    IF-MIB::ifDescr.3 = STRING: BRI0
    IF-MIB::ifDescr.4 = STRING: BRI0:1
    IF-MIB::ifDescr.5 = STRING: BRI0:2
    IF-MIB::ifDescr.6 = STRING: FastEthernet2
    IF-MIB::ifDescr.7 = STRING: FastEthernet3
    IF-MIB::ifDescr.8 = STRING: FastEthernet4
    IF-MIB::ifDescr.9 = STRING: FastEthernet5
    IF-MIB::ifDescr.10 = STRING: FastEthernet6
    IF-MIB::ifDescr.11 = STRING: FastEthernet7
    IF-MIB::ifDescr.12 = STRING: FastEthernet8
    IF-MIB::ifDescr.13 = STRING: FastEthernet9
    IF-MIB::ifDescr.14 = STRING: Null0
    IF-MIB::ifDescr.15 = STRING: Vlan1
    IF-MIB::ifDescr.16 = STRING: BRI0-Physical
    IF-MIB::ifDescr.17 = STRING: BRI0-Signaling
    IF-MIB::ifDescr.18 = STRING: BRI0:1-Bearer Channel
    IF-MIB::ifDescr.19 = STRING: BRI0:2-Bearer Channel
    

    만들기



    RRD 형식의 데이터베이스를 작성합니다. 파일 이름은 UUID를 붙였습니다.
    30초 간격으로 한 달 동안 라우터의 각 카운터를 저장할 수 있습니다.

    create
    # 1447167590 => 2015-11-10 23:59:90 +0900
    # 1447167600 => 2015-11-11 00:00:00 +0900
    rrdtool create 286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd \
      --start 1447167590 \
      --step 30 \
      DS:InOctets:COUNTER:120:0:U \
      DS:OutOctets:COUNTER:120:0:U \
      DS:InUcastPkts:COUNTER:120:0:U \
      DS:OutUcastPkts:COUNTER:120:0:U \
      DS:InMulticastPkts:COUNTER:120:0:U \
      DS:OutMulticastPkts:COUNTER:120:0:U \
      DS:InBroadcastPkts:COUNTER:120:0:U \
      DS:OutBroadcastPkts:COUNTER:120:0:U \
      RRA:MAX:0.5:1:86400
    

    업데이트



    watch 명령으로 30초마다 snmpget으로 트래픽을 검색하고 업데이트합니다.

    update
    watch -n 30 rrdtool update 286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd N:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCInOctets.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCOutOctets.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCInUcastPkts.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCOutUcastPkts.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCInMulticastPkts.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCOutMulticastPkts.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCInBroadcastPkts.1`:\
    `snmpget -v2c -Oqv -c public 192.168.88.101 ifHCOutBroadcastPkts.1`
    

    그리기



    트래픽 및 패킷 수 그래프를 별도로 그립니다.
    수신 방향을 그래프의 양의 영역에, 송신 방향을 그래프의 부의 영역에 묘화 합니다.
    start와 end에, 전날~오늘까지의 범위 지정을 하고 있습니다.

    교통

    graph
    rrdtool graph 286ec4c0-4233-4460-b8ca-2a0393e5edb3-traffic.png \
      --start -1day \
      --end start+1day \
      --title "R1 Fa0 - Traffic" \
      --width 800 \
      --height 200 \
      --slope-mode \
      --rigid \
      --vertical-label "bits per second (bps)" \
      "DEF:a=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:InOctets:MAX" \
      "DEF:b=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:OutOctets:MAX" \
      "CDEF:bita=a,8,*" \
      "CDEF:bitb=b,8,*,-1,*" \
      "VDEF:maxa=bita,MAXIMUM" \
      "VDEF:maxb=bitb,MINIMUM" \
      "VDEF:avga=bita,AVERAGE" \
      "VDEF:avgb=bitb,AVERAGE" \
      "VDEF:lsta=bita,LAST" \
      "VDEF:lstb=bitb,LAST" \
      "HRULE:0#888888" \
      "AREA:bita#54EC48:Inbound " \
      "LINE1:bita#24BC14" \
      "GPRINT:avga:Average\\:%8.1lf %sbps" \
      "GPRINT:maxa:Maximum\\:%8.1lf %sbps" \
      "GPRINT:lsta:Current\\:%8.1lf %sbps\\n" \
      "AREA:bitb#48C4EC:Outbound" \
      "LINE1:bitb#1598C3" \
      "GPRINT:avgb:Average\\:%8.1lf %sbps" \
      "GPRINT:maxb:Maximum\\:%8.1lf %sbps" \
      "GPRINT:lstb:Current\\:%8.1lf %sbps\\n"
    

    패킷 수

    graph
    rrdtool graph 286ec4c0-4233-4460-b8ca-2a0393e5edb3-packet.png \
      --start  \
      --start -1day \
      --end start+1day \
      --title "R1 Fa0 - Packets" \
      --width 800 \
      --height 200 \
      --slope-mode \
      --rigid \
      --vertical-label "packets per second (pps)" \
      "DEF:a=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:InUcastPkts:MAX" \
      "DEF:b=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:OutUcastPkts:MAX" \
      "DEF:c=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:InMulticastPkts:MAX" \
      "DEF:d=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:OutMulticastPkts:MAX" \
      "DEF:e=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:InBroadcastPkts:MAX" \
      "DEF:f=286ec4c0-4233-4460-b8ca-2a0393e5edb3.rrd:OutBroadcastPkts:MAX" \
      "CDEF:bita=a" \
      "CDEF:bitb=b,-1,*" \
      "CDEF:bitc=c" \
      "CDEF:bitd=d,-1,*" \
      "CDEF:bite=e" \
      "CDEF:bitf=f,-1,*" \
      "CDEF:ace=bita,bitc,+,bite,+" \
      "CDEF:bdf=bitb,bitd,+,bitf,+" \
      "VDEF:maxa=bita,MAXIMUM" \
      "VDEF:maxb=bitb,MINIMUM" \
      "VDEF:maxc=bitc,MAXIMUM" \
      "VDEF:maxd=bitd,MINIMUM" \
      "VDEF:maxe=bite,MAXIMUM" \
      "VDEF:maxf=bitf,MINIMUM" \
      "VDEF:maxace=ace,MAXIMUM" \
      "VDEF:maxbdf=bdf,MINIMUM" \
      "VDEF:avga=bita,AVERAGE" \
      "VDEF:avgb=bitb,AVERAGE" \
      "VDEF:avgc=bitc,AVERAGE" \
      "VDEF:avgd=bitd,AVERAGE" \
      "VDEF:avge=bite,AVERAGE" \
      "VDEF:avgf=bitf,AVERAGE" \
      "VDEF:avgace=ace,AVERAGE" \
      "VDEF:avgbdf=bdf,AVERAGE" \
      "VDEF:lsta=bita,LAST" \
      "VDEF:lstb=bitb,LAST" \
      "VDEF:lstc=bitc,LAST" \
      "VDEF:lstd=bitd,LAST" \
      "VDEF:lste=bite,LAST" \
      "VDEF:lstf=bitf,LAST" \
      "VDEF:lstace=ace,LAST" \
      "VDEF:lstbdf=bdf,LAST" \
      "HRULE:0#888888" \
      \
      "AREA:bita#54EC48:Unicast   Packets In " \
      "GPRINT:avga:Average\\:%8.1lf %spps" \
      "GPRINT:maxa:Maximum\\:%8.1lf %spps" \
      "GPRINT:lsta:Current\\:%8.1lf %spps\\n" \
      "AREA:bitc#7648EC:Multicast Packets In :STACK" \
      "GPRINT:avgc:Average\\:%8.1lf %spps" \
      "GPRINT:maxc:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstc:Current\\:%8.1lf %spps\\n" \
      "AREA:bite#DE48EC:Broadcast Packets In :STACK" \
      "GPRINT:avgc:Average\\:%8.1lf %spps" \
      "GPRINT:maxc:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstc:Current\\:%8.1lf %spps\\n" \
      "LINE1:bita#24BC14" \
      "LINE1:bitc#4D18E4::STACK" \
      "LINE1:bite#B415C7::STACK" \
      "COMMENT:  Total     Packets In " \
      "GPRINT:avgace:Average\\:%8.1lf %spps" \
      "GPRINT:maxace:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstace:Current\\:%8.1lf %spps\\n" \
      "COMMENT: \\n" \
      \
      "AREA:bitb#48C4EC:Unicast   Packets Out" \
      "GPRINT:avgb:Average\\:%8.1lf %spps" \
      "GPRINT:maxb:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstb:Current\\:%8.1lf %spps\\n" \
      "AREA:bitd#EA644A:Multicast Packets Out:STACK" \
      "GPRINT:avgd:Average\\:%8.1lf %spps" \
      "GPRINT:maxd:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstd:Current\\:%8.1lf %spps\\n" \
      "AREA:bitf#EC9D48:Broadcast Packets Out:STACK" \
      "GPRINT:avgf:Average\\:%8.1lf %spps" \
      "GPRINT:maxf:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstf:Current\\:%8.1lf %spps\\n" \
      "LINE1:bitb#1598C3" \
      "LINE1:bitd#CC3118::STACK" \
      "LINE1:bitf#CC7016::STACK" \
      "COMMENT:  Total     Packets Out" \
      "GPRINT:avgbdf:Average\\:%8.1lf %spps" \
      "GPRINT:maxbdf:Maximum\\:%8.1lf %spps" \
      "GPRINT:lstbdf:Current\\:%8.1lf %spps\\n"
    

    좋은 웹페이지 즐겨찾기