CentOS7 監控進程網絡流量工具安裝

CentOS7 監控進程網絡流量工具安裝

2017年06月02日 17:49:30 GoRustNeverStop 閱讀數:7230更多linux

我的分類: linux/unixubuntu

服務器在作測試的時候,須要監控網絡流量,用來了解在不一樣人數的時候服務器的網絡使用量。小程序

  咱們使用服務器環境是centos7,centos下一般使用iftop,或者nethogs來進行網絡流量監控。這2個工具都須要先安裝epel,由於這個庫一般操做系統是不自帶的。centos

  那麼就先安裝epel,使用的命令是:服務器

  rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm網絡

  在epel安裝成功以後,接下來咱們就能夠用yum安裝iftop和nethogs。dom

 

查看Linux每一個進程的流量和帶寬

 

 

 

原文 http://www.slashroot.in/find-network-traffic-and-bandwidth-usage-process-linux,譯者FJ. 請聯繫fj_wind(at)126.comssh

做爲一個系統管理員,有時候須要搞清楚一臺機器上的哪一個進程佔用了較高的網絡帶寬。若是沒有專用的工具,這並不是易事。在這篇文章中,咱們將要介紹這樣的一款工具。在此以前呢,咱們會盡可能採用其它方法來獲取某個進程佔用多少帶寬的相關信息。tcp

我建議讀者們也分享一些相似的命令行技巧或工具。工具

在Linux桌面上有許多的圖形用戶界面工具使用一些基於GUI的小程序來獲取這類信息,可是大多數都只給出了整個系統所消耗的總帶寬(沒有顯示單獨某個進程的狀況)。生產環境中的服務器不可能有基於GUI工具來獲取這些信息,所以咱們只會討論一些命令行工具或者技巧。

第一種方法是使用iptraf 或 iftop 來肯定發送流量最大的端口,而後從列表中找出哪一個進程運行在該端口之上。我屢次採用過這種方法,均達到了目的。

若是你剛據說 iftop 和 iptraf,我推薦你閱讀下面這篇文章,解釋了這兩種工具如何使用。

閱讀:Iptraf and Iftop command usage and examples

首先使用根據你使用的發行版選擇YUM 或者apt-get 安裝好iptraf 或 iptop。而後使用iptraf 命令找出流量使用狀況和接口、端口信息。iptraf 會給出以下所示的輸出。結果給出了兩樣東西,源地址和網絡端口號。在第一次出現的welcome屏幕上按下Enter,就能夠看見具體的選項了。一旦你選擇了在全部接口之上的「IP traffic monitor」選項,你會看到以下的輸出結果。

 
  1. IPTraf

  2. l TCP Connections (Source Host:Port) qqqqqqqqqq Packets qqq Bytes Flags Iface k

  3. xl192.168.190.129:22 > 462 95456 -PA- eth0 x

  4. xm192.168.190.1:49946 > 238 11688 --A- eth0 x

  5. x x

  6. x x

  7. x x

  8. x x

  9. x x

  10. x x

  11. x x

  12. x x

  13. x x

  14. x x

  15. m TCP: 1 entries qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq Active qj

  16. lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk

  17. x x

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

