Объединение отдельных файлов RRD в один график

Как с помощью rrd4j объединить несколько файлов .rrd либо в один файл .rrd, либо (в идеале) в один график?

Подробнее:

У меня есть несколько экземпляров практически одного и того же .rrd. Каждый файл записывает показания нескольких датчиков, все с именами sensor-1, sensor-2 в разных файлах. Таким образом, data1.rrd, data2.rrd будут содержать источники данных sensor-1 и т. д.

Определение DS выглядит следующим образом.

DS:sensor-1:GAUGE:35:U:U DS:sensor-2:GAUGE:35:U:U DS:sensor-3:GAUGE:35:U:U

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

val graph = new RrdGraphDef()
graph.datasource("sensor-1", data1.rrd", "sensor-1", AVERAGE)
graph.datasource("sensor-2", data1.rrd", "sensor-1", AVERAGE)
graph.line("sensor-1", green)
graph.line("sensor-2", red)

но если я сделаю то же самое, но для data2.rrd (добавление другого источника данных к тому же экземпляру graph), кажется, что предыдущие данные будут потеряны, и на графике будет отображаться только один из данных файла.

Я подозреваю, что каждая DS, имеющая одно и то же имя в файлах, может быть проблемой.

Предложения о том, как добиться того же с помощью обычного инструмента RRD, также могут быть полезны, поскольку я могу перевести на rrd4j


person Toby    schedule 05.02.2016    source источник


Ответы (1)


Этот оператор: graph.datasource("varname", "filename.rrd", "dsname", AVERAGE) определяет новую используемую переменную с именем varname, которая соответствует DS dsname в файле filename.rrd, консолидированную с помощью функции консолидации AVERAGE.

Понятно, что на одном графике не может быть двух переменных с одинаковыми именами; однако ничто не мешает вам извлекать данные из нескольких разных файлов RRD и ничто не мешает вам использовать другое имя переменной вместо имени DS.

Однако вы должны использовать только буквенно-цифровые символы в имени переменной — в частности, избегайте «-», даже если это должно работать. Подчеркивания в порядке.

Итак, это совершенно верно: graph.datasource("sensora", "sitea.rrd", "sensor", AVERAGE) graph.datasource("sensorb", "siteb.rrd", "sensor", AVERAGE) и будет определять две переменные, sensora и sensorb, соответствующие одному и тому же названию DS в двух разных файлах RRD.

Не используйте sensor-1 в качестве имени переменной, так как оно содержит символ «-».

Не видя сбойного кода RRD4j, я не могу сказать наверняка, но я подозреваю, что это либо потому, что вы не переименовываете имя переменной, заставляя обе переменные использовать одно и то же имя и перезаписывать друг друга, либо из-за '- ' в имени переменной.

person Steve Shipway    schedule 05.02.2016