Создание графиков / диаграмм использования дисков с помощью инструментов только для CLI в Linux - PullRequest
9 голосов
/ 03 сентября 2008

В этом вопросе кто-то спросил, как отобразить использование диска в Linux. Я хотел бы сделать еще один шаг дальше по пути клика ... как насчет сценария оболочки, который берет вывод из чего-то вроде разумного ответа на предыдущий вопрос и генерирует из него график / диаграмму (вывод в png файл или что-то)? Это может быть слишком много кода, чтобы просить его в обычном вопросе, но я предполагаю, что у кого-то уже есть где-то один oneliner ...

Ответы [ 4 ]

9 голосов
/ 21 августа 2009

Если вам достаточно «графических» символов ASCII, я могу порекомендовать ncdu . Это очень хороший интерактивный инструмент CLI, который мне очень помогает выходить из больших каталогов без использования cd bigdir; du-hs снова и снова.

6 голосов
/ 04 сентября 2008

Я бы порекомендовал Мунин . Он предназначен именно для такого рода вещей - графики использования процессора, использования памяти, использования диска и тому подобное. вроде как MRTG (но MRTG в первую очередь нацелен на отображение трафика маршрутизатора, отображение чего угодно, кроме пропускной способности, очень хакерское)

Написание плагинов Munin очень просто (это было одной из целей проекта). Они могут быть написаны практически во всем (сценарий оболочки, perl / python / ruby ​​/ etc, C, все, что может быть выполнено и вывести результат). Формат вывода плагина в основном disc1usage.value 1234. И отладка плагинов очень проста (по сравнению с MRTG)

Я настроил его на своем ноутбуке для отслеживания использования диска, использования полосы пропускания (извлекая данные из панели управления моего интернет-провайдера, он отображает мои две «корзины» загрузки, загрузки и использования группы новостей), средней загрузки и количества процессы. Как только я установил его (в настоящее время это немного сложно в OS X, но в Linux / FreeBSD это тривиально), я написал плагин за несколько минут, и он сработал, впервые!

Я бы описал, как он настроен, но сайт munin сделает это гораздо лучше, чем я!

Пример установки здесь

Некоторыми альтернативами являются нагио и кактусы. Вы также можете написать что-то подобное, используя rrdtool. Munin, MRTG и Cacti - это, по сути, все гораздо более удобные в использовании системы, основанные на этом графическом инструменте.

Если вы хотите что-то действительно, очень простое, вы можете сделать ..

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)

Тогда ..

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

Это сделает простой ascii график использования диска. Я действительно очень не рекомендую использовать что-то подобное. Зачем? Файл журнала будет становиться все больше, больше и больше. График будет постепенно замедляться к графику. RRDTool использует систему скользящей базы данных для хранения своих данных, поэтому размер файла никогда не будет превышать 50-100 КБ, и его отображение будет очень быстрым, поскольку файл имеет фиксированную длину.

Короче. Если вы хотите, чтобы что-то легко отображалось на графике, используйте munin . Если вы хотите что-то меньшее и автономное, напишите что-нибудь с помощью RRDTool.

4 голосов
/ 03 сентября 2008

Мы развернули свою собственную работу, используя RRDtool (сервер для хранения данных для таких инструментов, как MRTG). Мы запускаем perl-скрипт каждые 5 минут, который берет du на раздел и помещает его в базу данных RRD, а затем использует функцию graph RRD для построения графиков. Требуется некоторое время, чтобы выяснить, как настроить файлы .rrd (например, мне пришлось заново изучить RPN, чтобы выполнить некоторые из вычислений, которые я хотел сделать), но если у вас есть данные, которые вы хотите отобразить с течением времени, RRD-инструмент - хорошая ставка.

1 голос
/ 03 сентября 2008

Я думаю, есть несколько вариантов:

  1. Для чистого решения CLI используйте что-то вроде gnuplot. См. здесь для примера использования. Я не использовал gnuplot со студенческих лет: -)

  2. Не совсем чистое CLI-решение, но скачайте что-то вроде JFreeChart и напишите простое Java-приложение, которое читает stdin и создает вашу диаграмму.

Надеюсь, это поможет.

...