web-dev-qa-db-ja.com

瞬時ではなく平均ネットワーク負荷を取得する方法

ようこそ、

Conkyを使用して、8秒ごとにサンプリングしてネットワーク負荷統計を表示し、より滑らかな履歴グラフを取得します。残念ながら、私が取得するすべての値はこの8秒間の平均ではありませんが、非常に短い期間からサンプリングされているため、チャートは1秒以下からサンプリングされた場合と同じように途切れています。

Windowsのタスクマネージャーのように、指定された時間にわたって平均化されたシステムプロパティをconky(または少なくともシステムモニター)で表示する方法はありますか?

Iostatからconkyディスプレイのハードドライブの使用状況を表示したいのですが、conkyが時間の経過とともに平均化されていない瞬時値を報告する場合は、ほとんど使用されません。

編集:ユーティリティifstatの特定のネットワークの問題に対する半解があります。このプログラムを実行すると

ifstat 8 1

確かに、8秒間隔で適切なネットワーク負荷平均が得られます。しかし、明らかな理由から、この呼び出しは完了するまでに8秒かかります。私はこれを機能させるために十分なluaを学ぼうとしています。

3
Adam Ryczkowski

プログラムでネットワークアクティビティの優れたダイジェストを取得したい場合は、vnstatがおそらくあなたの役目です。以下で説明するように、vnstatiというプログラムを使用して、vnstatデータベースから指定された時間フレームのグラフを取得できます。

まず、プログラムをダウンロードします。

Sudo apt-get install vnstat vnstati

監視するインターフェースがeth0;の場合は、最初にデータベースをセットアップします。このコマンドを使用して、後でデータベースを更新できます。

Sudo vnstat -u -i eth0

デフォルトのインターフェースがeth0でない場合は、/etc/vnstat.confのデフォルトのインターフェースエントリを編集するか、ホームフォルダーに.vnstatファイルを作成し、ファイルの先頭にInterface "eth1"を追加するだけで変更できます。

Vnstatは、指定したアダプターでのネットワーク使用状況を監視しますが、次のように入力すると、ライブの詳細を確認できます。

vnstat -l -i eth0

コマンドラインから統計情報を時間、週、月などで表示することもできます(ただし、上記のSudoコマンドを使用して、最初にデータベースを更新することをお勧めします)。次に、毎日の使用状況を表示するコマンドの例を示します。(dhに置き換えて、毎時、wを毎週に置き換えます)

vnstat -d -i eth0

lotより多くの統計分析がvnstatで利用可能です。man vnstatまたは Ubuntuのオンラインマンページを参照してください

次のコマンドを使用して、以下のvnstatiのグラフを参照し、毎時の使用量と毎日の使用量を表示します(毎週、毎月などの時間を表示し、さまざまな方法でデータを表示することもできます)(もう一度データベースの更新を実行してください) vnstatこれらのvnstatiコマンドを実行する前に)

vnstati -h -i eth1 -o net.png
vnstati -d -i eth1 -o net2.png

(私がvnstatを使い始めたばかりで、ちなみに私のデフォルトのインターフェースはeth1ですが、あなたのインターフェースはおそらくeth0なので、最初のグラフは少し空白です)

vnstatiのその他のオプション、およびvnstatデータベースから出力できるすべての統計については、man vnstatiおよび Ubuntuマンページオンライン を参照してください。

enter image description hereenter image description here

1
user76204

まあ、それは非常に大雑把かもしれません(私はスクリプトプログラミングの専門家ではなく、Luaで書かれた私の最初のプログラムです)が、私の問題は解決します。

これは、conkyリフレッシュ間隔(8秒)より少し短い間統計を平均化するifstatを呼び出すバックグラウンドでmake-netstatを呼び出すことで機能します。結果は一時ファイルに書き込まれ、次にconkyの次のリフレッシュ実行で読み取られます。

ディスクI/Oのため、SSDディスクのユーザーには推奨されるソリューションではありません。統計は、make-netstatとconkyの間の競合状態を防ぐために存在する0.5秒のギャップも考慮していません。

〜/ .conkyディレクトリにいくつかのファイルを作成しました。 make-netstats.sh

#!/bin/sh
ifstat -i wlan0 -n $1 1|tail -n 1 >~/.conky/wifi-stats-new.txt
cp ~/.conky/wifi-stats-new.txt ~/.conky/wifi-stats.txt

call-make-netstats.sh:(何らかの理由で、ホームディレクトリへのショートカットとしての,〜 ''が機能しないため、ホームフォルダのフルパスを指定します。)

#!/bin/sh
/home/adam/.conky/make-netstats.sh $1 &

netstat.lua

do
    function conky_prepare_wlan_stats(czas)
        os.execute("/home/adam/.conky/call-make-netstats.sh " .. czas)
    end
    function conky_get_wlan_input()
        local f = io.open("/home/adam/.conky/wifi-stats.txt", "r")
        local str = f:read("*all")
        local sin = string.gsub(str, "^%s*([%d%.]+)%s*([%d%.]+)%s*","%1")
        return sin
    end
    function conky_get_wlan_output()
        local f = io.open("/home/adam/.conky/wifi-stats.txt", "r")
        local str = f:read("*all")
        local out = string.gsub(str, "^%s*([%d%.]+)%s*([%d%.]+)%s*","%2")
        return out
    end
end

そして最後に。conky.rcで次のように使用します。

${font Goudy Bookletter 1911:style=Normal}WIRELESS${font} ${hr 2}
${voffset 4}${font PizzaDude Bullets:size=14}O${font}   Up: ${lua conky_get_wlan_output} ${alignr} ${voffset -10} ${lua_graph  conky_get_wlan_output 20,200 300}
${lua conky_prepare_wlan_stats 7.5} #The function prepares statistics for another refresh of conky stat. 7.5 is slightly less then 8 seconds to prevent from overlap.1

${voffset -30}${font PizzaDude Bullets:size=14}U${font}   Down: ${lua conky_get_wlan_input} ${alignr} ${voffset -10} ${lua_graph  conky_get_wlan_input 20,200 300}
0
Adam Ryczkowski