Где я могу найти спецификацию файла RRD?

947
Liesmith

Я пытаюсь написать программу на Python для непосредственного извлечения информации из файлов производительности RRD, хранящихся на наших серверах на работе, но файлы не хранятся в формате открытого текста, и я не могу найти какую-либо спецификацию, которая разбивает фактический формат того, как RRDtool хранит информацию в файле RRD (то есть, первые N битов описывают X, следующие N битов описывают Y и т. д.).

Я знаю, что могу использовать утилиты «fetch» ​​и «dump» RRDtool, чтобы извлечь одну запись, или выгрузить весь файл в гигантский XML, но я хочу попробовать написать что-то с нуля, что даст мне больше контроля над тем, как файл прочитан, и сколько места занято (дампы XML составляют около 1 ГБ каждый).

Пример одной из ситуаций, на которые я хочу обратить внимание: нахождение последнего времени, когда сервер записал определенное значение (т. Е. Последний раз, когда он зарегистрировал больше определенного количества пропущенных пакетов).

Я посмотрел онлайн, но все, что я нахожу, просто указывает на использование утилит RRDtool, а не на любое описание того, как форматируется сам файл RRD.

Я прошу прощения, если это неправильный Exchange, на котором можно задать этот вопрос; это казалось наилучшим подходом, так как мой вопрос не совсем специфичен для программирования. Я также не уверен, что использую лучшие теги для этого вопроса, поэтому я, безусловно, открыт для предложений.

1

2 ответа на вопрос

1
anantary

Have you thought about using the JSON export functionality of RRDTool?

You could first export the contents of the RRD file to JSON, which is considerably more lightweight than XML, and then parse it and manipulate it to your liking.

http://oss.oetiker.ch/rrdtool/doc/rrdxport.en.html

Also worth mentioning are some PERL and R packages which might help you achieving your goal.

RRD editor for PERL: http://search.cpan.org/~dougleith/RRD-Editor/lib/RRD/Editor.pm For R: https://github.com/pldimitrov/Rrd

Спасибо за рекомендации; Я посмотрю в JSON (я ничего не знаю о Perl или R). Кроме того, обе эти ссылки 404, когда я пытаюсь их. Liesmith 8 лет назад 0
@ Лисмит, я исправил ссылки. В вашем случае я бы пошел с экспортом JSON, а затем постобработкой в ​​Python. anantary 8 лет назад 0
1
Richard Scrivener

Я думаю, что лучшее решение для понимания двоичного формата файла RRD - это загрузить исходный код RDDTool с https://oss.oetiker.ch/rrdtool/download.en.html. и обратная инженерия спецификации файла из исходного файла rrd_fetch .c.

Если вы хотите ознакомиться со структурой XML RRD, перейдите по ссылке https://serverfault.com/questions/287829/where-documentation-of-rrddump-xml-format-is.

После того, как вы проделали тяжелую работу, вы можете опубликовать сводку своих результатов здесь :).

Спасибо, я постараюсь когда-нибудь разобраться. Мои знания C практически нулевые, но это может дать некоторые подсказки. Если так, я обновлю свой оригинальный вопрос ... но не ожидайте, что что-то будет завершено слишком быстро в этом отношении ... Liesmith 5 лет назад 0

Похожие вопросы