Como obter uma carga média de rede em vez de instantânea

3

Bem-vindo,

Eu uso o conky para ver estatísticas de carga de rede com amostragem a cada 8 segundos para obter um gráfico de histórico um pouco mais suave. Infelizmente, todos os valores que recebo não são médios para este período de 8 segundos, mas eles são amostrados a partir de um intervalo de tempo muito menor, portanto, os gráficos são os mesmos instáveis, como se fossem amostrados a partir de 1 segundo ou menos.

Existe alguma maneira de obter as propriedades do sistema de exibição conky (ou pelo menos o Monitor do Sistema) em média ao longo do tempo especificado, assim como o gerenciador de tarefas do Windows?

Gostaria de ter o uso de disco rígido de exibição conky do iostat, mas haverá pouco uso se, se o conky relatar valores instantâneos não calculados ao longo do tempo.

edite: Há meia solução para o problema de rede específico no utilitário ifstat. Este programa se executar

ifstat 8 1

de fato fornece uma carga de rede adequada médias por um intervalo de 8 segundos. Mas, por razões óbvias, essa chamada demora 8 segundos para ser concluída. Eu estou tentando aprender lua suficiente para fazer isso funcionar.

    
por Adam Ryczkowski 01.09.2012 / 11:48

2 respostas

1

Se você quiser que um programa ofereça uma boa síntese da atividade de rede, vnstat provavelmente é o que você; como observe abaixo, você pode usar um programa chamado vnstati para fornecer um gráfico de um período de tempo especificado a partir do banco de dados vnstat .

Primeiro, baixe os programas:

sudo apt-get install vnstat vnstati

Configure o banco de dados inicialmente, se a interface que você deseja monitorar for eth0 ; você pode usar este comando para atualizar o banco de dados mais tarde:

sudo vnstat -u -i eth0

Se a sua interface padrão não for eth0 , você poderá alterá-la editando a entrada de interface padrão em /etc/vnstat.conf ou simplesmente criando um arquivo .vnstat na sua pasta pessoal e adicionando Interface "eth1" no topo da o arquivo.

Vnstat monitora seu uso de rede no adaptador especificado, embora você possa ver os detalhes ativos digitando:

vnstat -l -i eth0

Você também pode visualizar estatísticas da linha de comando por hora, semana, mês, etc. (embora seja melhor fazer uma atualização do banco de dados primeiro com o comando sudo mais acima). Aqui está um exemplo de comando para exibir o uso diário: (substitua d por h por hora, w por semana)

vnstat -d -i eth0

Um lote mais análise estatística está disponível com vnstat , veja man vnstat ou o Utualizações do Ubuntu on-line .

Veja os gráficos de vnstati abaixo usando os seguintes comandos para mostrar o uso por hora e uso diário: (Você também pode mostrar semanalmente, mensalmente, etc, horários e exibir os dados de maneiras diferentes) vnstat antes de executar esses comandos vnstati )

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

(O primeiro gráfico está um pouco em branco, já que comecei a usar vnstat e, a propósito, minha interface padrão é eth1 , enquanto a sua é provavelmente eth0 )

Para mais opções sobre vnstati e todas as estatísticas do banco de dados vnstat que ele pode gerar, veja man vnstati e o manpages do Ubuntu online .

    
por user76204 01.09.2012 / 12:44
0

Bem, pode ser muito grosseiro (eu não sou um especialista em programação de scripts, e é o meu primeiro programa escrito em Lua), mas isso resolve o meu problema.

Funciona chamando o make-netstat em segundo plano, que chama ifstat, que calcula a média das estatísticas para um pouco menos que o intervalo de atualização do conky (8 segundos). Os resultados são gravados no arquivo temporário, que é posteriormente lido na próxima execução de atualização do conky.

Devido a E / S de disco, esta não é a solução recomendada para usuários de discos SSD. As estatísticas também não levam em consideração o intervalo de 0,5 segundo que existe para evitar condições de corrida entre o make-netstat e o conky.

Eu criei alguns arquivos no diretório ~ / .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 : (por algumas razões, o , ~ '' como um atalho para o diretório home não funciona, então eu coloquei o caminho completo da pasta home.)

#!/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

E, finalmente, nós o usamos em .conky.rc da seguinte maneira:

${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}
    
por Adam Ryczkowski 01.09.2012 / 18:55