Générer des graphiques/diagrammes d'utilisation du disque avec les outils CLI uniquement sous Linux

StackOverflow https://stackoverflow.com/questions/40737

Question

Dans cette question quelqu'un a demandé des moyens d'afficher l'utilisation du disque sous Linux.J'aimerais aller plus loin dans le chemin du cli...que diriez-vous d'un script shell qui prend la sortie de quelque chose comme une réponse raisonnable à la question précédente et génère un graphique/graphique à partir de celle-ci (sortie dans un fichier png ou quelque chose du genre) ?C'est peut-être un peu trop de code à demander dans une question ordinaire, mais je suppose que quelqu'un a déjà un oneliner qui traîne quelque part...

Était-ce utile?

La solution

je recommanderais munin.Il est conçu exactement pour ce genre de choses : représenter graphiquement l'utilisation du processeur, l'utilisation de la mémoire, l'utilisation du disque, etc.un peu comme MRTG (mais MRTG vise principalement à représenter graphiquement le trafic du routeur, représenter graphiquement tout sauf la bande passante avec lui est très hackish)

Écrire des plugins Munin est très simple (c'était l'un des objectifs du projet).Ils peuvent être écrits dans presque n'importe quoi (script shell, perl/python/ruby/etc, C, tout ce qui peut être exécuté et produire une sortie).Le format de sortie du plugin est essentiellement disc1usage.value 1234.Et déboguer les plugins est très simple (par rapport à MRTG)

Je l'ai configuré sur mon ordinateur portable pour surveiller l'utilisation du disque, l'utilisation de la bande passante (en extrayant les données du panneau de configuration de mon FAI, il représente graphiquement mes deux "bacs" de téléchargement, les téléchargements et l'utilisation des groupes de discussion), la charge moyenne et le nombre de processus.Une fois installé (un peu difficile actuellement sous OS X, mais c'est trivial sous Linux/FreeBSD), j'avais écrit un plugin en quelques minutes, et ça a fonctionné, du premier coup !

Je décrirais comment il est configuré, mais le site Munin le fera bien mieux que moi !

Il y a un exemple d'installation ici

Certaines alternatives sont les nagios et les cactus.Vous pouvez également écrire quelque chose de similaire en utilisant rrdtool.Munin, MRTG et Cacti sont fondamentalement tous des systèmes bien plus agréables à utiliser basés sur cet outil graphique.

Si vous voulez quelque chose de vraiment très simple, vous pouvez le faire...

import os
import time
while True:
    disc_usage = os.system("df -h / | awk '{print $3}'")
    log = open("mylog.txt")
    log.write(disc_usage + "\n")
    log.close()
    time.sleep(60*5)

Alors..

f = open("mylog.txt")
lines = f.readlines()

# Convert each line to a float number
lines = [float(cur_line) for cur_line in lines]

# Get the biggest and smallest
biggest = max(lines)
smallest = min(lines)

for cur_line in lines:
    base = (cur_line - smallest) + 1 # make lowest value 1
    normalised = base / (biggest - smallest) # normalise value between 0 and 1
    line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide
    print "#" * line_length

Cela fera un simple graphique ascii de l'utilisation du disque.je vraiment vraiment je ne vous recommande pas d'utiliser quelque chose comme ça.Pourquoi?Le fichier journal deviendra de plus en plus gros.Le graphique deviendra progressivement plus lent à tracer.RRDTool utilise un système de base de données dynamique pour stocker ses données, de sorte que le fichier ne dépassera jamais environ 50 à 100 Ko, et il est toujours rapide à représenter graphiquement car le fichier a une longueur fixe.

En bref.Si vous voulez que quelque chose représente facilement presque tout, utilisez munin.Si vous voulez quelque chose de plus petit et autonome, écrivez quelque chose avec RRDTool.

Autres conseils

Si certains caractères ASCII sont suffisamment "graphiques" pour vous, je peux vous recommander ncdu.C'est un très bel outil CLI interactif, qui m'aide beaucoup à supprimer de gros répertoires sans faire cd bigdir ;du -hs encore et encore.

Nous avons roulé le nôtre au travail en utilisant Outil RRD (le back-end de stockage de données pour des outils comme MRTG).Nous exécutons un script Perl toutes les 5 minutes qui prend un du par partition et le place dans une base de données RRD, puis utilise la fonction graphique de RRD pour créer des graphiques.Il faut un certain temps pour comprendre comment configurer les fichiers .rrd (par exemple, j'ai dû réapprendre RPN pour effectuer certains des calculs que je voulais faire) mais si vous avez des données que vous souhaitez représenter graphiquement au fil du temps, L'outil RRD est un bon pari.

Je suppose qu'il y a plusieurs options :

  1. Pour une solution CLI pure, utilisez quelque chose comme gnuplot.Voir ici par exemple l'utilisation.Je n'ai pas utilisé gnuplot depuis mes années d'étudiant :-)

  2. Pas vraiment une solution CLI pure, mais téléchargez quelque chose comme JFreeChart et écrivez une application Java simple qui lit stdin et crée votre graphique.

J'espère que cela t'aides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top