Networking
監控網路的“正確方法”是什麼?
我的生產伺服器保存在美國東海岸,一些支持應用程序保存在歐洲的阿姆斯特丹。美國東海岸也有一個 Nagios 實例執行,它通過 ssh 進行一些埠檢查和一些檢查。
問題是我幾乎每天都使用 mtr(traceroute 和 ping 的組合)觀察封包遺失以及持續約 1 分鐘的輕微服務問題。我向我們在阿姆斯特丹的服務提供商展示了這些 mtr 輸出,但他否認有任何問題說 ICMP(由 mtr 使用)不是衡量丟棄的可靠方法,因為 ICMP 在路由器上的優先級最低。所以路由器可以丟棄 ICMP,但它們對 TCP 來說就很好。
我如何向我的服務提供商證明他的服務確實存在問題並且他需要修復它?什麼是正確的工具和技術?
很難明確證明丟包。
如果這是您的目標,我推薦的策略是:
設置主機A和主機B之間的網路測試
在每個主機上實施
iptables
規則以計算進入/離開的數據包數量
- 這意味著沒有狀態跟踪規則
用於
iperf
進行一段時間的 TCP 測試,例如 300 秒
iptables
在兩台主機上轉儲並比較數據包計數使用的替代方法
iptables
是查看兩台主機上介面的 tx/rx 數據包計數(例如ifconfig eth0
) - 在測試開始時記下,進行傳輸測試(例如使用 SCP 或 FTP) - 然後計算是否從一台主機發送的數據包等於在另一台主機上接收到的數據包。任何其他技術都會給你虛假資訊。確實,主機和中間路由器會
ICMP
以低優先級處理,或者根本不響應。通常UDP
數據包也被視為較低優先級,因此iperf
使用 UDP 流的受控測試可能會給出錯誤的結果。TCP
由於底層作業系統處理封包遺失,因此沒有實際計算發送和接收數據包的測試將永遠不會揭示太多。