검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/모니터링
참조 원문 : CentOS / RHEL: Install vnStat Network Traffic Monitor To Keep a Log Of Daily Traffic
관련 글(그래픽 파일 출력 및 PHP 프론트엔드 소개 포함) : Monitor your Bandwidth on Linux with vnstat

  vnStat은 커맨드 라인 기반의 네트워크 트래픽 모니터링 프로그램으로 선택한 인터페이스의 시간별, 일별, 월별 네트워크 트래픽을 기록할 수 있습니다. 하지만 패킷 스니퍼가 아니며 proc 파일시스템의 데이터로 트래픽 정보를 분석하기 때문에 사용에 root 권한이 없이도 사용할 수 있습니다.

  설치는 배포판에 따라 yum이나 apt-get으로 쉽게 설치할 수 있습니다. 다만 레드햇 계열의 경우 EPEL 레포지터리를 추가해야 합니다.

설정
  설정 파일은 /etc/vnstat.conf이며 안에 설정별로 주석이 있습니다. 레드햇 계열이라면 추가적인 설정 파일로 /etc/sysconfig/vnstat 파일이 있습니다만 정확한 용도는 모르겠군요. Init 스크립트에서 사용하나 싶어서 확인해봤지만 그것도 아니었습니다.

  또한 레드햇 계열인 경우 설치 시 vnstat 계정이 생성됩니다. 그리고 이 계정의 쉘을 /bin/bash로 바꿔줘야 합니다.
# chsh -s /bin/bash vnstat
  그리고 역시 레드햇 계열인 경우 runuser 명령어로 대상 인터페이스의 DB도 생성해야 합니다. 모니터링 대상 인터페이스마다 한 번씩 실행합니다.
# runuser -l vnstat -g vnstat -c '/usr/bin/vnstat -u -i eth0'
  이제 vnstat의 쉘을 다시 원래대로 바꿉니다.
# chsh -s /sbin/nologin vnstat

vnstat 서비스 시작
  chkconfig 명령어를 사용해서 부팅 때 서비스를 시작하도록 합니다.
# chkconfig vnstat on
  그 외에 서비스의 시작/중지/재시작/상태 출력 방법은 다른 서비스들과 동일합니다.
# service vnstat start
# service vnstat stop
# service vnstat restart
# service vnstat status

사용 방법
  그냥 실행하면 설정 파일에서 정한 인터페이스를 모니터링 합니다. -i 옵션을 사용하면 인터페이스를 선택할 수 있습니다.
# vnstat
Database updated: Fri Jul  5 00:26:03 2013

   eth0 since 07/05/13

          rx:  67.23 MiB      tx:  3.08 MiB      total:  70.31 MiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Jul '13     67.23 MiB |    3.08 MiB |   70.31 MiB |    1.66 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       516 MiB |      23 MiB |     539 MiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today     67.23 MiB |    3.08 MiB |   70.31 MiB |  368.50 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated      3.62 GiB |     166 MiB |    3.79 GiB |
  -d 옵션으로 일별, -h 옵션으로 시간별, -m 옵션으로 월별, -w로 주별 현황을 볼 수 있습니다. 설치 당일 실행했더니 위와 마찬가지로 별 내용이 없군요. -t 옵션을 추가하면 해당 단위별 상위 10위를 볼 수 있습니다.
# vnstat -d

 eth0  /  daily

         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      07/05/13     67.23 MiB |    3.08 MiB |   70.31 MiB |  368.50 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated      3.62 GiB |     166 MiB |    3.79 GiB |
  결과를 짧은 형태로 출력할 때는 -s 옵션을 사용합니다.
# vnstat -i eth0 -s

                      rx      /      tx      /     total    /   estimated
 eth0:
       Jul '13       232 KiB  /      69 KiB  /     301 KiB  /       0 KiB
     yesterday       216 KiB  /      64 KiB  /     280 KiB
         today        16 KiB  /       5 KiB  /      21 KiB  /      --   
  5초 동안의 평균 트래픽을 보려면 -tr 옵션을 사용합니다. 뒤에 숫자를 지정하면 5초 대신 지정한 시간 동안의 평균을 계산합니다.
# vnstat -i eth0 -tr
538 packets sampled in 5 seconds   
Traffic average for eth0

      rx       508.80 kbit/s            60 packets/s
      tx        38.40 kbit/s            47 packets/s
  전송 속도를 실시간으로 모니터링하고 Ctrl+C로 종료했을 때 초당 바이트와 패킷의 최대/평균/최소 전송량 및 총 모니터링 시간을 보려면 -l 옵션을 사용합니다.
# vnstat -i eth0 -l
Monitoring eth0...    (press CTRL-C to stop)

   rx:        0 kbit/s     1 p/s          tx:        0 kbit/s     2 p/s^C


 eth0  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------
  bytes                        5 KiB  |           2 KiB
--------------------------------------+------------------
          max              16 kbit/s  |        4 kbit/s
      average            3.08 kbit/s  |     1.23 kbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                         19  |              24
--------------------------------------+------------------
          max                  7 p/s  |           7 p/s
      average                  1 p/s  |           1 p/s
          min                  0 p/s  |           0 p/s
--------------------------------------+------------------
  time                    13 seconds
2013/07/05 00:39 2013/07/05 00:39