netstat로 통신 연결 상태를 정기적으로 모니터링하고 시각화

소개



이전에 게시한 'netstat로 통신 연결 상태를 정기적으로 모니터링

필요한 것



  • Git for Windows (Git Bash 사용)
  • Microsoft Excel (그래프 그리기)

  • 모니터링 스크립트



    netstat_monitor.sh
    #!/bin/bash
    output_file=`date '+%Y%m%dT%H%M%S'`.tsv
    echo "output: ${output_file}"
    echo -e "datetime\tserver\tcount" > ${output_file}
    
    while :
    do
      date_now=`date '+%Y%m%dT%H%M%S'`
      netstat -an | egrep "ESTABLISHED|CLOSE_WAIT|TIME_WAIT" | awk '{print $3}' | sort | uniq -c | awk '{printf("%s\t%s\n",$2,$1)'} | sed "s/^/${date_now}\t/g" >> ${output_file}
      echo ${date_now}
    
      sleep 5
    done
    

    포트 번호를 잘라서 서버마다 카운트하는 경우는 awk '{print $3}' | sed "s/:[0-9]\+$//g" | sort |
    와 같이 하면 좋다고 생각합니다.

    Linux의 경우 awk '{print $3}'awk '{print $5}'로 설정합니다.

    실행 예
    $ ./netstat_monitor.sh
    output: 20200419T141531.tsv
    20200419T141531
    20200419T141537
    20200419T141542
    20200419T141547
    20200419T141552
    20200419T141557
    20200419T141603
    :
    
    停止するには[CTRL]+[C]
    

    Excel로 그래프화



    출력된 tsv 파일을 Excel로 가져와서 비봇 테이블에서 집계한 다음 선 그래프로 시각화합니다.

    Excel로 가져오기





    피벗 테이블로 집계하여 꺾은선형 차트로 만들기



    아래 그림과 같이 비봇 테이블의 필드를 설정하고 집계 결과를 기반으로 그래프화합니다.


    이번 샘플 예제는 C# HttpClient의 멀티스레드 프로그램으로 모 사이트에 액세스한 결과입니다. 단번에 600포트 소비하고 있습니다. 그 후, 프로그램을 정지해 소비 포트수가 줄어드는 것을 알 수 있습니다.

    참고문헌


  • TCP / IP 통신 상태를 확인하는 "netstat"명령 사용 (1/2)
  • 좋은 웹페이지 즐겨찾기