Де можна знайти специфікацію файлу RRD?


1

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

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

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

Я подивився в Інтернеті, але все, що я знаходжу, лише вказує на використання утиліт RRDtool, а не будь-який опис того, як форматується сам файл RRD.

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

Відповіді:


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


Дякую за рекомендації; Я загляну в JSON (я не знаю нічого про Perl чи R). Крім того, обидва ці посилання мають 404, коли я їх пробую.
Лізміт

@Liesmith, я виправив посилання. У вашому випадку я б пішов з експортом JSON, а потім післяобробкою в Python.
ананатар

1

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

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

Після того як ви доклали важкої роботи, ви можете опублікувати короткий виклад своїх висновків тут :).


Дякую, я спробую розглянути це колись. Моє знання C практично не дорівнює, але це може дати деякі підказки. Якщо так, я оновлю своє первісне запитання ... але не сподіваюся, що щось буде занадто швидко завершене в цьому відношенні ...
Лізміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.