Fluentd-ui:我可以从推送到mongoDB的fiware orion contextbroker接收/捕获数据吗?

时间:2018-02-01 14:48:56

标签: mongodb docker fiware-orion fluentd

我几周来一直在努力解决这个问题,我希望你能帮助我。

在我的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:24224->24224/ TCP

现在,contextBroker正在将一些json格式数据推送到mongoDB,这很好。

我从流利的ui开始,所以我真的很新。

我想要什么?

我正在尝试使用fluentd-ui将这些数据从contextBroker推送到mongoDB。 Fluentd-ui应该从contextBroker获取这些数据,以便我可以进一步处理这些数据。我试图将这些数据推送到另一个数据库,因为我必须做其他事情(可能再次是mongoDB,但另一个)或/还将这些数据推送到elasticsearch / Kibana(我必须做一些分析)。

这个想法是,contextBroker仍在将数据推送到原始的mongoDB,但是流利的人也能以某种方式从contextBroker接收这些数据。

这甚至可能吗? 对我来说也可以,当流畅的人被用作“中间人”时,它仍然应该将数据推送到mongoDB 其他地方(elasticsearch等)。

我是如何运行容器的?

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

我尝试了什么?

我试过了:

<source>
  type forward
  port 24224
</source>

<match docker.*>
  type stdout
</match>

以上仅打印mongodb的日志和contextbroker本身。但不是推送的数据(我还添加了mongodb,只是为了检查它是否也能像这样工作)

我认为这是有道理的,但我必须订阅上下文经纪人,但我该怎么做呢?能够流利地做到这一点吗?你认为我必须做一些类似于Java应用程序的东西,它从contextBroker订阅并且流畅地监听这个应用程序,还是有更好的解决方案?

老实说,如果我只能收到这些数据,我会很高兴,所以我可以先用一个简单的日志文件打印出来(其余的我稍后可以查看)。

非常感谢你!

1 个答案:

答案 0 :(得分:1)

如果你想要的是在应用程序中接收数据,然后登录或做一些更复杂的事情,你可以使用猎户座subscriptions机制。

使用Orion的订阅机制,您可以在特定上下文更改时收到通知,然后接收所有上下文信息。

例如:

curl -v localhost:1026/v2/subscriptions -s -S --header 'Content-Type:  application/json' \
  -d @- <<EOF
{
  "description": "A subscription to get info about Room1",
  "subject": {
    "entities": [
      {
        "id": "Room1",
        "type": "Room"
      }
    ],
    "condition": {
      "attrs": [
        "pressure"
      ]
    }
  },
  "notification": {
    "http": {
      "url": "http://localhost:1028/accumulate"
    },
    "attrs": [
      "temperature"
    ]
  },
  "expires": "2040-01-01T14:00:00.00Z",
  "throttling": 5
}
EOF

在前面的示例中,您告诉Orion Context Broker每当“Room”类型的“Romo1”上下文的“pressure”属性发生更改时通知您,然后只向您发送“temperature”信息。

如果您想向您发送所有信息,您可以在“通知”字段中留下“attrs”字段,清空,然后Orion会向您发送整个上下文信息。

最后,在字段notification.url中,您必须指明要通知的应用程序的URL。请记住,如果Orion在Docker Container中工作,那么应该能够看到您的应用程序。例如,您应该在与猎户座相同的泊坞网络中运行您的应用程序。

我建议您阅读Orion的documentation有关订阅的信息,以便深入了解。它非常好而且清晰。

可悲的是,我没有熟练使用u-ui的经验所以我不知道你是否可以使用这种机制直接与Orion联系。

我希望我能帮到你。