全台最快的MQTT上線了(<-廣告用詞),大家不用再跑澳門emqx,也不用打名子超長的eclipseprojects
享用小霸王實驗室所建立的台灣最快最穩(<-廣告用詞)由HiveMQ所架設的MQTT Broker,完全免費~以後也不會收費
我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195
MQTTGO說明
全台最快的MQTT上線了(<-廣告用詞),大家不用再跑澳門emqx,也不用打名子超長的eclipseprojects
享用小霸王實驗室所建立的台灣最快最穩(<-廣告用詞)由HiveMQ所架設的MQTT Broker,完全免費~以後也不會收費
直接在MQTT Broker輸入
位址:mqttgo.io
port:1883
不須帳號密碼,Topic自己取,也可以用中文Topic喔。
Websocket也即將開通喔~
本筆記將說明如何在ubuntu安裝HiveMQ CE,可以分成以下五個步驟
一、安裝HiveMQ CE
二、安裝相關Plug-in
三、安裝Prometheus監測軟體
四、安裝Grafana數據化面板
五、設定所有服務為開機自動執行
一、安裝HiveMQ CE
1.Update系統
sudo apt-get update
sudo apt-get upgrade -y
2.建議安裝Chromium(此為個人習慣,與本安裝無關):
sudo apt-get install chromium-browser
3.安裝Java環境
sudo apt-get install default-jre -y default-jdk -y
4.HiveMQ CE版原始檔網址:https://github.com/hivemq/hivemq-community-edition
直接下載執行檔,解壓縮後,放到Home目錄下
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654202198-3068255854-g_n.png?resize=840%2C375&ssl=1)
解壓縮後,進入資料夾
cd hivemq-ce-<version>
並執行命令即可啟動mqtt
bin/run.sh
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654202475-3408578518-g_n.png?resize=840%2C357&ssl=1)
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654202496-164553674-g_n.png?resize=839%2C338&ssl=1)
此時可以利用MQTTLENS(Chrome搜尋MQTTLENS安裝此應用程式),使用localhost:1883進行測試
訂閱並推播同一個主題,看看是否能收到資料,如果有的話,就算完成基礎的MQTT Broker的安裝了。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654202842-3001035372-g_n.png?resize=842%2C519&ssl=1)
目前這個Broker仍屬於最基本的服務,建議完成第二步驟的插件安裝
二、安裝相關Plug-in
本部份預期安裝兩個插件:Prometheus效能檢視、denywildcard禁止瀏覽目錄安全套件
Prometheus:https://www.hivemq.com/extension/prometheus-extension/
denywildcard:https://www.hivemq.com/extension/deny-root-wildcard-subscriptions-extension/
下載後,解壓縮放置到hive資料夾的extension內,加上原本的allow-all-extension,這樣就一共三個
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654203140-3102952290-g.png?resize=841%2C428&ssl=1)
視需要進行修改設定檔,開啟Prometheus-extension資料夾內的設定檔prometheusconfiguration.properties,其中port=9399、metric_path=/metrics,代表這個服務會建立在localhost:9399/metric下。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654203459-1972174783-g.png?resize=842%2C498&ssl=1)
使用Ctrl+C,關閉HiveMQ服務,並重新啟動,即可啟動插件服務
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654203701-1266754980-g_n.png?resize=845%2C596&ssl=1)
Prometheus啟動後,我們可以到localhost:9399/metric查看數據
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654203776-1756951444-g_n.png?resize=840%2C498&ssl=1)
這些數據為文字方式,不好辨識,因此我們需要再安裝圖形界面,第一個是Prometheus的Web服務,然後是Grafana數據化面板,請參考第三第四節
到這裡為止,其實1883的Broker已經可以正常運作了,如果要新增WSS(WebSocket)的話,可以開啟hivemq資料夾內的conf資料夾的檔案config.xml
並將以下內容加入到原本的listeners區段
<websocket-listener>
<port>8000</port>
<bind-address>0.0.0.0</bind-address>
<path>/mqtt</path>
<name>my-websocket-listener</name>
<subprotocols>
<subprotocol>mqttv3.1</subprotocol>
<subprotocol>mqtt</subprotocol>
</subprotocols>
<allow-extensions>true</allow-extensions>
</websocket-listener>
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654239878-1437944217-g.png?resize=840%2C623&ssl=1)
存檔後,重新開啟HiveMQ,就可以使用8000進行WSS通訊了
三、安裝Prometheus監測軟體
接下來要啟動Prometheus的Web服務,請至此處下載:https://prometheus.io/download/,下載需要的版本
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654204454-4269687159-g.png?resize=840%2C405&ssl=1)
下載後,一樣解壓縮到Home底下
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654204542-912585896-g_n.png?resize=839%2C561&ssl=1)
如須設定相關內容,請開啟資料夾內的prometheus.yml,修改資料來源為上面localhost:9399,所以改為9393,完成修改後存檔。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654204940-3118998289-g.png?resize=839%2C518&ssl=1)
執行方式:直接點兩下執行檔prometheus即可執行。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654263553-1795148745-g.png?resize=838%2C631&ssl=1)
此時可以利用瀏覽器開啟:localhost:9090,在中間空白處輸入hive就可以列出hiveMQ的相關數據欄位,如果沒有列出hive的任何數據,請檢查上面的設定port是否相符。
此處我選擇incoming_publish_count作為監測內容,選擇後,按下右側的Execute按鈕。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654205308-2120645253-g_n.png?resize=840%2C343&ssl=1)
並選擇Graph,就可以看到即時數據。
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654205349-2711624529-g_n.png?resize=839%2C557&ssl=1)
不過這個圖表數據不會自己更新,也不能存檔,所以沒什麼屁用。安裝這個的真正原因是要把數據再傳給下面這個Grafana來顯示
四、安裝Grafana數據化面板
執行以下命令進行安裝
sudo apt-get install -y apt-transport-https software-properties-common wget -y
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
以下命令則為啟動本服務命令
sudo systemctl daemon-reload
sudo systemctl start grafana-server
接著我們開啟localhost:3000,即可開啟Grafana網站。第一次登入使用admin/admin登入,然後會馬上要求輸入後續的登入密碼
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207087-3486380588-g_n.png?resize=844%2C947&ssl=1)
進入主功能區
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207000-3737302644-g_n.png?resize=841%2C607&ssl=1)
加入prometheus資料來源
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207416-3661774200-g_n.png?resize=842%2C509&ssl=1)
在URL處輸入prometheus的網址:http://localhost:9090,其餘不用變更,直接按最下面的Save and Test
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207452-3038754030-g.png?resize=842%2C555&ssl=1)
完成後,即會出現資料來源沒問題的訊息
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207565-6270990-g.png?resize=844%2C547&ssl=1)
加入一個Dashboard圖表,並選New Panel
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654207999-1772387178-g.png?resize=841%2C593&ssl=1)
下方加入一個要監測的欄位後,點選+Query,確認數據是否正確,最後按右上的Apply即可完成第一個監測圖表
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654208126-4150935676-g_n.png?resize=839%2C524&ssl=1)
可以依據需求加入多個圖表,但記得對Dashboard存檔
![](https://i0.wp.com/pic.pimg.tw/youyouyou/1654208438-3997782239-g_n.png?resize=840%2C364&ssl=1)
作到這裡系統不僅可以正常運作,也可以有系統運作的數據畫面。
最後一步就是將上面三個服務都設定為自動啟動。
五、設定所有服務為開機自動執行
確認上面的設定都沒問題後,我們可以將所有服務都設定為自行啟動。包括
- HiveMQ CE
- prometheus
- Grafana
HiveMQ CE的自動執行
1.在/etc/systemd/system/建立一個檔案,副檔名必須是.service,例如HiveMQTT.service
2.將MQTT執行的SH檔改為可自動執行
sudo chmod +x /修改成你的MQTT執行路徑
3.檔案內容如下
[Unit]
#簡單描述
Description=Start HiveMQTT Service
After=network.target
[Service]
#程式路徑
ExecStart=/修改成你的MQTT執行路徑
#一直重新啟動
Restart=always
#重新啟動時間=10s
RestartSec=10
#系統中的名稱
SyslogIdentifier=HiveMQTTSerive
#使用執行的權限
User=root
[Install]
WantedBy=multi-user.target
4.設定開機啟動
sudo systemctl enable HiveMQTT.service
5. 立即啟動
sudo systemctl start HiveMQTT.service
6.查看執行狀態
sudo systemctl status HiveMQTT.service
prometheus
依照MQTT的方式進行處理,service 檔案的內容如下
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Restart=always
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=0.0.0.0:9090
[Install]
WantedBy=multi-user.target
grafana設定啟動
sudo ln -s /lib/systemd/system/grafana-server.service /etc/systemd/system/grafana-server.service
sudo systemctl enable grafana-server
sudo systemctl start grafana-server