2008-09-02 10 views
9

In this question alguien preguntó por formas de mostrar el uso del disco en Linux. Me gustaría dar un paso más en el cli-path ... ¿qué tal un guión de shell que toma el resultado de algo así como una respuesta razonable a la pregunta anterior y genera un gráfico/gráfico de él (salida en png archivo o algo así)? Esto puede ser un código demasiado poco para pedir en una pregunta regular, pero mi suposición es que alguien ya tiene una oneliner por ahí en alguna parte ...Generar gráficos/gráficos de uso del disco con herramientas CLI only en Linux

Respuesta

6

Recomendaría munin. Está diseñado exactamente para este tipo de cosas: graficar el uso de la CPU, el uso de la memoria, el uso del disco y demás. algo así como MRTG (pero MRTG tiene como objetivo principal graficar el tráfico del enrutador, graficando cualquier cosa menos el ancho de banda es muy hackish)

Escribir complementos de Munin es muy fácil (fue uno de los objetivos del proyecto). Se pueden escribir en casi cualquier cosa (script de shell, perl/python/ruby ​​/ etc, C, cualquier cosa que se pueda ejecutar y producir un resultado). El formato de salida del complemento es básicamente disc1usage.value 1234. Y depurar los complementos es muy fácil (en comparación con MRTG)

Lo he configurado en mi computadora portátil para controlar el uso del disco, el uso de ancho de banda (extrayendo datos del panel de control de mi ISP, grafica mis dos contenedores de descarga) ", cargas y uso de grupos de noticias), promedio de carga y cantidad de procesos. Una vez que lo tengo instalado (actualmente un poco difícil en OS X, pero es trivial en Linux/FreeBSD), escribí un complemento en unos minutos y funcionó, ¡la primera vez!

Describiría cómo está configurado, ¡pero el sitio de Munin lo hará mucho mejor que yo!

Hay un ejemplo de instalación here

Algunas alternativas son nagios y cactus. También puede escribir algo similar usando rrdtool. Munin, MRTG y Cacti son básicamente sistemas mucho más fáciles de usar basados ​​en esta herramienta de gráficos.

Si quieres algo muy, muy sencilla, se puede hacer ..

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) 

Entonces ..

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 

Eso hará un análisis sencillo del uso del disco. I Realmente realmente No recomiendo que use algo como esto. ¿Por qué? El archivo de registro se hará más grande, más grande y más grande. El gráfico se volverá progresivamente más lento para graficar. RRDTool utiliza un sistema de base de datos móvil para almacenar sus datos, por lo que el archivo nunca superará los 50-100 KB, y es siempre rápido de graficar ya que el archivo tiene una longitud fija.

En resumen. Si quiere algo para graficar fácilmente casi cualquier cosa, use munin. Si quieres algo más pequeño y autónomo, escribe algo con RRDTool.

1

supongo que hay un par de opciones:

  1. Para una solución de CLI pura, use algo como gnuplot. Ver here por ejemplo uso. No he usado gnuplot desde mis días de estudiante :-)

  2. No es realmente una solución CLI pura, pero descargue algo como JFreeChart y escriba una aplicación Java simple que lea stdin y cree su gráfico.

Espero que esto ayude.

4

Rodamos el nuestro en el trabajo usando RRDtool (el back end de almacenamiento de datos para herramientas como MRTG). Ejecutamos un script de Perl cada 5 minutos que toma una du por partición y lo coloca en una base de datos RRD y luego utiliza la función gráfica de RRD para construir gráficos. Me lleva un tiempo definir cómo configurar los archivos .rrd (por ejemplo, tuve que volver a aprender RPN para hacer algunos de los cálculos que quería hacer) pero si tiene algunos datos que desea graficar con el tiempo, La herramienta RRD es una buena apuesta.

9

Si algunos caracteres ASCII son "lo suficientemente gráficos" para usted, puedo recomendar ncdu. Es una herramienta de CLI interactiva muy agradable, que me ayuda mucho a bajar directorios grandes sin hacer cd bigdir; du -hs una y otra vez.

+0

+1 ¡La mejora perfecta para el ocultamiento remoto! Me encanta esta herramienta, el uso súper rápido y la eliminación de flujos de trabajo también! – barrymac

Cuestiones relacionadas