Я бы порекомендовал Мунин . Он предназначен именно для такого рода вещей - графики использования процессора, использования памяти, использования диска и тому подобное. вроде как 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.