默認狀況下,它會將connections按照每種usage排好序。我這兒能夠很容易的找出哪一個進程在使用22端口(固然是ssh)。你也可使用netstat 命令來找到運行在這個端口上的進程。

 
  1. root@ubuntu2:~# netstat -tunp | grep 22

  2. tcp 0 64 192.168.190.129:22 192.168.190.1:49946 ESTABLISHED 1104/sshd: ubuntu [

  3. root@ubuntu2:~#

  • 1
  • 2
  • 3

或者,你也可使用lsof 命令來找到運行在該端口的進程。

 
  1. root@ubuntu2:~# lsof -i:22

  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

  3. sshd 671 root 3u IPv4 8584 0t0 TCP *:ssh (LISTEN)

  4. sshd 671 root 4u IPv6 8595 0t0 TCP *:ssh (LISTEN)

  5. sshd 1104 root 3u IPv4 9170 0t0 TCP 192.168.190.129:ssh->192.168.190.1:49946 (ESTABLISHED)

  6. sshd 1120 ubuntu 3u IPv4 9170 0t0 TCP 192.168.190.129:ssh->192.168.190.1:49946 (ESTABLISHED)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

你還可使用和iptraf 相似的工具iftop ,來找出流量從哪些端口發送出去的。

 
  1. root@ubuntu2:~# iftop -P

  2. 12.5kb 25.0kb 37.5kb 50.0kb 62.5kb

  3. mqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqq

  4. 192.168.190.129:ssh => 192.168.190.1:49946 928b 1.13kb 1.67kb

  5. <= 160b 160b 192b

  6. 192.168.190.129:56386 => 192.168.190.2:domain 0b 0b 30b

  7. <= 0b 0b 30b

  8. 192.168.190.129:51953 => 192.168.190.2:domain 0b 0b 29b

  9. <= 0b 0b 29b

  10. 192.168.190.129:53003 => 192.168.190.2:domain 0b 0b 29b

  11. <= 0b 0b 29b

  12.  
  13. qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

  14. TX: cum: 4.40kB peak: 3.75kb rates: 928b 1.13kb 1.76kb

  15. RX: 698B 1.16kb 160b 160b 279b

  16. TOTAL: 5.08kB 4.83kb 1.06kb 1.29kb 2.03kb

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

咱們使用的-P 選項會在iftop 的輸出結果中開啓端口顯示。咱們要找到運行在該端口的進程,那麼你能夠用netstat 或者lsof 來找到相應的進程。

除了iftop 和 iptraf,你也可使用jnettop。在ubuntu上能夠用apt-get install jnettop命令很容易的安裝好。裝好以後,它能夠顯示出跟咱們使用iptraf 和 iftop類似的結果。輸出結果以下:

 
  1. run 0:00:41 device eth0 pkt[f]ilter: none .

  2. [c]ntfilter: on [b]ps=bytes/s [l]ocal aggr: none [r]emote aggr: none

  3. [q]uit [h]elp [s]orting [p]ackets [.] pause [0]-[9] switch device

  4. LOCAL <-> REMOTE TXBPS RXBPS TOTALBPS

  5. (IP) PORT PROTO (IP) PORT TX RX TOTAL

  6. 192.168.190.129 <-> 192.168.190.1 252b/s 60b/s 312b/s

  7. 192.168.190.129 22 TCP 192.168.190.1 51394 11.4K 2.72K 14.1K

  8.  
  9. UNKNOWNv4 <-> UNKNOWNv4 14b/s 20b/s 34b/s

  10. 0.0.0.0 0 ARP 0.0.0.0 0 42b 60b 102b

  11. qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

  12. TOTAL 266b/s 80b/s 346b/s

  13. 11.7K 3.09K 14.8K

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

jnettop 命令在你但願監測一個特定的source和destination之間的流量的時候頗有用。它給出了咱們須要找到的那個進程所使用的端口信息。

不過還有專門爲此目的設計的更好的工具。這就是nethogs。它和根據網絡用途將進程排好序的top 命令很相似,很容易安裝和使用。 
若是你是在ReadHat/Centos系統上運行,那麼你須要安裝EPEL yum repo來安裝nethogs。對Ubuntu用戶來講,只須要用apt-get搞定。

root@ubuntu2:~# apt-get install nethogs

從nethogs 的man幫助文檔上,你能夠找到它的描述

DESCRIPTION

NetHogs is a small ‘net top’ tool. Instead of breaking the traffic down 
per protocol or per subnet, like most such tools do, it groups band‐ 
width by process - and does not rely on a special kernel module to be 
loaded. So if there’s suddenly a lot of network traffic, you can fire 
up NetHogs and immediately see which PID is causing this, and if it’s 
some kind of spinning process, kill it.

NetHogs 命令的用法和例子

裝上了這個工具以後,使用起來就很是簡單了。敲入nethogs 就會給出全部的信息。看下面的例子。

 
  1. root@ubuntu2:~# nethogs

  2. NetHogs version 0.8.0

  3.  
  4. PID USER PROGRAM DEV SENT RECEIVED

  5. 2214 root /usr/lib/apt/methods/http eth0 4.693 238.631 KB/sec

  6. 2051 ubuntu sshd: ubuntu@pts/1 eth0 3.442 0.310 KB/sec

  7. 1120 ubuntu sshd: ubuntu@pts/0 eth0 0.416 0.035 KB/sec

  8. 2213 root /usr/lib/apt/methods/http eth0 0.021 0.023 KB/sec

  9. ? root unknown TCP 0.000 0.000 KB/sec

  10.  
  11. TOTAL 8.572 239.000 KB/sec

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在它的輸出結果中,給出了以下信息。這些詳細的信息足夠咱們找到每一個進程使用網絡的狀況。

  • PID(進程ID)
  • 運行該進程的用戶
  • 命令行或程序
  • 流量將要去往網絡接口
  • 發送的字節數
  • 接收的字節數

若是觀察上面的輸出結果,默認是按照由高到低排序的。

和top 命令同樣,你也能夠指定一個refresh rate,這樣它會在屏幕上刷新結果。使用-d 選項便可。

root@ubuntu2:~# nethogs -d 1

如今它就會每秒刷新一次了。

和top 命令同樣,它也有幾個交互式命令。這些命令能夠將輸出結果按照發送或者接受數據的大小排序,將輸出的方式從kb 更改爲mb 等等。在交互式控制檯敲入 m,顯示結果會在kb/s, kb, b, mb之間切換。按下r會按照接收流量排序。按下s會按照發送流量排序。

請多多分享一下和nethogs相似的工具,或者其餘有意思的方法能夠找出每一個進程佔用網絡的狀況。

相關文章
相關標籤/搜索