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、たぶんそれからインスピレーションを得ることができます。