web-dev-qa-db-fra.com

Comment obtenir une charge réseau moyenne au lieu d'un instantané

Bienvenue,

J'utilise conky pour voir les statistiques de charge du réseau avec un échantillonnage toutes les 8 secondes afin d'obtenir un graphique d'historique un peu plus fluide. Malheureusement, toutes les valeurs que j'obtiens ne sont pas moyennes pour cette période de 8 secondes, mais elles sont échantillonnées à partir d'un intervalle de temps beaucoup plus court, donc les graphiques sont les mêmes saccadés, comme s'ils étaient échantillonnés à partir d'une seconde ou moins.

Existe-t-il un moyen d'obtenir une moyenne des propriétés du système d'affichage conky (ou au moins du Moniteur système) sur une durée spécifiée, tout comme le fait le gestionnaire de tâches de Windows?

Je voudrais avoir l'utilisation du disque dur d'affichage conky à partir d'iostat, mais il y aura peu d'utilité si elle, si conky rapporte des valeurs instantanées non moyennées dans le temps.

edit: Il existe une demi-solution au problème de réseau spécifique dans l'utilitaire ifstat. Ce programme s'il est exécuté

ifstat 8 1

donne en effet une charge réseau appropriée moyennes sur un intervalle de 8 secondes. Mais, pour des raisons évidentes, cet appel prend 8 secondes. J'essaie d'apprendre suffisamment de lua pour que cela fonctionne.

3
Adam Ryczkowski

Si vous voulez qu'un programme vous donne un bon aperçu de l'activité réseau, vnstat est probablement ce que vous faites; comme je le note ci-dessous, vous pouvez utiliser un programme appelé vnstati pour vous donner un graphique d'un intervalle de temps spécifié à partir de la base de données vnstat.

Tout d'abord, téléchargez les programmes:

Sudo apt-get install vnstat vnstati

Configurez la base de données initialement si l'interface que vous souhaitez surveiller est eth0; vous pouvez utiliser cette commande pour mettre à jour la base de données ultérieurement:

Sudo vnstat -u -i eth0

Si votre interface par défaut n'est pas eth0, vous pouvez le modifier en modifiant l'entrée d'interface par défaut dans /etc/vnstat.conf ou simplement en créant un .vnstat fichier dans votre dossier personnel et en ajoutant Interface "eth1" en haut du fichier.

Vnstat surveille votre utilisation du réseau sur l'adaptateur spécifié, bien que vous puissiez voir les détails en direct en entrant:

vnstat -l -i eth0

Vous pouvez également afficher les statistiques de la ligne de commande par heure, semaine, mois, etc. (bien qu'il soit préférable de faire une mise à jour de la base de données d'abord avec la commande Sudo plus haut). Voici un exemple de commande pour afficher l'utilisation quotidienne: (remplacer d pour h pour horaire, w pour hebdomadaire)

vnstat -d -i eth0

Un beaucoup plus d'analyse statistique est disponible avec vnstat, voir man vnstat ou pages de manuel Ubuntu en ligne .

Voir les graphiques de vnstati ci-dessous en utilisant les commandes suivantes pour afficher l'utilisation horaire et l'utilisation quotidienne: (Vous pouvez également afficher les heures hebdomadaires, mensuelles, etc., et afficher les données de différentes manières) (Encore une fois, effectuez une mise à jour de la base de données avec vnstat avant d'exécuter ces commandes vnstati)

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

(Le premier graphique est quelque peu vide car je viens juste de commencer à utiliser vnstat et d'ailleurs mon interface par défaut est eth1, alors que le vôtre est probablement eth0)

Pour plus d'options sur vnstati et toutes les statistiques de la base de données vnstat qu'il peut générer, voir man vnstati et pages de manuel Ubuntu en ligne .

enter image description hereenter image description here

1
user76204

Eh bien, cela pourrait être très grossier (je ne suis pas un expert en programmation de scripts, et c'est mon tout premier programme écrit en Lua), mais cela résout mon problème.

Il fonctionne en appelant le make-netstat en arrière-plan qui appelle ifstat qui fait la moyenne des statistiques pour un intervalle de rafraîchissement un peu inférieur à conky (8 secondes). Les résultats sont écrits dans un fichier temporaire, qui est ensuite lu lors de la prochaine actualisation de conky.

En raison des E/S disque, ce n'est pas la solution recommandée pour les utilisateurs de disques SSD. Les statistiques ne tiennent pas compte non plus de l'écart de 0,5 seconde qui existe pour empêcher les conditions de course entre make-netstat et le conky.

J'ai créé quelques fichiers dans le répertoire ~/.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: (pour certaines raisons, le , ~ '' comme raccourci vers le répertoire personnel ne fonctionne pas, j'ai donc mis le chemin complet du dossier personnel.)

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

Et enfin nous l'utilisons dans . Conky.rc de la manière suivante:

${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