2014-01-26 47 views
2

是否可以在Ubuntu 12.04上使用MQTT Broker Mosquitto将发布到所有渠道,订阅,客户端连接/断开连接和错误的所有事件记录到具有时间戳记的日志文件中,以及那么让程序将其插入Mongodb或SQL数据库?MQTT Broker - Mosquitto Event Logging

如果是这样,这怎么可能实现?

回答

0

AFAIK这是不可能的,现在蚊子。对于这样的用例,我建议使用MQTT代理,它有一个插件和消息拦截系统,如HiveMQ。要查看所有的交互,有一些插件可以作为开源使用,如Message Log Plugin。源代码也可在Github上获得。

要编写例如消息到数据库,look at this blog post,这应该有助于你开始。

请注意,由于我在HiveMQ上工作,因此可能会有偏差。

+1

谢谢我想出了一个使用python MQTT客户端和pymongo的解决方案。当收到消息时,它将它记录到带有时间戳,主题和消息负载的mongodb集合中。一旦我解决了这些错误,我会将其作为答案发布。当设备断开并连接时,它们现在也会向频道发布消息。 – Keenan

0

是的,你可以做到这一点。

您可以通过执行以下例如时间戳数据添加到Mosquitto输出:

mosquitto_sub -v -t '#' | xargs的-d $ '\ n' -L1 SH -c '日期 “+%d%T $ 0”'

,你可以很明显其输出到一个文本文件,以及通过执行以下操作:

mosquitto_sub -v -t'#'| xargs的-d $ '\ n' -L1 SH -c '日期 “+%d%T $ 0”'> /var/tmp/My_Mosquitto.log

您可以通过查看日志文件:

cat /var/tmp/My_Mosquitto.log

然后,您将不得不说写一个php脚本来读取此文本文件并将数据添加到数据库表。

另一个(好得多)选项将使用node.js将所有MQTT数据记录到mysql数据库表中。有一些例子说明了如何在互联网上做到这一点 - 这是我如何做到这一点。

+0

这只记录发布的消息,它不会记录订阅或连接,这些订阅或连接只能从它自己的代理中看到 – hardillb