Общее описание шлюза к OpenTSDB
"OpenTSDB" - time series database. Специальная БД оптимизированная для хранения временных рядов (по простому: данных с временными метками). Класс реализует пересылку указанных (настроенных) датчиков в БД поддерживающую интерфейс совместимый с OpenTSDB. В текущей реализации используется посылка строк в формате Telnet
put <metric> <timestamp>.msec <value> <tagk1=tagv1[ tagk2=tagv2 ...tagkN=tagvN]>
См. http://opentsdb.net/docs/build/html/user_guide/writing/index.html
Настройка BackendOpenTSDB
Пример секции конфигурации:
<BackendOpenTSDB name="BackendOpenTSDB1" host="localhost" port="4242"
filter_field="tsdb" filter_value="1"
prefix="uniset"
tags="TAG1=VAL1 TAG2=VAL2 ..."/>
Где:
- host - host для связи с TSDB
- port - port для связи с TSDB. Default: 4242
- filter_field - поле у датчика, определяющее, что его нужно сохранять в БД
- filter_value - значение filter_field, определяющее, что датчик нужно сохранять в БД
- prefix - необязательный префикс дописываемый ко всем параметрам (prefix.parameter)
- tags - теги которые будут записаны для каждой записи, перечисляемые через пробел.
При этом в секции <sensors> у датчиков можно задать дополнительные теги. Помимо этого можно переопределить название метрики (tsdb_name="...").
<sensors>
...
<item id="54" iotype="AI" name="AI54_S" textname="AI sensor 54" tsdb="1" tsdb_tags=""/>
<item id="55" iotype="AI" name="AI55_S" textname="AI sensor 55" tsdb="1" tsdb_tags="" tsdb_name="MySpecName"/>
...
</sensors>
Имя значения сохраняемое в БД.
По умолчанию в качестве имени берётся name, но при необходимости можно указать определиться специальное имя. Для этого достаточно задать поле tsdb_name="...".
Буфер на запись в БД
В данной реализации встроен специальный буфер, который накапливает данные и скидывает их пачкой в БД. Так же он является защитным механизмом на случай если БД временно недоступна. Параметры буфера задаются аргументами командной строки или в конфигурационном файле. Доступны следующие параметры:
- bufSize - размер буфера, при заполнении которого происходит посылка данных в БД
- bufMaxSize - максимальный размер буфера, при котором начинают откидываться новые сообщения (потеря сообщений)
- bufSyncTimeout - период сброса данных в БД
- reconnectTime - время на повторную попытку подключения к БД
- sizeOfMessageQueue - Размер очереди сообщений для обработки изменений по датчикам. При большом количестве отслеживаемых датчиков, размер должен быть достаточным, чтобы не терять изменения.