是否可以在Ubuntu 12.04上使用MQTT Broker Mosquitto將發佈到所有渠道,訂閱,客戶端連接/斷開連接和錯誤的所有事件記錄到具有時間戳記的日誌文件中,以及那麼讓程序將其插入Mongodb或SQL數據庫?MQTT Broker - Mosquitto Event Logging
如果是這樣,這怎麼可能實現?
是否可以在Ubuntu 12.04上使用MQTT Broker Mosquitto將發佈到所有渠道,訂閱,客戶端連接/斷開連接和錯誤的所有事件記錄到具有時間戳記的日誌文件中,以及那麼讓程序將其插入Mongodb或SQL數據庫?MQTT Broker - Mosquitto Event Logging
如果是這樣,這怎麼可能實現?
AFAIK這是不可能的,現在蚊子。對於這樣的用例,我建議使用MQTT代理,它有一個插件和消息攔截系統,如HiveMQ。要查看所有的交互,有一些插件可以作爲開源使用,如Message Log Plugin。源代碼也可在Github上獲得。
要編寫例如消息到數據庫,look at this blog post,這應該有助於你開始。
請注意,由於我在HiveMQ上工作,因此可能會有偏差。
是的,你可以做到這一點。
您可以通過執行以下例如時間戳數據添加到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數據庫表中。有一些例子說明了如何在互聯網上做到這一點 - 這是我如何做到這一點。
這隻記錄發佈的消息,它不會記錄訂閱或連接,這些訂閱或連接只能從它自己的代理中看到 – hardillb
謝謝我想出了一個使用python MQTT客戶端和pymongo的解決方案。當收到消息時,它將它記錄到帶有時間戳,主題和消息負載的mongodb集合中。一旦我解決了這些錯誤,我會將其作爲答案發布。當設備斷開並連接時,它們現在也會向頻道發佈消息。 – Keenan