NIC インターフェイスを特定して細かいトラフィックを計測するために、 pmacct を使ってみました
tcpdump で集計するよりめっちゃ楽でした。
ともかく使う
apt install pmacct
で環境が揃います。yumでも大丈夫かな
$ sudo apt install -y pmacct
実行
まず実行してみます
$ sudo pmacctd -P print -r 10 -i eth0 -c src_host,dst_host,dst_port
INFO ( default/core ): Reading configuration from cmdline.
OK ( default/core ): link type is: 1
INFO ( default/print ): cache entries=16411 base cache memory=53434216 bytes
SRC_IP DST_IP DST_PORT PACKETS BYTES
INFO ( default/print ): *** Purging cache - START (PID: 6790) ***
XX.XX.XX.96 YY.YY.YY.107 61645 6 712
YY.YY.YY.107 XX.XX.XX.96 22 3 120
INFO ( default/print ): *** Purging cache - END (PID: 6790, QN: 2/2, ET: 0) ***
^CINFO ( default/print ): *** Purging cache - START (PID: 6789) ***
XX.XX.XX.96 YY.YY.YY.107 61645 4 848
YY.YY.YY.107 XX.XX.XX.96 22 1 40
INFO ( default/print ): *** Purging cache - END (PID: 6789, QN: 2/2, ET: 0) ***
INFO ( default/core ): OK, Exiting ...
16 packets received by filter
0 packets dropped by kernel
それっぽい感じで表示されました
上記コマンドラインの引数の意味はそれぞれ以下の通りです
- 出力先 = print
- 対象I/F = eth0
- 集計期間 = 10秒毎
- 集計単位 = src_host,dst_host,dst_port の3要素でグルーピング
pmacctのいいところ
tcpdumpで直接計測しようと思いましたが、ちょっと大変そうだったところに見つけることができよかったです
- 標準出力といったCLI構成でも使える
- DBにも保存できる
- 時間やホスト・ポート等の条件でまとめ上げてくれる
- tcpdump互換の表記で集計対象(もしくは対象外)を設定できる
-
$ sudo pmacctd -P print -r 10 -i eth0 -c src_host,dst_host,dst_port not port 22
こんな感じで port=22 なトラヒックは除外できる
-
あとがき
低トラヒック用途向け新料金体系の調査を行うためにトラヒックモニタリングのツールを探してました