[{"categories":["System"],"collections":null,"content":"Docker compose 一鍵部署完整監控系統組件","date":"2023-12-12","objectID":"/zh-tw/theme-document-docker-conpose-emqx_monitor/","tags":["Docker","System"],"title":"MQTT Broker 性能監控最佳佈建方案 - EMQX(二)","uri":"/zh-tw/theme-document-docker-conpose-emqx_monitor/"},{"categories":["System"],"collections":null,"content":"前言\r資訊\r在開始閱讀本文前 建議先瀏覽前篇文章 高性能物聯網MQTT Broker - EMQX 了解EMQX相關資訊\r成功建立EMQX來作為MQTT的大腦之後 ，對於Server是否能承受相應的資源消耗是一個難以估量的場景，而透過監控性能上的變化，再由一個能及時反饋當前狀況的圖表。 相信能夠讓我們更進一步的去應對接下來會預期到的風險。 但僅僅是如此還不能達到像標題描述的那麼厲害，我們需要一個有別於過去一個個組件安裝完成再進行資料串接的安裝方式。 ~~~讓自己可以更早下班😂~~~ 而這就會提到今天的主角 Docker compose !! ，比Docker再更進階一些，但是可以一次部署多個Docker來達到一鍵啟動所有組件 開始之前\r在正式進入我們今日主題之前，會需要準備的工具如下 Virtual Machine (Centos,Ubuntu) Docker Docker Compose git 提示\rDocker安裝可以參照官方連結選擇合適的作業系統 git 安裝 1 sudo apt install git #Ubuntu 1 sudo yum install git #Centos 前置步驟\r透過Git抓取本次檔案 並進入該資料夾 1 2 git clone https://github.com/as183789043/EMQX-Single_Node_Monitor.git cd EMQX-Single_Node_Monitor 新增檔案並修改權限 (理論上Docker compsoe 可以自己建立，但筆者實作時會有權限問題，故改為手動建立) 1 2 mkdir emqx1_data chmod 777 emqx1_data 2024/03/03更新 排除手動修改權限操作\r透過在檔案 docker-compose.yaml 新增一個busybox容器，代替過去手動設定權限的方式 再將原emqx容器的啟動順序更改為等待busybox任務完成之後\r啟動檔案 1 docker compose up -d 到這裡就成功將所有監控組件啟動了，我們進入下一階段 檔案內容說明\r對於拉取下來的檔案具體做了哪些事情，以及程式碼的細部講解都會在這個章節進行說明 docker-compose.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 version: \u0026#39;3\u0026#39; services: busybox: image: busybox:latest container_name: bustybox volumes: - ./emqx1_data/:/root/emqx1_data/ command: [ \u0026#34;chown\u0026#34;, \u0026#34;-R\u0026#34;,\u0026#34;1000:1000\u0026#34; ,\u0026#34;root/emqx1_data\u0026#34;] networks: - emqx-bridge emqx1: image: emqx:5.3.2 container_name: emqx1 healthcheck: test: [\u0026#34;CMD\u0026#34;, \u0026#34;/opt/emqx/bin/emqx ctl\u0026#34;, \u0026#34;status\u0026#34;] interval: 30s timeout: 60s retries: 5 ports: - 1883:1883 - 8083:8083 - 8084:8084 - 8883:8883 - 18083:18083 volumes: - ./emqx1_data/:/opt/emqx/data networks: emqx-bridge: aliases: - node1.emqx.io depends_on: \u0026#39;busybox\u0026#39;: condition: service_completed_successfully prometheus: image: prom/prometheus container_name: prometheus volumes: - ./prometheus.yaml:/etc/prometheus/prometheus.yaml command: --config.file=/etc/prometheus/prometheus.yaml ports: - 9090:9090 networks: - emqx-bridge pushgateway: image: prom/pushgateway container_name: pushgateway ports: - 9091:9091 networks: - emqx-bridge node-exporter: image: prom/node-exporter container_name: node-exporter ports: - 9100:9100 networks: - emqx-bridge grafana: image: grafana/grafana-oss container_name: grafana ports: - 3000:3000 networks: - emqx-bridge networks: emqx-bridge: driver: bridge docker-compose.yaml 說明\rversion : '3' 是目前docker compose的固定版本 可根據官網發布進行調整 services : 各個組件的服務名稱(emqx1、prometheus) container_name : 在虛擬機上的容器識別名稱\rports : 前者是外部連線port 後者是內部port\rvolumes : 外部文件掛載到容器的位置 networks : 使用的網卡，同一張容器才會互通 command : 指定容器的啟動命令\rdepends_on : 指定容器要在誰之後啟動 保證相依性\rdepends_on \u0026gt; condition : 進一步限定前一個容器完成特定條件才會啟動當前容器\rnetworks \u0026gt; emqx-bridge \u0026gt; driver : 定義網卡名為emqx-bridge 使用橋接模式\rprometheus.yaml -\u0026gt; 透過EMQX網頁生成。Targets在同一張網卡可以直接寫\u0026lt;容器名稱:port\u0026gt; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 global: scrape_interval: 15s # The default scrape interval is every 10 seconds. evaluation_interval: 15s # The default evaluation interval is every 10 seconds. # On this machine, every time series will be exported by default. external_labels: monitor: \u0026#39;emqx-monitor\u0026#39; # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first.rules\u0026#34; # - \u0026#34;second.rules\u0026#34; - \u0026#34;/etc/prometheus/rules/*.rules\u0026#34; # Data pull configuration scrape_configs: - job_name: \u0026#39;node-exporter\u0026#39; scrape_interval: 5s static_configs: # node-exporter IP address and port - targets: [\u0026#39;node-exporter:9100\u0026#39;] labels: instance: dashboard-local # EMQX Pushgateway monitoring - job_name: \u0026#39;pushgateway\u0026#39; scrape_interval: 5s honor_labels: true static_configs: # Pushgateway IP address and port - targets: [\u0026#39;pushgateway:9091\u0026#39;] dashboard.json -\u0026gt;作為 Garfana儀錶板之模板設定檔 資料串接設定\r重要組件連線資訊 第一次登入要修改密碼\rService Port Username Password Grafana 3000 admin public EMQX 18083 admin admin EMQX推送資","date":"2023-12-12","heading":"","objectID":"/zh-tw/theme-document-docker-conpose-emqx_monitor/:0:0","tags":["Docker","System"],"title":"MQTT Broker 性能監控最佳佈建方案 - EMQX(二)","uri":"/zh-tw/theme-document-docker-conpose-emqx_monitor/#"},{"categories":["System"],"collections":null,"content":"EMQX介面導覽與簡易MQTT通訊實作","date":"2023-11-27","objectID":"/zh-tw/theme-document-docker-emqx/","tags":["System","IoT","Docker"],"title":"高性能物聯網MQTT Broker - EMQX","uri":"/zh-tw/theme-document-docker-emqx/"},{"categories":["System"],"collections":null,"content":"前言\r提到MQTT協定，大多數人第一個想到的場景應該是在物聯網的通訊之中，其中原因在於MQTT相比網頁上使用的HTTP協定來的更簡便，傳輸的封包訊息也更小。非常適用於在有限頻寬和計算資源的狀況下收發資料。 至於MQTT具體協議是在做甚麼 就讓我們看下方的圖來說明 協定說明\r從圖中我們可以看到 正中間有一個類似MQTT大腦的地方，一般稱之為MQTT Broker， 這裡會將左邊的訊息發布(Publish) 轉送到右邊的訂閱者(Subscribe)手上。這樣就完成了一次消息的傳遞。 問題: 那麼我們怎麼確認發布與通訊可以正確傳遞，但又不會拿到其他的雜訊? 從圖中可以看到各個項目連接的地方有一些類似路徑的東西，這個是所謂的主題(Topic)，發布與訂閱在同一個主題才能接收到訊息。 如果想取得多個主題 可以在路徑中設置 # 來進行多主題讀取，但需要注意/代表分層且第一層開頭沒有/ 與相似產品Mosquito的差異\r老牌的Mosquito對於有研究IoT的愛好者來說，想必不陌生，其簡單的安裝方式。讓使用者可以快速體驗MQTT協議的各個組件如何設置。 但相較之下有以下幾個理由令我覺得使用EMQX也不失為一個好選擇。 短時間可以處理更多的消息傳遞 直接有GUI畫面可以進行瀏覽和額外設置 內部可以將數據倒出Prometheus(時序性資料庫)進行存儲 如果需要使用在微務架構上，也有提供相應的安裝方式 EMQX vs Mosquitto 官網詳細說明 開始之前\r在正式進入我們今日主題之前，會需要使用以下兩項工具來演示 Docker MQTTX 資訊\r如果缺少Docker環境可以看這篇私有環境網站監控系統建置 - Uptime-kuma中的安裝前置需求!!\rDocker啟動EMQX\r安裝好Docker之後輸入以下指令 1 2 3 4 5 6 7 docker run -d --name emqx \\ -p 1883:1883 -p 8083:8083 \\ -p 8084:8084 -p 8883:8883 \\ -p 18083:18083 \\ -v $PWD/data:/opt/emqx/data \\ -v $PWD/log:/opt/emqx/log \\ emqx/emqx:5.3.1 參數說明\r-d : 背景運行 -p : 端口mapping(前者是電腦本的port 後者是容器內部的port) -v : 目錄掛載進行永久化存儲($PWD = 電腦當前目錄) 1883 : MQTT標準通信Port 8083 : WebSocket 8084 : 具有SSL 的 WebSocket 8883 : 具有SSL 的 MQTT 18083 : Web UI 本地環境如果沒有EMQX的image，Docker run 會自動到Docker Hub 上去下載，看到如右側的指令跑完，在瀏覽器上輸入 http://lcoalhost:18083即可進入Login Page 默認登入資訊\rUsername : admin Password : public 第一次登系統會提示修改密碼 功能探索\r系統資訊概覽\r進入首頁後預設簡體中文，可以透過右上角齒輪選擇語言 和黑/白模式 紅框中的內容可以看到系統的資訊概覽，例如:系統資源、MQTT訂閱數量、目前有多少Topic 建立一個User\r建立用戶資料庫 可以看到用戶資料庫已經建立，點選User 進入裡面新增之後要用的Username 新的user沒有帳號複雜度限制 至此已經建立了連線的必備資訊，我們可以開始透過連線來使用EMQX了 MQTT連線測試\r點選新連線輸入以下資訊 HOST : MQTT + 連線IP(本機用localhost) Port : 1883 Username : 上一小節設定的帳號 Password : 上一小節設定的密碼 設定好連線後需要先設定訂閱主題 後續才能收到發布 訂閱主題 -\u0026gt; topic/# 發佈主題 -\u0026gt; topic/123、topic/456 圖片中的紅線代表著分別是哪一方產生的回應(訂閱、發佈) 圖片中發佈訊息框上面有一個寫者 topic/456 的欄位 更改這裡可以發佈不同主題 WebSocket 連線設定\r接下來我們可以透過同一個頁面的下方發佈和訂閱消息，但如果消息訂閱主題錯誤，會產生有送出但沒收到的狀況 圖表檢視\r回到首頁可以看見剛才進行連線的資訊已經整理成時序性圖表呈現 Incoming Messages 指的是發佈傳入MQTT Broker的數量 Outgoing Messages 指的是傳入訂閱的數量 結語\r相信上述的操作能讓讀者對EMQX有更進一步的認識，對於現在的環境來說，具有足夠好的擴展能力對於將MQTT協議帶入現實能力式不可少的。而這部分在此工具都有相應的滿足需求。且操作下來只要有了解MQTT組件間的傳遞就很容易上手。 當然這些只是入門，後續還會有更進階的操作可以發掘，比如使用中間件進行數據轉換，與資料庫整合、設置黑名單等等功能 就留給各位去探索了 ","date":"2023-11-27","heading":"","objectID":"/zh-tw/theme-document-docker-emqx/:0:0","tags":["System","IoT","Docker"],"title":"高性能物聯網MQTT Broker - EMQX","uri":"/zh-tw/theme-document-docker-emqx/#"},{"categories":["System"],"collections":null,"content":"UptimeRobot 從註冊到設定step-by-step","date":"2023-11-20","objectID":"/zh-tw/theme-document-sass-uptime-robot/","tags":["Sass","System","App"],"title":"免費線上網頁監控服務 - UptimeRobot","uri":"/zh-tw/theme-document-sass-uptime-robot/"},{"categories":["System"],"collections":null,"content":"前言\r此篇文章為接續上篇 私有環境網站監控系統建置 - Uptime-kuma 之後續內容 兩者區別在於如果需要監控的服務已經可以透過瀏覽器連上 且不打算自己在本地架設監控系統的狀況下 就有UptimeRobot的用武之地了!! 免費版限制\r下圖是從官方網站上的封面取得，在免費的使用條件下可以設置50個監控目標，每5分鐘進行一次檢查 註冊步驟\r官網註冊連結 輸入註冊資訊 到信箱啟用帳戶 新增監控目標\r警告\r後續設定中看到有 PAID 都是需要升級才能享有的權益\r信箱跳轉到首頁UptimeRobot首頁 可以看到有手機版可以下載(~~~不用隨時隨地都帶著電腦了😂~~~) 接著點選+Add New Monitor 選擇監控類型 進行設定以部落格存活狀況為例 (詳細設定說明可展開info區塊) 資訊\rURL(IP) 暴露在公網可以連線的IP Monitoring Interval : 檢查的間隔 可以大於5分鐘 但不能小於(要升級) Monitor Timeout : 檢查當下多久沒回應判定異常 測試與結果\r設定完成可以透過測試來檢查設定是否正確 回到信箱查看 服務正常，但時區異常 更改時區設定 (測試後信件時區正常，儀錶板仍為UTC+0) 結論\r與自建服務版本相比缺少一些常用功能 比如以下 沒有SSL憑證到期檢測 通知系統預設Email 其他需要額外設定且台灣常用的Line無法支援 但既然是免費的 有一些功能缺少也在合理範圍內。使用上就需要依場景區選擇是否使用這項工具! 另外附上升級前後的權益差別供各位讀者參考 UptimeRobot-Pricing 同場加映 手機APP畫面瀏覽\r下載手機APP後可以透過手機 來及時間了解網站狀況 且會多出一個手機通知選項(需要在Alert中打開) 給各位看一下手機版的版面來當作本文的結尾 ","date":"2023-11-20","heading":"","objectID":"/zh-tw/theme-document-sass-uptime-robot/:0:0","tags":["Sass","System","App"],"title":"免費線上網頁監控服務 - UptimeRobot","uri":"/zh-tw/theme-document-sass-uptime-robot/#"},{"categories":["System"],"collections":null,"content":"透過Docker快速建置網站監控工具與告警系統","date":"2023-11-12","objectID":"/zh-tw/theme-document-docker-uptime_kuma/","tags":["Docker","Line","System"],"title":"私有環境網站監控系統建置 - Uptime-kuma","uri":"/zh-tw/theme-document-docker-uptime_kuma/"},{"categories":["System"],"collections":null,"content":"為什麼需要網站監控工具\r在一般有部署網站的環境中，最重要的就是知道現在網站提供的服務有沒有掛掉或是憑證有沒有到期 而這些事情在過去都是透過編寫腳本或程式來進行監控，對於沒有技術背景的使用者來說，異常麻煩。尤其是監控寫好了 還要能在出狀況時進行通知 無疑是讓合理的監控變得更麻煩 秉持著 複雜的事情先上網找現成工具沒有再靠自己的想法。 所以就有了今天的主角 Uptime-kuma 資訊\r如果想在安裝前先體驗線上版介面和進行基礎的設定可以參考下方連結 Demo 網站連結 10 分鐘可用版 那麼 我們就開始安裝在自己環境中來體驗無期限使用的效果吧 安裝前置需求\r需要一台有Docker 的環境 (安裝方法如下) Windows 以管理員身份運行 PowerShell 或 Windows 命令提示符 安裝WSL 然後重啟電腦 1 wsl --install 下載Docker Desktop Ubuntu 複製貼上在Terminal 即可 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sudo apt-get update sudo apt-get install \\ ca-certificates \\ curl \\ gnupg \\ lsb-release sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \\ \u0026#34;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\ $(lsb_release -cs) stable\u0026#34; | sudo tee /etc/apt/sources.list.d/docker.list \u0026gt; /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y sudo gpasswd -a $USER docker newgrp docker Uptime-kuma安裝\r進入Power Shell / Terminal 輸入以下指令 1 docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 指令說明\r-d 會讓容器在背景運行 -restart 開機啟動docker自動啟動監控 -p 內部的網路端口對應到外部(主機)的端口號 -v 資料儲存位置 本機的當前目錄新增uptime-kuma資料夾 同步容器的app/data 目錄 連線UI介面\r打開瀏覽器輸入\r如果想在安裝前先體驗線上版介面和進行基礎的設定可以參考下方連結 1 http://localhost:3001 如果Ubuntu沒有裝桌面的話 可以參考以下方法 1 2 ufw allow 3001 #打開對外防火牆 ip -a #找出當前主機的ip 再用外部連線進入 UI設定\r進入UI需要設定帳號密碼 從最簡單的網頁監測開始 輸入要監控的網址 如果有進階需求 如查看憑證剩餘天數也可以勾選 告警系統 Line Notify 設定\r可以設定不只一個通知 看到需要token 且下方有教學如何從哪裡取的 點選下方紅框中的網址 點選右上角 可選擇用帳號還是qrcode登入 可選擇notify如何發送通知可以是指針對本人或是在群組中發出 測試先用1對1看效果 登入後滑到最下方 點選發行權杖 取得token回填網頁即可 模擬監控失敗範例\rPing 的設定檔如下 ping的類型和 模擬一個不存在的網址 再配上通知設定 結果\r可以看到網站的回應時間平均在0.2秒，回應率正常且憑證在58天後到期 如果失敗會發出訊息 參考資料\r官方Github ","date":"2023-11-12","heading":"","objectID":"/zh-tw/theme-document-docker-uptime_kuma/:0:0","tags":["Docker","Line","System"],"title":"私有環境網站監控系統建置 - Uptime-kuma","uri":"/zh-tw/theme-document-docker-uptime_kuma/#"},{"categories":[],"collections":null,"content":"關於作者\r💊💻 生物學系畢業後意外轉職資訊業 🚩 立志成為能優化架構也能獨立開發的軟體工程師 🚀 專注於學習新技術，落實於解決實際問題 ❤️ 愛好美食、追劇以及哲學 關於部落格\r建立部落格動機: 作者的工作與電腦領域相關，持續學習新技術的同時、也致力於鞏固已有的知識以應對日益複雜的技術挑戰。透過撰寫文章，我記錄了自己的成長過程， 並希望能夠為每位訪問網站的用戶提供有用的內容。 對我來說，如果我的文章能對您有所幫助將是一項極大的榮幸 ! 經歷\r2025.03-2026.04\r資料工程師\r公司: 偉康科技 工作地點: 台北 - 松山\r2024.05-2026.05\r計算機科學與技術碩士\r學校: 亞利桑那州立大學 工作地點: 線上\r2022.11-2025.02\rAWS 雲端工程師\r公司: 精誠資訊 工作地點: 台北 - 內湖\r2022.8-2022.9\r數據工程師\r公司: 光碩資訊 工作地點: 台北 - 松山\r2022.2-2022.8\r數據工程師 (實習)\r公司: 想見科技 工作地點: 台北 - 大安\r2017.9-2021.6\r生物工程\r學校: 大同大學 工作地點: 台北 - 中山\r","date":"2023-11-01","heading":"","objectID":"/zh-tw/about/:0:0","tags":[],"title":"關於","uri":"/zh-tw/about/#"}]