中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【CentOS8】ネットワークトラフィックを調査する。

1.概要

以前構築したサーバーを稼働してからネットワークが遅くなった
とクレームのようなことを言われたので、仕方ないので調査してみました。
テレワーク開始時期と被るのでどうせそれが原因だろう・・・と思ったのですが
構築したサーバーが原因ではないというエビデンスを出さないと納得しなそうだったので
ネットワークトラフィックを調べて提出することにしました。

【原因ではない】ということを証明しなければいけないと
なんとも効率の悪い話ですが、これも仕事だと割り切ってやるしかないですね。。。

2.調査方法

CentOS8で構築したサーバーだったので、今回は【sysstat】パッケージを使って調査していきます。
最終的にはSVG形式にして視覚的にも見やすくしてみようと思います。

3.インストール

今回は直接rpmパッケージをダウンロードします。

[root@localhost /]# wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/sysstat-11.7.3-2.el8.x86_64.rpm
--2020-07-06 08:15:51--  http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/sysstat-11.7.3-2.el8.x86_64.rpm
mirror.centos.org (mirror.centos.org) をDNSに問いあわせています... 54.169.224.98, 2604:1380:3000:2800::1
mirror.centos.org (mirror.centos.org)|54.169.224.98|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 435888 (426K) [application/x-rpm]
`sysstat-11.7.3-2.el8.x86_64.rpm' に保存中

sysstat-11.7.3-2.el8.x86_64.rpm      100%[======================================================================>] 425.67K  1.35MB/s 時間 0.3s

2020-07-06 08:15:52 (1.35 MB/s) - `sysstat-11.7.3-2.el8.x86_64.rpm' へ保存完了 [435888/435888]


ダウンロードが完了したらインストール

[root@localhost /]# rpm -ivh sysstat-11.7.3-2.el8.x86_64.rpm
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:sysstat-11.7.3-2.el8             ################################# [100%]


これでインストールは完了です。

4.有効にする

とりあえず【sar】コマンドを実行してみます。

[root@localhost /]# sar
/var/log/sa/sa06 を開けません: そのようなファイルやディレクトリはありません
データ収集が有効になっているかを確認してください

ということなので【sysstat】の状態を確認してみます。

[root@localhost /]# systemctl status sysstat
● sysstat.service - Resets System Activity Logs
   Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; vendor preset: enabled)
   Active: inactive (dead)


無効状態なので有効にします。
自動起動するようにして

[root@localhost /]# systemctl enable sysstat


起動させます。

[root@localhost /]# systemctl start sysstat

5.確認する

早速コマンドで確認してみます。

[root@localhost /]# sar -n DEV
Linux 4.18.0-80.el8.x86_64 (localhost.localdomain)      2020年07月06日  _x86_64_        (4 CPU)

08:35:22     LINUX RESTART      (4 CPU)

08時40分00秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
08時50分00秒      eno1    401.42    296.22    435.50     51.56      0.00      0.00      0.23      0.36
08時50分00秒      eno2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08時50分00秒        lo     42.12     42.12     33.61     33.61      0.00      0.00      0.00      0.00
平均値:       eno1    401.42    296.22    435.50     51.56      0.00      0.00      0.23      0.36
平均値:       eno2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均値:         lo     42.12     42.12     33.61     33.61      0.00      0.00      0.00      0.00


内容の内訳ですが

rxpck/s 受信パケット/1秒
txpck/s 送信パケット/1秒
rxkB/s 受信kB/1秒
txkB/s 送信kB/1秒

となっています。

デフォルトだと10分間隔でデータが吐き出されます。

6.データ取得間隔を変更する

データ取得間隔を1分間に変更します。

[root@localhost /]# vi /usr/lib/systemd/system/sysstat-collect.timer
# /usr/lib/systemd/system/sysstat-collect.timer
# (C) 2014 Tomasz Torcz 
#
# sysstat-11.7.3 systemd unit file:
#        Activates activity collector every 10 minutes

[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
#OnCalendar=*:00/10
OnCalendar=*:00/1

[Install]
WantedBy=sysstat.service


変更を反映させます。

[root@localhost /]# systemctl daemon-reload


これで1分毎にデータを取得できるようになりました。

7.SVG形式で吐き出す

CentOS8からSVG形式でデータを出力できるようになったみたいです。
せっかくなので色々とオプション指定してやってみます。

[root@localhost /]# sadf -T -g  /var/log/sa/sa06 -- -n DEV -s 14:10:00 -e 14:20:00 > test.svg
-T 時刻をUTCからローカル時間に変更
-g SVG形式で出力
-- これ以降はsarコマンドのオプションとして認識される
-n DEV ネットワーク情報を取得
-s ログを抽出する時間(開始)
-e ログを抽出する時間(終了)

ファイル名は【sa06】となっていますが
これは*月6日のデータであるということを意味しています。
デフォルトでは28日間データをためる設定になっています。


SVGをブラウザで開くとこんな感じになります。

f:id:tsu--kun:20200706184646p:plain