【发布时间】:2018-02-01 14:48:55
【问题描述】:
几周以来我一直在为这个问题苦苦挣扎,希望您能帮助我解决这个问题。
在我的 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->24224/tcp
目前,contextBroker 正在将一些 json 格式的数据推送到 mongoDB,这很好。
我是从 fluentd-ui 开始的,所以我真的很陌生。
我想要什么?
我正在尝试使用 fluentd-ui 获取从 contextBroker 推送到 mongoDB 的这些数据。 Fluentd-ui 应该从 contextBroker 获取这些数据,以便我可以进一步处理这些数据。我正在尝试将这些数据推送到另一个数据库,因为我必须用它做其他事情(可能又是一个 mongoDB,但另一个)或/也将这些数据推送到 elasticsearch / Kibana(我必须做一些分析)。
这个想法是,contextBroker 仍在将数据推送到原始 mongoDB,而且 fluentd 可以以某种方式从 contextBroker 接收这些数据。
这甚至可能吗? 对我来说,当 fluentd 用作“中间人”时也可以,但它仍应将数据推送到 mongoDB和其他地方(elasticsearch 等)。
我是如何运行容器的?
MongoDB:
sudo docker run --log-driver=fluentd --log-opt tag=docker.mymongodb --name mymongodb -d mongo
上下文代理:
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
我尝试了什么?
我试过了:
<source>
type forward
port 24224
</source>
<match docker.*>
type stdout
</match>
上面只打印 mongodb 和 contextbroker 本身的日志。但不是推送的数据(我还添加了 mongodb,只是为了检查它是否也可以这样工作)
我认为这是有道理的,但我必须订阅上下文代理,但我应该怎么做呢? fluentd可以做到这一点吗?你认为我必须做一个像 Java 应用程序这样的事情,它订阅 contextBroker 并且 fluentd 监听这个应用程序还是有更好的解决方案?
如果我能收到这些数据,我真的会很高兴,这样我就可以先将它们打印在一个简单的日志文件中(其余的我可以稍后检查)。
非常感谢您!
【问题讨论】:
-
我不知道 fluentd-ui 所以也许我在说些废话 :) 但是...你为什么要直接从 Orion MongoDB 使用上下文数据?我的意思是,Orion 数据库仅供 Orion 内部使用(持久性等)。您应该使用 Orion 提供的 NGSIv2 API(同步或使用订阅/通知机制)来使用 Orion 上下文数据。请注意,数据库模型可能会在 Orion 版本之间发生变化(因此会破坏您的集成),而 API 始终是向后兼容的。
标签: mongodb docker fiware-orion fluentd