كيف يمكنني الحصول على الشبكة الحالية واجهة الإنتاجية الإحصاءات على Linux/UNIX ؟ [مغلقة]
-
09-09-2019 - |
سؤال
أدوات مثل MRTG توفر الإنتاجية شبكة / عرض النطاق الترددي الرسوم البيانية للشبكة الحالية على استخدام واجهات محددة ، مثل eth0.كيف يمكنني إرجاع هذه المعلومات في سطر الأوامر في لينكس linux/UNIX ؟
ويفضل أن يكون هذا سيكون بدون تثبيت أي شيء بخلاف ما هو متاح على نظام القياسية.
المحلول
يمكنك تحليل إخراج ifconfig
نصائح أخرى
iftop does for network usage what top(1) does for CPU usage
-- http://www.ex-parrot.com/~pdw/iftop/
لا أعرف كيف هو "قياسي" IFTOP هو، لكنني كنت قادرا على تثبيته yum install iftop
على فيدورا.
حصلت SAR؟ من المرجح نعم إذا كنت تستخدم Rhel / centos.
لا حاجة إلى الثنائيات Priv، Dorky Binaries، البرامج النصية المخربلة، libpcap، إلخ.
$ sar -n DEV 1 3
Linux 2.6.18-194.el5 (localhost.localdomain) 10/27/2010
02:40:56 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:57 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:57 PM eth0 10700.00 1705.05 15860765.66 124250.51 0.00 0.00 0.00
02:40:57 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:57 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:58 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:58 PM eth0 8051.00 1438.00 11849206.00 105356.00 0.00 0.00 0.00
02:40:58 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:58 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:59 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:59 PM eth0 6093.00 1135.00 8970988.00 82942.00 0.00 0.00 0.00
02:40:59 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 8273.24 1425.08 12214833.44 104115.72 0.00 0.00 0.00
Average: eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
كتبت هذا الغبي السيناريو منذ زمن طويل ، فإنه يعتمد على شيء سوى Perl و لينكس≥2.6:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday usleep);
my $dev = @ARGV ? shift : 'eth0';
my $dir = "/sys/class/net/$dev/statistics";
my %stats = do {
opendir +(my $dh), $dir;
local @_ = readdir $dh;
closedir $dh;
map +($_, []), grep !/^\.\.?$/, @_;
};
if (-t STDOUT) {
while (1) {
print "\033[H\033[J", run();
my ($time, $us) = gettimeofday();
my ($sec, $min, $hour) = localtime $time;
{
local $| = 1;
printf '%-31.31s: %02d:%02d:%02d.%06d%8s%8s%8s%8s',
$dev, $hour, $min, $sec, $us, qw(1s 5s 15s 60s)
}
usleep($us ? 1000000 - $us : 1000000);
}
}
else {print run()}
sub run {
map {
chomp (my ($stat) = slurp("$dir/$_"));
my $line = sprintf '%-31.31s:%16.16s', $_, $stat;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[0]) / 1)
if @{$stats{$_}} > 0;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[4]) / 5)
if @{$stats{$_}} > 4;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[14]) / 15)
if @{$stats{$_}} > 14;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[59]) / 60)
if @{$stats{$_}} > 59;
unshift @{$stats{$_}}, $stat;
pop @{$stats{$_}} if @{$stats{$_}} > 60;
"$line\n";
} sort keys %stats;
}
sub slurp {
local @ARGV = @_;
local @_ = <>;
@_;
}
يقرأ فقط من /sys/class/net/$dev/statistics
كل ثانية ، بطباعة الأرقام الحالية و متوسط معدل التغير:
$ ./net_stats.pl eth0
rx_bytes : 74457040115259 4369093 4797875 4206554 364088
rx_packets : 91215713193 23120 23502 23234 17616
...
tx_bytes : 90798990376725 8117924 7047762 7472650 319330
tx_packets : 93139479736 23401 22953 23216 23171
...
eth0 : 15:22:09.002216 1s 5s 15s 60s
^ current reading ^-------- averages ---------^
يمكنك تحليل / بروك / صافي / ديف.
nload. هي أداة رائعة لرصد عرض النطاق الترددي في الوقت الفعلي وتثبيتها بسهولة في Ubuntu أو Debian مع تثبيت Sudo Apt-احصل على تثبيت NLoad.
Device eth0 [10.10.10.5] (1/2):
=====================================================================================
Incoming:
. ...|
# ####|
.. |#| ... #####. .. Curr: 2.07 MBit/s
###.### #### #######|. . ## | Avg: 1.41 MBit/s
########|#########################. ### Min: 1.12 kBit/s
........ ################################### .### Max: 4.49 MBit/s
.##########. |###################################|##### Ttl: 1.94 GByte
Outgoing:
########## ########### ###########################
########## ########### ###########################
##########. ########### .###########################
########### ########### #############################
########### ###########..#############################
############ ##########################################
############ ##########################################
############ ########################################## Curr: 63.88 MBit/s
############ ########################################## Avg: 32.04 MBit/s
############ ########################################## Min: 0.00 Bit/s
############ ########################################## Max: 93.23 MBit/s
############## ########################################## Ttl: 2.49 GByte
أداة أخرى ممتازة هي iftop., ، أيضا الحصول على شقة بسهولة:
191Mb 381Mb 572Mb 763Mb 954Mb
└────────────┴──────────┴─────────────────────┴───────────┴──────────────────────
box4.local => box-2.local 91.0Mb 27.0Mb 15.1Mb
<= 1.59Mb 761kb 452kb
box4.local => box.local 560b 26.8kb 27.7kb
<= 880b 31.3kb 32.1kb
box4.local => userify.com 0b 11.4kb 8.01kb
<= 1.17kb 2.39kb 1.75kb
box4.local => b.resolvers.Level3.net 0b 58b 168b
<= 0b 83b 288b
box4.local => stackoverflow.com 0b 42b 21b
<= 0b 42b 21b
box4.local => 224.0.0.251 0b 0b 179b
<= 0b 0b 0b
224.0.0.251 => box-2.local 0b 0b 0b
<= 0b 0b 36b
224.0.0.251 => box.local 0b 0b 0b
<= 0b 0b 35b
─────────────────────────────────────────────────────────────────────────────────
TX: cum: 37.9MB peak: 91.0Mb rates: 91.0Mb 27.1Mb 15.2Mb
RX: 1.19MB 1.89Mb 1.59Mb 795kb 486kb
TOTAL: 39.1MB 92.6Mb 92.6Mb 27.9Mb 15.6Mb
لا تنسى المرافق الكلاسيكية والقوية على مرافق Netstat على كبار السن * Nix!
dstat
- يجمع بين VMSTAT، IOSTAT، IFSTAT، معلومات Netstat والمزيدiftop
- أداة عرض النطاق الترددي للشبكة مذهلة لتحليل ما يحدث حقا على ETHnetio
- يقيس صافي الإنتاجية للشبكة عبر TCP / IPinq
- CLI استكشاف الأخطاء وإصلاحها الأداة المساعدة التي تعرض معلومات عن التخزين، عادة ما يكون symmetrix. بشكل افتراضي، إرجاع Inq اسم الجهاز ومعرف Symmetrix و Symmetrix Lun والقدرة.send_arp
- يرسل بث ARP على جهاز الشبكة المحدد (الإعدادات الافتراضية إلى ETH0)، والإبلاغ عن تعيين عنوان IP القديم والجديد الجديد إلى عنوان MAC.EtherApe
- هي شاشة شبكة رسومية ل UNIX على غرار etherman. يتميز بطبقة رابط، أوضاع IP و TCP، فإنه يعرض نشاط الشبكة بيانيا.iptraf
- شاشة مراقبة مرور IP التي تظهر معلومات عن حركة مرور IP تمر عبر شبكتك.
المزيد من التفاصيل:http://felipeferreira.net/؟p=1194.
حصلت على سيناريو باش Quick'n'n'dirty آخر لذلك:
#!/bin/bash
IF=$1
if [ -z "$IF" ]; then
IF=`ls -1 /sys/class/net/ | head -1`
fi
RXPREV=-1
TXPREV=-1
echo "Listening $IF..."
while [ 1 == 1 ] ; do
RX=`cat /sys/class/net/${IF}/statistics/rx_bytes`
TX=`cat /sys/class/net/${IF}/statistics/tx_bytes`
if [ $RXPREV -ne -1 ] ; then
let BWRX=$RX-$RXPREV
let BWTX=$TX-$TXPREV
echo "Received: $BWRX B/s Sent: $BWTX B/s"
fi
RXPREV=$RX
TXPREV=$TX
sleep 1
done
انها تفكر في ذلك sleep 1
سوف تستمر في الواقع ثانية واحدة بالضبط، وهي ليست صحيحة، ولكن جيدة بما يكفي لتقييم عرض النطاق الترددي الخام.
شكرا ل /sys/class/net/<interface>
! :)
إلى جانب IFTOP و IPTRAF، تحقق أيضا:
bwm-ng
(مراقب النطاق الترددي الجيل القادم)
و / أو
cbm
(لون عرض النطاق الترددي)
المرجع: http://www.powercram.com/2010/01/standwidth-manitoring-tools-for-ubuntu.html.
إذا كنت ترغب فقط في الحصول على قيمة يمكنك استخدام بسيط قذيفة oneliner مثل هذا:
S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS
وسوف تظهر لك متوسط "تلقى بايت في الثانية" لمدة 10 ثانية (يمكنك تغيير الفترة المتغيرة S=10
المعلمة و يمكنك قياس تنتقل بت في الثانية بدلا من تلقى بت في الثانية باستخدام tx_bytes
بدلا من rx_bytes
).لا تنسى أن تغيير eth0
أن جهاز الشبكة الذي تريد مراقبة.
بالطبع أنت لا تقتصر على عرض متوسط معدل (كما ورد في إجابات أخرى ، وهناك غيرها من الأدوات التي سوف تظهر لك أجمل بكثير الإخراج), ولكن هذا الحل هو النصية بسهولة أن تفعل أشياء أخرى.
على سبيل المثال التالي شيل (تقسيمها إلى عدة خطوط على القراءة) سيتم تنفيذ offlineimap العملية فقط عند 5 دقائق سيرا على متوسط سرعة نقل قطرات أدناه 10kBPS (ويفترض عند بعض عرض النطاق الترددي تستغرق عملية التشطيبات):
#!/bin/sh
S=300; F=/sys/class/net/eth0/statistics/tx_bytes
BPS=999999
while [ $BPS -gt 10000 ]
do
X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))";
echo BPS is currently $BPS
done
offlineimap
علما بأن /sys/class/...
هو لينكس محددة (وهو موافق المرسل لم تختار linux
الوسم) و يحتاج غير قديمة النواة.قذيفة القانون نفسه هو /bin/sh متوافق (وذلك ليس فقط باش, ولكن داش وغيرها /bin/sh تطبيقات العمل) و /bin/sh هو الشيء الذي هو في الحقيقة دائما مثبتة.
انا يعجبني iptraf
ولكن ربما عليك تثبيته ويبدو أنه لا يتم الحفاظ عليه بنشاط بعد الآن.
أجد dstat لتكون جيدة جدا. يجب أن تكون مثبتة رغم ذلك. يمنحك طريقة مزيد من المعلومات مما تحتاج. سوف تعطيك Netstat معدلات الحزمة ولكن ليس Bandwith أيضا. netstat -s.
يمكنك استخدام IPERF إلى أداء الشبكة القياسية (أقصى سرعة ممكنة). انظر الروابط التالية للحصول على التفاصيل:
لم أستطع الحصول على برنامج نصي تحليل IFConfig للعمل بالنسبة لي على AMI، لذلك حصلت على هذا العمل الذي تم تطبيق حركة المرور المستلمة أكثر من 10 ثوان
date && rxstart=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && sleep 10 && rxend=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && difference=`expr $rxend - $rxstart` && echo "Received `expr $difference / 10` bytes per sec"
آسف، إنه رخيص للغاية وسيئت ولكنه يعمل!
ifconfig -a
ip -d link
ls -l /sys/class/net/ (physical and virtual devices)
route -n
إذا كنت تريد إخراج (IFConfig -a) بتنسيق JSON، يمكنك استخدامه هذه (بيثون)