我几周来一直在努力解决这个问题,我希望你能帮助我 .
在我的Ubuntu服务器(16.04)上,我安装了Docker . 安装了三个docker容器:
-
contextBroker (来自docker image fiware / orion),侦听端口:0.0.0.0:1026-> 1026 / tcp
-
mongoDB (来自docker image mongo),监听端口:27017 / tcp
-
fluentd-ui (来自docker image dvladnik / fluentd-ui),侦听端口:0.0.0.0:9292-> 9292 / tcp,0.0.0.0:24224-> 24244 / tcp
现在,contextBroker正在将一些json格式数据推送到mongoDB,这很好 .
我从流利的ui开始,所以我真的很新 .
What do I want?
我试图通过fluentd-ui将这些数据从contextBroker推送到mongoDB . Fluentd-ui应该从contextBroker获取这些数据,以便我可以进一步处理这些数据 . 我试图将这些数据推送到另一个数据库,因为我必须做其他事情(可能再次是mongoDB,但另一个) or / also 将这些数据推送到elasticsearch / Kibana(我必须做一些分析) .
这个想法是,contextBroker仍在将数据推送到原始的mongoDB,但是流利的人也能以某种方式从contextBroker接收这些数据 .
这甚至可能吗?对我来说也可以,当fluentd被用作"men in the middle"时,它仍然应该将数据推送到其他地方的mongoDB and (elasticsearch等) .
How did I run the containers?
MongoDB的:
sudo docker run --log-driver=fluentd --log-opt tag=docker.mymongodb --name mymongodb -d mongo
ContextBroker:
sudo docker run -d --name cbdocker --link mymongodb:mymongodb --log-driver=fluentd --log-opt tag=docker.mycontextbroker -p 1026:1026 fiware/orion -dbhost mymongodb -logLevel DEBUG
What did I try?
我试过这个:
<source>
type forward
port 24224
</source>
<match docker.*>
type stdout
</match>
以上仅打印mongodb的日志和contextbroker本身 . 但不是推送数据(我还添加了mongodb,只是为了检查它是否也能像这样工作)
我认为这是有道理的,但我必须订阅上下文经纪人,但我该怎么做呢?能够流利地做到这一点吗?你认为我必须做一些类似Java应用程序的东西,它从contextBroker订阅并且流畅地监听这个应用程序还是有更好的解决方案?
老实说,如果我只能接收这些数据,我会很高兴,所以我可以先在一个简单的日志文件中打印它们(其余的我稍后可以查看) .
非常感谢你提前!
1 回答
如果您想要的是在应用程序中接收数据然后登录或执行更复杂的操作,您可以使用Orion subscriptions机制 .
使用Orion的订阅机制,您可以在特定上下文更改时收到通知,然后接收所有上下文信息 .
For example:
在前面的示例中,您告诉Orion Context Broker每次“Room”类型的“Romo1”上下文的“pressure”属性发生更改时通知您,然后只向您发送“temperature”信息 .
如果您想向您发送所有信息,您可以在“通知”字段中留下“attrs”字段,清空,然后Orion会向您发送整个上下文信息 .
最后在字段notification.url中,您必须指明要通知的应用程序的URL . 请记住,如果Orion在Docker Container中工作,那么应该能够看到您的应用程序 . 例如,您应该在与Orion相同的docker网络中运行您的应用程序 .
我建议你阅读Orion的documentation关于订阅,以便深入了解 . 它非常好而且清晰 .
可悲的是我没有熟练使用u-ui的经验所以我不知道你是否可以使用这种机制直接与Orion联系 .
我希望我能帮到你 .