|
| BackendOpenTSDB (uniset::ObjectId objId, xmlNode *cnode, uniset::ObjectId shmID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="opentsdb") |
|
std::shared_ptr< LogAgregator > | getLogAggregator () |
|
std::shared_ptr< DebugStream > | log () |
|
| UObject_SK (uniset::ObjectId id, xmlNode *node=uniset::uniset_conf() ->getNode("UObject"), const std::string &argprefix="", xmlNode *globalConfNode=nullptr) |
|
long | getValue (uniset::ObjectId sid) |
|
void | setValue (uniset::ObjectId sid, long value) |
|
void | askSensor (uniset::ObjectId sid, UniversalIO::UIOCommand, uniset::ObjectId node=uniset::uniset_conf() ->getLocalNode()) |
|
void | updateValues () |
|
virtual uniset::SimpleInfo * | getInfo (const char *userparam) override |
|
virtual bool | setMsg (uniset::ObjectId code, bool state=true) noexcept |
|
std::shared_ptr< DebugStream > | log () noexcept |
|
std::shared_ptr< uniset::LogAgregator > | logAgregator () noexcept |
|
void | init_dlog (std::shared_ptr< DebugStream > d) noexcept |
|
std::string | dumpIO () |
|
std::string | str (uniset::ObjectId id, bool showLinkName=true) const |
|
std::string | strval (uniset::ObjectId id, bool showLinkName=true) const |
|
std::string | msgstr (uniset::ObjectId id, bool showLinkName=true) const |
|
std::string | dumpVars () |
|
std::string | help () const noexcept |
|
virtual Poco::JSON::Object::Ptr | httpGet (const Poco::URI::QueryParameters &p) override |
|
virtual Poco::JSON::Object::Ptr | httpRequest (const std::string &req, const Poco::URI::QueryParameters &p) override |
|
virtual Poco::JSON::Object::Ptr | httpHelp (const Poco::URI::QueryParameters &p) override |
|
| UniSetObject (const std::string &name, const std::string §ion) |
|
| UniSetObject (uniset::ObjectId id) |
|
virtual CORBA::Boolean | exist () override |
|
virtual uniset::ObjectId | getId () override |
|
const uniset::ObjectId | getId () const |
|
std::string | getName () const |
|
virtual uniset::ObjectType | getType () override |
|
const std::string | getStrType () |
|
virtual uniset::SimpleInfo * | apiRequest (const char *query) override |
|
virtual void | push (const uniset::TransportMessage &msg) override |
| поместить сообщение в очередь Подробнее...
|
|
virtual void | pushMessage (const char *msg, ::CORBA::Long mtype, const ::uniset::Timespec &tm, const ::uniset::ProducerInfo &pi, ::CORBA::Long priority, ::CORBA::Long consumer) override |
| поместить текстовое сообщение в очередь Подробнее...
|
|
uniset::ObjectPtr | getRef () const |
|
std::shared_ptr< UniSetObject > | get_ptr () |
|
virtual timeout_t | askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override |
|
timeout_t | checkTimers (UniSetObject *obj) |
|
timeout_t | getTimeInterval (uniset::TimerId timerid) const |
|
timeout_t | getTimeLeft (uniset::TimerId timerid) const |
|
\page page_BackendOpenTSDB Реализация шлюза к БД поддерживающей интерфейс OpenTSDB
- \ref sec_OpenTSDB_Comm
- \ref sec_OpenTSDB_Conf
- \ref sec_OpenTSDB_Name
- \ref sec_OpenTSDB_Queue
\section sec_OpenTSDB_Comm Общее описание шлюза к 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 - Размер очереди сообщений для обработки изменений по датчикам. При большом количестве отслеживаемых датчиков, размер должен быть достаточным, чтобы не терять изменения.