2008-09-02 19 views
9

In this question ktoś zapytał o sposoby wyświetlenia użycia dysku w systemie Linux. Chciałbym pójść o krok dalej w dół cli-path ... co powiesz na skrypt powłoki, który pobiera dane wyjściowe z czegoś w rodzaju rozsądnej odpowiedzi na poprzednie pytanie i generuje z niego wykres/wykres (dane wyjściowe w png plik lub coś takiego? To może być nieco zbyt wiele, aby poprosić o kod w regularnych pytanie, ale wydaje mi się, że ktoś ma już oneliner r gdzieś ...Generowanie wykresów/wykresów użycia dysku przy użyciu wyłącznie narzędzi CLI w systemie Linux:

Odpowiedz

6

Polecam munin. Jest przeznaczony do dokładnie tego typu rzeczy - graficznego wykorzystania procesora, użycia pamięci, zużycia dysku i tym podobnych. coś w rodzaju MRTG (ale MRTG ma przede wszystkim na celu graficzne mapowanie ruchu routera, wykreśla wszystko, ale przepustowość jest bardzo hackowata)

Pisanie wtyczek Munina jest bardzo łatwe (był to jeden z celów projektu). Mogą być napisane prawie w całości (skrypt powłoki, perl/python/ruby ​​/ etc, C, wszystko, co można wykonać i wygenerować wyjście). Format wyjściowy wtyczki to w zasadzie disc1usage.value 1234. A debugowanie wtyczek jest bardzo łatwe (w porównaniu z MRTG).

Ustawiłem to na moim laptopie, aby monitorować zużycie dysku, wykorzystanie przepustowości (pobierając dane z panelu kontrolnego mojego ISP, wyświetla dwa pojemniki "pobierania" ", przesyłanie i używanie grup dyskusyjnych), ładuj średnią i liczbę procesów. Po zainstalowaniu (obecnie nieco trudniejsze w systemie OS X, ale w Linuksie/FreeBSD jest to banalne), napisałem wtyczkę w kilka minut, i zadziałało, po raz pierwszy!

Chciałbym opisać, jak to jest konfiguracja, ale strona munin zrobi o wiele lepiej niż ja!

Jest instalacja przykład here

Niektóre alternatywy są Nagios i kaktusy. Możesz również napisać coś podobnego za pomocą rrdtoola. Munin, MRTG i Cacti to w zasadzie wszystkie znacznie przyjemniejsze w użyciu systemy oparte na tym narzędziu do tworzenia wykresów.

Jeśli chcesz coś naprawdę proste, można zrobić ..

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) 

Następnie ..

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 

To będzie zrobić prosty wykres ASCII użytkowania płyty. I Naprawdę naprawdę nie polecam używać czegoś takiego. Czemu? Plik dziennika będzie większy, większy i większy. Wykres będzie stopniowo postępował wolniej do wykresu. RRDTool używa systemu do ciągłego przechowywania danych, więc plik nigdy nie osiągnie rozmiaru większego niż około 50-100KB, a jego spójność jest szybka, ponieważ plik ma stałą długość.

Krótko mówiąc. Jeśli chcesz, aby coś łatwo wykreślić prawie wszystko, użyj munin. Jeśli chcesz czegoś mniejszego i samodzielnego, napisz coś z RRDTool.

1

Chyba istnieje kilka opcji:

  1. Dla czystego rozwiązania CLI użyj czegoś takiego jak gnuplot. Zobacz przykład here na przykład użycie. Nie korzystałem z gnuplot od czasów studenckich :-)

  2. To naprawdę nie jest czyste rozwiązanie CLI, ale pobierz coś takiego jak JFreeChart i napisz prostą aplikację Java, która czyta standardowe wejście i tworzy twój wykres.

Mam nadzieję, że to pomoże.

4

Stoczyliśmy własne w pracy przy użyciu RRDtool (przechowywanie danych z powrotem do narzędzi, takich jak MRTG). Uruchamiamy skrypt perl co 5 minut, który zajmuje daną partycję i umieszcza ją w bazie danych RRD, a następnie wykorzystuje funkcję wykresu RRD do tworzenia wykresów. Trzeba trochę czasu, aby dowiedzieć się, jak skonfigurować pliki .rrd (na przykład, musiałem ponownie nauczyć się RPN, aby wykonać niektóre obliczenia, które chciałem zrobić), ale jeśli masz jakieś dane, które chcesz z czasem wykreślić, Narzędzie RRD to dobry zakład.

9

Jeśli niektóre znaki ASCII są wystarczająco "graficzne", mogę polecić ncdu. Jest to bardzo ładne interaktywne narzędzie CLI, które pomaga mi znacznie zmniejszyć duże katalogi bez wykonywania cd bigdir; du-hs w kółko.

+0

+1 Doskonały dodatek do zdalnego sterowania! Uwielbiam to narzędzie, super szybkie używanie i usuwanie także przepływów pracy! – barrymac