|
| RRDServer (uniset::ObjectId objId, xmlNode *cnode, uniset::ObjectId shmID, const std::shared_ptr< SharedMemory > &ic=nullptr, const std::string &prefix="rrd") |
|
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_RRDServer Реализация RRD хранилища
- \ref sec_RRD_Comm
- \ref sec_RRD_Conf
- \ref sec_RRD_DSName
\section sec_RRD_Comm Общее описание RRDServer
"RoundRobinDatabase" - реализация циклического хранилища.
Процесс реализует циклическое хранение данных (от датчиков) и позволяет
конфигурировать любое количество rrd-баз и входящих в них "источников".
\section sec_RRD_Conf Настройка RRDServer
Пример секции конфигурации:
<RRDServer1 name="RRDServer1">
<rrd filename="rrdtest.rrd" filter_field="rrd" filter_value="1" step="5" ds_field="rrd1_ds" overwrite="0">
<item rra="RRA:AVERAGE:0.5:1:4320"/>
<item rra="RRA:MAX:0.5:1:4320"/>
</rrd>
<rrd filename="rrdtest2.rrd" filter_field="rrd" filter_value="2" step="10" ds_field="rrd2_ds" overwrite="0">
<item rra="RRA:AVERAGE:0.5:1:4320"/>
<item rra="RRA:MAX:0.5:1:4320"/>
</rrd>
</RRDServer1>
Где:
- filename - имя создаваемого rrd-файла
- filter_field - поле у датчика, определяющее, что его нужно сохранять в БД
- filter_value - значение filter_field, определяющее, что датчик нужно сохранять в БД
- ds_field - поле определяющее, параметр задающий формат хранения. Если ds_field не задано, то будет браться filter_field+filter_value+'_ds'.
- step - период обновления данных (в секундах)
- overwrite - [0,1]. Пересоздавать ли БД, если файл уже существует.
При этом в секции <sensors> у датчиков прописываются параметры относящиеся к источнику:
<sensors>
...
<item id="54" iotype="AI" name="AI54_S" textname="AI sensor 54" rrd="1" rrd1_ds="GAUGE:20:U:U"/>
<item id="55" iotype="AI" name="AI55_S" textname="AI sensor 55" rrd="1" rrd1_ds="GAUGE:20:U:U"/>
<item id="56" iotype="AI" name="AI56_S" textname="AI sensor 56" rrd="2" rrd2_ds="COUNTER:20:U:U"/>
<item id="57" iotype="AI" name="AI57_S" rrd2_ds_dsname='A57MyRRDName' textname="AI sensor 57" rrd="2" rrd2_ds="DERIVE:20:U:U"/>
...
</sensors>
Именование параметров
По умолчанию в качестве имени параметра берётся поле 'ds_field'_dsname='', если это поле не указано, то берётся name датчика.
- Предупреждения
- Имя не может превышать RRDServer::RRD_MAX_DSNAME_LEN.