Linux

Linux:如何測量每日/每月網路流量?

  • November 23, 2020

我需要為一台 linux 機器(CentOS 5)保留每日網路流量的統計數據。

有沒有辦法使用標準/本機工具或實用程序來做到這一點?

還是我必須為此下載特殊軟體?

謝謝。

Zypher 所說的關於 rrdtool(以及任何其他使用它作為後端的東西——MRTG、Cacti 等)可能是正確的。RRDTool 旨在成為“平均”歷史趨勢分析工具。它以越來越不確定的增量對計數器進行平均和儲存,隨著時間的推移而增加。

然而,這可以通過適當地設置 RRA 來配置。然而,我承認對配置這些完全一無所知,並且個人從來沒有運氣讓它們超出我的標准設置(15 分鐘、8 小時、1 週、1 個月、1 年)。我建議考慮配置 RRA 以期望每日輸入並將其從 netstat 提供給您的頻寬計數器。您將獲得一些非常好的歷史數據並深入了解您的使用模式。

要回答您目前的問題,請確保您不超過每日頻寬限制;我建議每天為相關介面獲取 netstat 計數器。您可以將昨天在時間 t 的流量與今天在時間 t 的計數器進行比較,並找出轉移了多少。具有先前值的平面文本文件儲存的簡單腳本可能就足夠了。然後,如果您檢測到超出的頻寬或全天監控它,則可以禁用該介面,並在您接近限制時通知管理員。

要在 OSX 系統上獲取輸入字節,您可以使用以下命令集:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'

相反,可以通過以下方式獲得輸出:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'

您可以將相關計數器彈出到儲存在某處的平面文件中,並將其與:

#!/bin/bash
set -e # exit if any error occurs

previous_days_bytes_xferred=`cat $flatfile_storage`
todays_bytes_xferred=`netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'`

if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
  DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage

只需調整 netstat 處理以匹配您的系統(因為我知道您沒有執行 OSX)。

引用自:https://serverfault.com/questions/107393