本文是 Unix/Linux 系統管理自動化系列中的一篇,主要講述如何實現自動化監控網路介面帶寬狀態並及時通知系統管理員採取相應措施。
在 Unix/Linux 系統的日常管理工作中,系統管理員可能會遇到因網路介面帶寬耗盡而導致網路服務響應過慢,或者服務中斷等問題。這些問題較嚴重的影響了工作效率。因此,關注系統的網路介面使用情況,建立一個警告系統對網路介面帶寬的潛在問題發出警告,確保網路介面帶寬沒有被塞滿是系統管理的一個重要的方面。
在本文中,作者介紹了一些查看網路介面使用情況的工具命令並結合這些工具實現了一個自動化監控網路介面帶寬的示範腳本。通過介紹,讀者將了解如何監視網路介面帶寬並以此為依據做出相應的調整。
Unix/Linux 網路介面管理相關命令介紹
獲取網路適配器列表信息
在獲知網路介面使用狀態之前,你可能需要知道你當前的系統使用的網路適配器,在 Linux 和 AIX 中查看網路設備器的屬性使用不同的命令,下面的例子給出了在不同系統上如何查看網路設備器的屬性。
Linux 系統啟動載入網卡驅動會輸出識別到的所有網路適配器信息。dmesg 顯示系統開機信息。所以可以利用該命令取得系統網路適配器列表。清單 1 命令輸出顯示共有 2 塊網卡,eth0 與 eth1,其中僅 eth1 被啟用。
# dmesg|grep -i eth IBM eHEA ethernet device driver (Release EHEA_0092-03) ehea: eth0: Jumbo frames are enabled ehea: eth0 -> logical port id #1 ehea: eth1: Jumbo frames are enabled ehea: eth1 -> logical port id #2 ehea: eth1: Physical port up eth1: no IPv6 routers present |
AIX 系統查看系統設備狀態使用 lsdev – C 命令。清單 2 為命令在 AIX 6.1 上的輸出,AIX 5.3 與之相同。
# lsdev -CHc adapter|grep en name status location description ent0 Available 03-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent1 Available 03-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent2 Available 04-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent3 Available 04-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) 上面的命令給出了系統可用的網路適配器信息,從上面的輸出可以看出,系統有四個可用的網路適配器, 如果要獲得網路適配器的配置信息,可以使用 lscfg 來查看。 # lscfg -vl ent0 ent0 U787D.001.992059Y-P1-T1 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) 2-Port 10/100/1000 Base-TX PCI-X Adapter: Network Address.............000D60F42314 ROM Level.(alterable).......DV0210 Hardware Location Code......U787D.001.992059Y-P1-T1 可以通過下面命令得到網路介面列表,並可以通過比較 location 獲得網路介面與網路適配器的對應關係, 比如介面 en0 對應網路適配器 ent0,因為他們對應相同的 location。 # lsdev -CHc if|grep en name status location description en0 Available 03-08 Standard Ethernet Network Interface en1 Available 03-09 Standard Ethernet Network Interface en2 Defined 04-08 Standard Ethernet Network Interface en3 Defined 04-09 Standard Ethernet Network Interface |
查看網路介面狀態
網路介面狀態包括介面是否啟用,是否設置 IP 地址、MTU 大小、收發的包數等,查詢的命令為 ifconfig, 在不同操作系統其輸出格式略有不同。
清單 3 為在 RHEL5.3 上的輸出,其顯示兩個乙太網絡介面,eth0 未配置 ip 地址,未被啟用;eth1 配置了 IP 地址並被啟用。
# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:1A:64:44:AC:34 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) eth1 Link encap:Ethernet HWaddr 00:1A:64:44:AC:35 inet addr:9.114.70.151 Bcast:9.114.70.255 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12337126 errors:0 dropped:0 overruns:0 frame:0 TX packets:6250179 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:17295472097 (16.1 GiB) TX bytes:673204981 (642.0 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:20168 errors:0 dropped:0 overruns:0 frame:0 TX packets:20168 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1989243 (1.8 MiB) TX bytes:1989243 (1.8 MiB) |
清單 4 為命令在 AIX 6.1 上的運行結果,其顯示兩個乙太網絡介面,均配置了 IP 地址並啟用。AIX 5.3 上的輸出格式與之一樣。
# ifconfig – a en0: flags=5e080863,c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT, CHECKSUM_OFFLOAD(ACTIVE),PSEG,LARGESEND,CHAIN> inet 9.114.124.9 netmask 0xffffff00 broadcast 9.114.124.255 tcp_sendspace 131072 tcp_recvspace 65536 rfc1323 0 en1: flags=5e080863,c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT, CHECKSUM_OFFLOAD(ACTIVE),PSEG,LARGESEND,CHAIN> inet 192.168.124.9 netmask 0xffffff00 broadcast 192.168.124.255 tcp_sendspace 262144 tcp_recvspace 131072 rfc1323 1 lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT> inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255 inet6 ::1/0 tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1 |
查看網路介面連接屬性
網路介面連接屬性包括連接模式、連接速度、鏈路狀態、協商方式等。
Linux 上用於查詢及設置乙太網卡參數的一個常用命令是 ethtool,它可以獲取網卡的各種詳細的診斷信息,包括連接模式(全雙工 / 半雙工)、連接速度(10M/100M/1000M 等)、是否支持自動協商等、鏈路狀態、驅動版本、匯流排位置等等。ethtool 的查詢以及配置功能需要相應網卡設備驅動的支持,從本質上說,ethtool 的功能是調用驅動提供的 ethtool 介面,來實現用戶所要求的操作。基本上,Linux 2.4 以上內核的網卡驅動均支持這個命令。但根據具體驅動的不同,顯示的信息可能大同小異。
# ethtool eth1 Settings for eth1: Supported ports: [ FIBRE ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: FIBRE PHYAD: 0 Transceiver: internal Auto-negotiation: on Current message level: 0x000000cc (204) Link detected: yes 主要欄位含義: Supported ports 支持的埠類型 Supported link modes 支持的連接模式 Supports auto-negotiation 是否支持自動協商 Speed 當前的連接速度 Duplex 當前的雙工狀態 Port 埠類型 Auto-negotiation 自動協商狀態 Link detected 鏈路狀態 |
entstat 命令是 AIX 下自帶用於查詢乙太網設備統計信息的工具。它的工作原理與 ethtool 類似,同樣是提供給用戶一個顯示網路設備連接狀態的介面。清單 6 為命令在 AIX 6.1 上的運行結果,AIX 5.3 上的輸出格式與之一樣。
# entstat -d ent0|grep -p 'Specific Statistics' 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) Specific Statistics: ------------------------------------------------------------------------ Link Status : Up Media Speed Selected: Auto negotiation Media Speed Running: 1000 Mbps Full Duplex PCI Mode: PCI-X (100-133) PCI Bus Width: 64-bit Latency Timer: 144 Cache Line Size: 128 Jumbo Frames: Disabled TCP Segmentation Offload: Enabled TCP Segmentation Offload Packets Transmitted: 5080 TCP Segmentation Offload Packet Errors: 0 Transmit and Receive Flow Control Status: Enabled XON Flow Control Packets Transmitted: 0 XON Flow Control Packets Received: 609 XOFF Flow Control Packets Transmitted: 0 XOFF Flow Control Packets Received: 609 Transmit and Receive Flow Control Threshold (High): 49152 Transmit and Receive Flow Control Threshold (Low): 24576 Transmit and Receive Storage Allocation (TX/RX): 8/56 |
[火星人 ] Unix/Linux 系統自動化管理: 網路介面帶寬管理篇已經有713次圍觀