Aplikasi Anda mungkin mengirim paket ke nomor port UDP atau TCP tertentu atau ke alamat IP tertentu.
Karena itu Anda dapat menggunakan sesuatu seperti TCPdump untuk menangkap lalu lintas itu.
TCPdump tidak memberi Anda statistik waktu nyata yang Anda inginkan, tetapi Anda dapat memberi makan keluarannya ke sesuatu yang berfungsi (saya akan mencoba memperbarui jawaban ini dengan jawaban nanti).
Memperbarui:
$ sudo tcpdump -i eth1 -l -e -n | ./netbps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:36:53 2143.33 Bps
11:37:03 1995.99 Bps
11:37:13 2008.35 Bps
11:37:23 1999.97 Bps
11:37:33 2083.32 Bps
131 packets captured
131 packets received by filter
0 packets dropped by kernel
Saya menyela setelah satu menit dengan menekan Ctrl + C.
Anda harus menambahkan ekspresi filter yang sesuai di akhir tcpdump
perintah untuk hanya menyertakan lalu lintas yang dihasilkan oleh aplikasi Anda (mis. port 123
)
Programnya netbps
adalah ini:
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;
my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];
STDOUT->autoflush(1);
while (<>) {
if (/ length (\d+):/) {
$bytes_this_interval += $1;
my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
if ($elapsed_seconds > $reporting_interval) {
my $bps = $bytes_this_interval / $elapsed_seconds;
printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
$start_time = [Time::HiRes::gettimeofday()];
$bytes_this_interval = 0;
}
}
}
Itu hanya contoh, sesuaikan dengan selera.
vnstat -tr
Penggunaan seperti di bawah ini dari folder yang sama:
Untuk memeriksa pengepak per antarmuka:
./netpps.sh eth0
Untuk memeriksa kecepatan per antarmuka:
./netspeed.sh eth0
Ukur Paket per Detik pada Interface netpps.sh sebagai nama file
Ukur Bandwidth Jaringan pada Antarmuka netspeed.sh sebagai nama file
Silakan merujuk situs ini untuk info lebih lanjut http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html
sumber
Cara termudah untuk digunakan dan termudah untuk mengontrol output dan mengarahkan ke file untuk pencatatan terus menerus:
Mungkin dilengkapi dengan sebagian besar distribusi linux, dan dapat diinstal dengan minuman di mac
sumber
Saya pikir Anda dapat menggunakan antarmuka proc untuk mendapatkan informasi yang Anda butuhkan. Saya membuat skrip shell kecil ini bernama rt_traf.sh:
Ini akan mencetak oktet masuk dan keluar yang dipisahkan oleh tab. Oktet dikalikan dengan 8 akan memberi Anda bit / detik dan kemudian dibagi 10 ^ 6 akan memberi Anda megabit / detik. Tentu saja Anda dapat menambahkan ini ke skrip shell untuk memformat output sesuai keinginan Anda. Anda dapat menyebutnya dengan PID aplikasi Anda seperti
./rt_traf.sh <PID>
yang akan memberi Anda pembacaan instan aplikasi Anda sejak startup. Untuk menonton statistik waktu nyata per detik Anda dapat membungkus skrip shell dalam perintah arloji:The
-n
parameter dapat disesuaikan semua jalan ke persepuluh detik. Untuk melakukan perhitungan dari waktu ke waktu saya akan melakukan sesuatu seperti ini:Sekali lagi matematika dapat disesuaikan dengan ukuran / waktu yang Anda butuhkan. Bukan solusi yang paling elegan atau menyusut dibungkus tetapi harus bekerja dalam keadaan darurat.
sumber
/proc/<pid>/net/netstat
mengembalikan data yang sama denganproc/net/netstat
, yaitu. Anda mendapatkan data yang sama untuk setiap / semua proses.Saya hanya perlu mengukur seberapa banyak lalu lintas mysql masuk dan keluar pada sistem lama di mana perl tidak berfungsi dengan baik, jadi saya tidak bisa menahan penulisan beberapa baris awk yang melayani tujuan yang sama untuk mengukur total lalu lintas yang dilihat oleh tcpdump:
Dan jika Anda lebih suka one-liners, ini satu untuk Anda:
sumber
else
Pernyataan harus dihapus jika garis akan dilewati, dansum
tidak akan akurat.tcpdump -l -e -n port 3306 | awk '{t=substr($1,0,8);n=substr($9,0,length($9)-1);if(t!=pt){print t,sum;sum=0;};sum+=n;pt=t;}
Per aplikasi dapat dilakukan dengan aturan firewall menggunakan xtables dan modifikasi di bawah ini.
Ini tidak menjawab pertanyaan "per aplikasi" tetapi hanya pertanyaan "per antarmuka".
Di bawah ini adalah skrip yang berfungsi pada sebagian besar perute Linux tertanam seperti yang kompatibel dengan Ubiquiti dan OpenWRT dan mendapatkan perinciannya dari / proc / net / dev.
(Dan mudah diubah ke paket dll.)
Salin hal di atas ke clipboard Anda dan kemudian dalam sesi terminal di router Anda:
lalu: Ctrl + V (atau klik kanan / Tempel)
lalu: Ctrl + D
Anda juga dapat menempelkannya di notepad, lalu ulangi saja di atas jika Anda perlu mengeditnya - tidak semua perute tertanam memiliki editor! Pastikan Anda menyalin semuanya dari # di atas hingga selesai; di dasar.
Contoh netpps di atas adalah BTW yang bagus - tetapi tidak semua perangkat memiliki sistem file mount / sys. Anda mungkin juga harus mengubah / bin / bash ke / bin / sh atau sebaliknya.
Sumber: https://gist.github.com/dagelf/ab2bad26ce96fa8d79b0834cd8cab549
sumber