文章目錄
- 前言
- 1.關于SigNoz
- 2.本地部署SigNoz
- 3.SigNoz簡單使用
- 4. 安裝內網穿透
- 5.配置SigNoz公網地址
- 6. 配置固定公網地址
前言
在分布式架構主導的現代運維體系中,系統性能監控正面臨范式變革的關鍵轉折。當微服務架構遭遇服務雪崩、無服務器架構出現冷啟動延遲等復雜場景時,傳統監控方案暴露出致命缺陷:其一是數據孤島導致的全景視圖缺失,其二是異構指標體系間缺乏語義關聯性,其三是故障定位過程的低效性。盡管商業APM平臺提供了看似完整的解決方案,但其基于數據量的階梯式計費模式,正在成為企業數字化轉型的隱性成本增長點。
作為應對這一行業困境的開源利器,SigNoz正通過其創新的觀測架構重塑監控體系。該平臺通過統一的追蹤數據聚合、多維指標采集和結構化日志分析,構建起覆蓋全鏈路的性能觀測體系。其開源特性不僅消除了授權成本約束,更通過模塊化設計實現了技術棧的靈活適配。在Ubuntu系統中通過Docker容器化部署SigNoz,既能保證環境一致性,又可利用容器編排技術實現彈性擴展,這種組合方案正在成為現代運維體系的標準實踐。
1.關于SigNoz
SigNoz是一個開源的應用程序性能管理(APM)和可觀察性平臺,它提供了全面的監控、跟蹤和分析功能,以幫助開發人員監控并解決應用程序中的問題。
主要特點:
- 開源免費:SigNoz 完全開源,你可以免費使用它,無需擔心合規性或安全性問題。
- 用戶界面友好:SigNoz 的用戶界面設計得非常流暢和先進,即使你是新手也能輕松上手。
- 強大的過濾和聚合選項:無論是跟蹤數據還是指標,SigNoz 都提供了強大的過濾和聚合功能,讓你能快速找到問題的根源。
- 增強的靈活性和隱私:由于 SigNoz 是開源的,你可以自行托管,完全控制自己的數據,無需擔心隱私法規。
- 無縫整合日志、指標和追蹤:SigNoz 將 Log、Metrics 和 Tracing 無縫整合在一起,提供了一個統一的入口,使用起來非常便捷。
使用場景:
- 微服務架構監控:輕松監控多個微服務的性能,快速定位問題。
- 無服務器架構監控:在無服務器環境中,SigNoz 能幫助你監控各個函數的運行情況。
- 日志分析:收集和分析應用日志,發現潛在的問題。
- 性能優化:通過詳細的性能指標,優化應用性能,提升用戶體驗。
2.本地部署SigNoz
本例使用Docker進行部署,如果沒有安裝Docker,可以查看這篇教程進行安裝:《Docker安裝教程——Linux、Windows、MacOS》
首先打開終端輸入以下命令將 SigNoz 存儲庫和“cd”克隆到目錄中。
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
接下來我們輸入這行命令運行腳本
./install.sh
他會讓你輸入郵箱,直接輸入就可以了。
接著我們打開瀏覽器輸入localhost:3301,就能看到SigNoz的界面了!
3.SigNoz簡單使用
打開界面后我們先創建一個 管理員賬戶,也可以不選擇了解signoz新功能或匿名。
應用程序性能監控
使用 SigNoz APM 監控您的應用程序和服務。它帶有關鍵應用程序指標(如 p99 延遲、錯誤率、Apdex 和每秒操作數)的開箱即用圖表。
日志管理
SigNoz 可以用作集中式日志管理解決方案。我們使用ClickHouse(被Uber和Cloudflare等公司使用)作為數據存儲,這是一種極其快速且高度優化的日志數據存儲。使用快速過濾器和強大的查詢生成器即時搜索您的所有日志。
分布式跟蹤
分布式跟蹤對于解決微服務應用程序中的問題至關重要。在 OpenTelemetry 的支持下,SigNoz 中的分布式跟蹤可以幫助您跨服務跟蹤用戶請求,從而幫助您識別性能瓶頸。
在 Flamegraphs 和 Gantt Charts 的幫助下,在詳細分類中查看用戶請求。單擊任何范圍可查看精美表示的整個跟蹤,這將幫助您了解請求流中實際發生問題的位置。
指標和儀表板
從您的基礎設施或應用程序中提取指標,并創建自定義控制面板來監控它們。使用各種面板類型(如餅圖、時間序列、條形圖等)創建適合您需求的可視化。
使用易于使用的指標查詢生成器快速創建對指標數據的查詢。添加多個查詢并將這些查詢與公式組合在一起,以快速創建真正復雜的查詢。
警報
使用 SigNoz 中的警報,在您的應用程序中發生任何異常情況時收到通知。您可以針對任何類型的遙測信號(日志、指標、跟蹤)設置警報,創建閾值并設置通知渠道以接收通知。警報歷史記錄和異常檢測等高級功能可以幫助您創建更智能的警報。
SigNoz 中的警報可幫助您主動識別問題,以便您可以在問題到達客戶之前解決它們。
異常監控
在 Python、Java、Ruby 和 Javascript 中自動監控異常。對于其他語言,只需輸入幾行代碼即可開始監控異常。
請參閱應用程序捕獲的所有異常的詳細堆棧跟蹤。您還可以登錄自定義屬性,以向異常添加更多上下文。例如,您可以添加屬性來識別發生異常的用戶。
更多使用功能詳情查看SigNoz作者Github主頁:SigNoz/signoz:SigNoz 是 OpenTelemetry 原生的開源可觀測性平臺,在單個應用程序中具有日志、跟蹤和指標。開源的DataDog、NewRelic等的替代品。 🔥 🖥 開源👉應用程序性能監控(APM)和可觀察性工具
4. 安裝內網穿透
不過我們目前只能在本地局域網內使用手機電腦等設備訪問剛剛使用docker部署的SigNoz,如果想讓異地好友、讓更多人也能使用在家中部署的SigNoz應該怎么辦呢?很簡單,只要安裝一個cpolar內網穿透工具就能輕松實現遠程訪問內網主機中部署的服務了,接下來介紹一下如何安裝cpolar內網穿透。
下面是安裝cpolar步驟:
Cpolar官網地址: https://www.cpolar.com
使用一鍵腳本安裝命令
sudo curl https://get.cpolar.sh | sh
安裝完成后,執行下方命令查看cpolar服務狀態:(如圖所示running即為正常啟動)
sudo systemctl status cpolar
Cpolar安裝和成功啟動服務后,在瀏覽器上輸入ubuntu主機IP加9200端口即:【http://localhost:9200】訪問Cpolar管理界面,使用Cpolar官網注冊的賬號登錄,登錄后即可看到cpolar web 配置界面,接下來在web 界面配置即可:
5.配置SigNoz公網地址
登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:
- 隧道名稱:可自定義,本例使用了:SigNoz注意不要與已有的隧道名稱重復
- 協議:http
- 本地地址:3301
- 域名類型:隨機域名
- 地區:選擇China Top
創建成功后,打開左側在線隧道列表,可以看到剛剛通過創建隧道生成了兩個公網地址,接下來就可以在其他電腦(異地)上,使用任意一個地址在瀏覽器中訪問即可。
如下圖所示,成功實現使用公網地址異地遠程訪問本地部署的SigNoz了。
使用賬號登錄即可正常使用了:
小結
為了方便演示,我們在上邊的操作過程中使用cpolar生成的HTTP公網地址隧道,其公網地址是隨機生成的。這種隨機地址的優勢在于建立速度快,可以立即使用。然而,它的缺點是網址是隨機生成,這個地址在24小時內會發生隨機變化,更適合于臨時使用。
如果有長期使用SigNoz,或者異地訪問與使用其他本地部署的服務的需求,但又不想每天重新配置公網地址,還想讓公網地址好看又好記并體驗更多功能與更快的帶寬,那我推薦大家選擇使用固定的二級子域名方式來配置公網地址。
6. 配置固定公網地址
由于以上使用cpolar所創建的隧道使用的是隨機公網地址,24小時內會隨機變化,不利于長期遠程訪問。因此我們可以為其配置二級子域名,該地址為固定地址,不會隨機變化。
點擊左側的預留,選擇保留二級子域名,地區選擇China VIP,然后設置一個二級子域名名稱,填寫備注信息,點擊保留。
保留成功后復制保留的二級子域名地址:signoz
登錄cpolar web UI管理界面,點擊左側儀表盤的隧道管理——隧道列表,找到所要配置的隧道SigNoz,點擊右側的編輯
。
修改隧道信息,將保留成功的二級子域名配置到隧道中
- 域名類型:選擇二級子域名
- Sub Domain:填寫保留成功的二級子域名
- 地區: China VIP
更新完成后,打開在線隧道列表,此時可以看到隨機的公網地址已經發生變化,地址名稱也變成了保留和固定的二級子域名名稱。
本次技術實踐完整驗證了SigNoz在Ubuntu環境中的部署可行性,并通過內網穿透技術突破了傳統網絡架構的訪問限制。在Docker容器化部署完成后,通過配置持久化域名解析方案,為監控平臺創建了具備兩個核心優勢的穩定訪問入口:其一,通過域名綁定實現的長期有效訪問地址,徹底規避了動態IP變更導致的連接中斷風險;其二,基于標準HTTP協議的加密訪問通道,既保證了數據傳輸的安全性,又實現了跨地域的實時監控數據訪問。
本方案的價值體現在三個層面:首先是容器化部署帶來的環境可復制性和跨平臺移植能力;其次是通過穿透技術構建的全球可達監控架構,解決了傳統內網限制下的遠程訪問難題;最后是開源架構在功能完備性與成本控制間的平衡優勢。建議讀者按照以下路徑驗證方案:1)在沙箱環境中復現完整部署流程;2)測試跨運營商網絡的訪問穩定性;3)探索與GitOps工具鏈的集成方案。對于可能出現的容器網絡策略沖突或服務注冊失敗等典型問題,可通過分層日志分析定位根因,必要時可結合容器鏡像的版本回滾機制進行快速修復。