Очень хорошее описание http://www.bog.pp.ru/work/rrdtool.html#at
Создаем файл
rrd_file = "/usr/local/www/nagios/2week.rrd"
def rrd_create(rrd_file):
if not os.path.isfile(rrd_file):
rrdtool.create(rrd_file,
"--step", "86400",
"DS:available:GAUGE:172800:0.0:100.0",
"RRA:AVERAGE:0.5:1:366",
)
step - интервал через который будут обновляться значения. У нас 86400 сек - это 1 день т.е. ежедневно.DS:available:GAUGE:172800:0:100 - источник данных
available - название источника
GAUGE - тип (в данном случае поддерживает числа с плавающей точкой)
172800 - значение которое должно быть 2*step :)
0:100 - интервал допустимых значений
RRA:AVERAGE:0.5:1:366 - архив значений
AVERAGE - тип (в данном случае среднее значение)
1:366 - означает что в архиве 366 записей с интервалом 1*step
Вносим данные
def rrd_update(rrd_file, value):
rrdtool.update(rrd_file, "N:%s" % str(value))
N - означает на текущее время (Now)через двоеточие указываются значения DS ( В случае нескольких DS могло быть так N:%s:%s:%s)
Создаем график в png
import tempfile
fd,path = tempfile.mkstemp('.png')
rrdtool.graph("/tmp/net.png",
"--imgformat", "PNG",
"--height", "250",
"--width", "550",
"--end", "now",
"--start", "end-2w-1h",
"--lower-limit", "99.3",
"--upper-limit", "100.0",
"--zoom", "1.5",
"--y-grid", "0.05:1",
"--x-grid=DAY:1:DAY:1:DAY:2:0:%a",
"--right-axis", "1:0",
"--right-axis-format", "%0.2lf%%",
"--slope-mode",
"--vertical-label=Up times/day",
"DEF:avl=%s:available:AVERAGE" % rrd_file,
"AREA:avl#00FF00:Up times(%)",
'GPRINT:avl:AVERAGE:avg\: %2.2lf%%')
Описание всех параметров есть в ссылке приведенной выше.Backup и Restore
Фаил rrd платформо зависим и может не заработать на другом железе или ОС(например из 32бит в 64бит), поэтому принято хранить бэкапы в xml.rrdtool dump файл.rrd > бэкап.xml
XML можно править вручную и залить обратно в rrd
rrdtool restore бэкап.xml > файл.rrd
Результат:
![]() |
| rrdtool пример графика |
Для обучения лучше выбрать меньший интервал чем 1 день, например 2 мин(step = 120).

Комментариев нет:
Отправить комментарий