Где я могу найти спецификацию файла RRD?
Я пытаюсь написать программу на Python для непосредственного извлечения информации из файлов производительности RRD, хранящихся на наших серверах на работе, но файлы не хранятся в формате открытого текста, и я не могу найти какую-либо спецификацию, которая разбивает фактический формат того, как RRDtool хранит информацию в файле RRD (то есть, первые N битов описывают X, следующие N битов описывают Y и т. д.).
Я знаю, что могу использовать утилиты "fetch" и "dump" RRDtool, чтобы извлечь одну запись, или выгрузить весь файл в гигантский XML, но я хочу попробовать написать что-то с нуля, что даст мне больше контроля над тем, как файл прочитан, и сколько места занято (дампы XML составляют около 1 ГБ каждый).
Пример одной из ситуаций, на которые я хочу обратить внимание: найти последний раз, когда сервер записал конкретное значение (т. Е. Последний раз, когда он зарегистрировал больше определенного количества пропущенных пакетов).
Я посмотрел онлайн, но все, что я нахожу, просто указывает на использование утилит RRDtool, а не на любое описание того, как форматируется сам файл RRD.
Я прошу прощения, если это неправильный Exchange, на котором можно задать этот вопрос; это казалось наилучшим подходом, так как мой вопрос не совсем специфичен для программирования. Я также не уверен, что использую лучшие теги для этого вопроса, поэтому я, безусловно, открыт для предложений.
2 ответа
Я думаю, что лучшее решение для понимания двоичного формата файла 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
После того, как вы проделали тяжелую работу, вы можете опубликовать сводку своих результатов здесь:).
Задумывались ли вы об использовании функции экспорта JSON в RRDTool?
Сначала вы можете экспортировать содержимое файла RRD в JSON, который значительно легче XML, а затем проанализировать его и манипулировать им по своему вкусу.
http://oss.oetiker.ch/rrdtool/doc/rrdxport.en.html
Также стоит упомянуть некоторые пакеты PERL и R, которые могут помочь вам в достижении вашей цели.
Редактор RRD для PERL: http://search.cpan.org/~dougleith/RRD-Editor/lib/RRD/Editor.pm
Для R: https://github.com/pldimitrov/Rrd