Linuxのネットワーク統計

Linuxのネットワーク統計

Linuxシステムでネットワーク統計を収集するための小さなスクリプトを作成しようとしています。私ができる方法はありますか?

私が望むのは、現在のネットワークスループットのリアルタイム統計です。私は数冊の本を読んで、これが/proc/net/dev役に立つことがわかりました。内容を分析して現在のネットワーク速度を把握することができました。これが実現可能で信頼できるアプローチですか? itrafやiftopのようなパッケージは、速度の向上と減速をどのように計算しますか?

答え1

はい、/proc/net/devこれは一般的な方法です。/sys/class/net/eth0/statisticsより簡単な場合は、そこからファイルを使用することもできます。

または、その他のユーティリティifdataこの情報を取得できるスクリプトが含まれています。たとえば、print( -sib) と-sob() のバイト数を出力するには、次のようにします。

$ ifdata -sib -sob eth0
48115944587
71982675360

出力順序はフラグ順序と同じです(例:48...入力と71...出力)。

また、最後のビット/秒も計算します(sleep 1デフォルトでは次のことを行います)。

$ ifdata -bips -bops eth0
1148
1755

答え2

あなたはそれに精通していますかsar

可能なすべてのネットワーク統計を取得しようとするsar -n ALL場合、または各ネットワークデバイスの1秒あたりのrxおよびtx統計が必要な場合は、次のようにします。

 sar -n DEV 1

たとえば、eth0のrxとtxの5秒平均を取得するには、次のようにします。

sar -n DEV 1 5 | grep -i eth0 | tail -n1 | awk '{print $5, $6}'

答え3

過去には、出力を使用してifconfigスループット統計を収集し、それをGraphiteに記録しました。各インターフェイスには、スループットをバイト単位で計算する RX および TX カウンタがあります。 ifconfigを定期的にポーリングし、現在の値と以前の値の違いを画面またはファイルに書き込むスクリプトを作成します。

eth0      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:d3  
          inet addr:10.100.3.26  Bcast:10.100.3.31  Mask:255.255.255.248
          inet6 addr: fe80::20c:29ff:fecf:12d3/64 Scope:Link
          inet6 addr: 2001:xxx:7927:3::26/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:160523475 errors:0 dropped:921 overruns:0 frame:0
          TX packets:106097000 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2912933876 (2.7 GiB)  TX bytes:3734512667 (3.4 GiB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:dd  
          inet addr:10.100.0.1  Bcast:10.100.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fecf:12dd/64 Scope:Link
          inet6 addr: 2001:xxx:7927::1/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:92858590 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142257564 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1849495529 (1.7 GiB)  TX bytes:389856127 (371.7 MiB)

eth2      Link encap:Ethernet  HWaddr 00:0c:29:cf:12:e7  
          inet addr:10.100.4.1  Bcast:10.100.4.255  Mask:255.255.255.0
          inet6 addr: 2001:xxx:7927:4::1/64 Scope:Global
          inet6 addr: fe80::20c:29ff:fecf:12e7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10951337 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16448597 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1437098401 (1.3 GiB)  TX bytes:1634328371 (1.5 GiB)

スクリプトは次の場所にあります。https://gist.github.com/MerijntjeTak/1cddb08d191045e66a9c、たぶんそれからインスピレーションを得ることができます。

関連情報