【发布时间】:2014-01-26 07:49:27
【问题描述】:
是否可以在 Ubuntu 12.04 上使用 MQTT Broker Mosquitto 将所有事件(例如发布到所有通道、订阅、客户端连接/断开连接和错误的消息)记录到带有时间戳的日志文件中,然后插入程序这个放到数据库是MongoDB还是SQL?
如果是这样,如何实现?
【问题讨论】:
标签: mongodb logging mqtt database
是否可以在 Ubuntu 12.04 上使用 MQTT Broker Mosquitto 将所有事件(例如发布到所有通道、订阅、客户端连接/断开连接和错误的消息)记录到带有时间戳的日志文件中,然后插入程序这个放到数据库是MongoDB还是SQL?
如果是这样,如何实现?
【问题讨论】:
标签: mongodb logging mqtt database
是的,你可以这样做。
您可以通过执行以下示例将时间戳数据添加到 Mosquitto 输出:
mosquitto_sub -v -t '#' | xargs -d$'\n' -L1 sh -c 'date "+%D %T $0"'
您显然也可以通过执行以下操作将其输出到文本文件:
mosquitto_sub -v -t '#' | xargs -d$'\n' -L1 sh -c 'date "+%D %T $0"' > /var/tmp/My_Mosquitto.log
您可以通过以下方式查看日志文件:
cat /var/tmp/My_Mosquitto.log
然后您必须编写一个 php 脚本来读取此文本文件并将数据添加到数据库表中。
另一个(更好)选项是使用 node.js 将所有 MQTT 数据记录到 mysql 数据库表中。网上有很多关于如何做到这一点的例子——我就是这样做的。
【讨论】:
AFAIK 现在用 mosquitto 是不可能的。对于这样的用例,我建议使用具有插件和消息拦截系统的 MQTT 代理,例如 HiveMQ。要查看所有交互,可以使用一些开源插件,例如 Message Log Plugin。源代码也可以在Github获得。
写例如将消息发送到数据库look at this blog post,这应该可以帮助您入门。
请注意,我可能有偏见,因为我在 HiveMQ 上工作。
【讨论】: