1

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

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

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

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

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

2 ответа2

1

Задумывались ли вы об использовании функции экспорта 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

1

Я думаю, что лучшим решением для понимания двоичного формата файла 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.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .