LoginSignup
0
0

More than 3 years have passed since last update.

netstatで通信の接続状況を定期監視し可視化

Last updated at Posted at 2020-04-19

はじめに

以前投稿した「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に取り込み

tsv.PNG

ビボットテーブルで集計し、折れ線グラフにする

下図のように、ビボットテーブルのフィールドを設定し、集計結果を基にグラフ化します。
グラフ.PNG

今回のサンプル例は、C# HttpClientのマルチスレッド・プログラムで某サイトにアクセスした結果です。一気に600ポート消費しています。その後、プログラムを停止し消費ポート数が減っていくのが分かります。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0