具有歷史資料、docker 統計資料和警報的輕量級伺服器資源監控中心。
輕量級:比領先的解決方案更小、資源佔用更少。
簡單:設定簡單,無需暴露在公共網路上。
Docker stats :追蹤每個容器的 CPU、記憶體和網路使用歷史記錄。
警報:可設定 CPU、記憶體、磁碟、頻寬、溫度和系統狀態警報。
多用戶:每個用戶管理自己的系統。管理員可以跨用戶共享系統。
OAuth / OIDC :支援多個 OAuth2 提供者。可以停用密碼驗證。
自動備份:從磁碟或 S3 相容儲存保存和還原資料。
REST API :在您自己的腳本和應用程式中使用或更新您的資料。
Beszel 由兩個主要元件組成:集線器和代理程式。
Hub:一個 Web 應用程序,提供用於檢視和管理連接系統的儀表板。建立在 PocketBase 上。
代理:在您想要監控的每個系統上執行,建立一個最小的 SSH 伺服器以將系統指標傳達到集線器。
如果不使用 docker,請跳過步驟 4-5 並使用二進位檔案執行代理程式。
啟動集線器(請參閱安裝)。
開啟 http://localhost:8090 並建立一個管理員使用者。
按一下“新增系統”。輸入要監控的系統的名稱和主機。
按一下「複製 docker compose」將代理程式的 docker-compose.yml 檔案複製到剪貼簿。
在代理系統上,建立 compose 檔案並執行docker compose up
來啟動代理程式。
返回中心,點擊對話方塊中的「新增系統」按鈕以完成新增系統。
如果一切順利,系統應該會變成綠色。如果變成紅色,請檢查日誌頁面並參考故障排除提示。
有關法語教程,請參閱 https://belginux.com/installer-beszel-avec-docker/
您可以將集線器和代理程式安裝為單一二進位檔案或使用 Docker。
Hub :請參閱範例 docker-compose.yml 檔案。
Agent :集線器為代理程式提供撰寫內容,但您也可以引用範例 docker-compose.yml 檔案。
代理程式使用主機網路模式存取網路介面統計資料,這會自動公開連接埠。如果需要,請使用環境變數變更連接埠。
如果您不需要網絡統計信息,請從撰寫文件中刪除該行並手動映射端口。
提示
如果使用 Linux,請參閱guides/systemd.md 以取得將集線器或代理程式安裝為系統服務的腳本。這也內建在 Web UI 中。
從發布頁面下載並執行最新的二進位檔案或使用以下命令。
捲曲-sL“https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/ armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O 貝澤爾 | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
直接運行集線器:
./貝塞爾服務
捲曲-sL“https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed ' s/armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O 貝澤爾代理 | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
直接運行代理:
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
使用./beszel update
和./beszel-agent update
更新到最新版本。
姓名 | 預設 | 描述 |
---|---|---|
CSP | 未設定 | 新增具有此值的 Content-Security-Policy 標頭。 |
DISABLE_PASSWORD_AUTH | 錯誤的 | 禁用密碼驗證。 |
姓名 | 預設 | 描述 |
---|---|---|
DOCKER_HOST | 未設定 | 如果使用代理,則覆蓋 docker 主機 (docker.sock)。 1 |
EXTRA_FILESYSTEMS | 未設定 | 請參閱監控其他磁碟、分割區或遠端安裝 |
FILESYSTEM | 未設定 | 用於根磁碟統計資訊的裝置、分割區或安裝點。 |
KEY | 未設定 | 用於身份驗證的公共 SSH 金鑰。在集線器中提供。 |
LOG_LEVEL | 資訊 | 記錄級別。有效值:「調試」、「資訊」、「警告」、「錯誤」。 |
MEM_CALC | 未設定 | 覆蓋預設的記憶體計算。 2 |
NICS | 未設定 | 用於監控頻寬圖表的網路介面白名單。 |
PORT | 45876 | 連接埠或位址:要偵聽的連接埠。 |
SENSORS | 未設定 | 要監控的溫度感測器白名單。 |
SYS_SENSORS | 未設定 | 覆蓋感測器的系統路徑。參見#160。 |
Beszel 支援 OpenID Connect 和許多 OAuth2 驗證提供者(請參閱下面的清單)。
造訪「身分驗證提供者」頁面以啟用您的提供者。重定向/回呼 URL 應為
。
蘋果
位元桶
不和諧
吉泰亞
吉泰
GitHub
GitLab
卡卡奧
即時聊天
郵牛
微軟
OpenID 連接
帕特隆 (v2)
Spotify
史特拉瓦
抽搐
嘰嘰喳喳
VK
揚德克斯
新增額外磁碟的方法因您的部署方法而異。
使用lsblk
找出分割區的名稱和安裝點。如果遇到問題,請檢查代理程式日誌。
注意:圖表將使用裝置或分割區的名稱(如果可用),並回退到資料夾名稱。您將無法取得網路安裝磁碟機的 I/O 統計資料。
將目標檔案系統中的資料夾裝載到容器的/extra-filesystems
目錄中。例如:
卷: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
將EXTRA_FILESYSTEMS
環境變數設定為要監視的裝置、分割區或安裝點的逗號分隔清單。例如:
EXTRA_FILESYSTEMS =“sdb,sdc1,mmcblk0,/ mnt /網路共享”
由於 Beszel 是基於 PocketBase 建構的,因此您可以使用 PocketBase Web API 和客戶端 SDK 從 Beszel 本身外部讀取或更新資料。
集線器和代理程式透過 SSH 進行通信,因此它們不需要暴露在互聯網上。即使您將外部身份驗證網關(例如 Authelia)放置在集線器前面,它也不會中斷或中斷集線器和代理之間的連接。
當集線器第一次啟動時,它會產生一個 ED25519 密鑰對。
代理程式的 SSH 伺服器配置為僅接受使用此金鑰的連線。它不提供偽終端或接受輸入,因此即使您的私鑰洩露,也無法在代理程式上執行命令。
管理員可以訪問中心中的其他鏈接,例如備份、SMTP 設定等。
更改使用者的角色不會為其建立 PocketBase 管理員帳戶。為此,請前往 PocketBase 中的「設定」>「管理員」並手動新增它們。
用戶可以創建自己的系統和警報。中心中未顯示 PocketBase 設定的連結。
只讀使用者無法建立系統,但可以查看管理員與他們共享的任何系統並建立警報。
假設代理正在運行,連線可能會被防火牆阻止。您有兩個選擇:
將入站規則新增至代理系統的防火牆以允許到連接埠的 TCP 連線。檢查任何活動的防火牆(例如 iptables)以及雲端提供者的防火牆設定(如果適用)。
或者,使用 Cloudflare Tunnel、WireGuard 或 Tailscale 等軟體安全地繞過防火牆。
您可以透過執行telnet
來測試連線。
如果代理程式使用主機網路模式而不是集線器,請使用主機名稱host.docker.internal
新增您的系統,該主機名稱將解析為主機使用的內部 IP 位址。請參閱範例 docker-compose.yml。
如果兩者都使用主機網路模式,則可以使用localhost
作為主機名稱。
否則,如果代理程式的container_name
作為主機名稱。
使用FILESYSTEM
環境變數指定根磁碟統計資訊的檔案系統/裝置/分割區。
如果未設置,代理程式將嘗試尋找安裝在/
上的分割區並使用它。這在容器中可能無法正常工作,因此建議設定此值。使用以下方法之一找到正確的檔案系統:
運行lsblk
並在“NAME”下選擇一個選項。
運行df -h
並在“檔案系統”下選擇一個選項。
運行sudo fdisk -l
並在“設備”下選擇一個選項。
如果容器圖表顯示空白資料或完全不顯示,您可能需要啟用 cgroup 記憶體統計。若要進行驗證,請執行docker stats
。如果顯示記憶體使用量為零,請依照本指南解決問題:
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
嘗試升級代理系統上的 Docker 版本。在運行版本 24 的電腦上觀察到此問題,並透過升級到版本 27 來解決。
較長時間段的記錄是透過對較短時間段的統計資料進行平均而建立的。代理必須不間斷運行以獲得完整的資料集來填充這些記錄。
暫停/取消暫停代理超過一分鐘將導致資料不完整,從而重置當前間隔的計時。
集線器和代理程式都是用 Go 編寫的,因此您可以輕鬆地自己建立它們,或者對不同平台進行交叉編譯。如果尚未安裝,請先安裝 Go。
在/beszel
中執行make
。這將建立一個包含二進位檔案的build
目錄。
CD 擋板 && 製作
您也可以針對不同平台進行建置:
使作業系統=freebsd ARCH=arm64
透過執行go tool dist list
查看有效選項的清單。
cd beszel && go mod tidy
前往beszel/cmd/agent
並執行以下命令在目前目錄中建立二進位檔案:
CGO_ENABLED=0 go build -ldflags "-w -s" 。
該中心將 Web UI 嵌入到二進位檔案中,因此您必須先建立網站。我使用 Bun,但如果您願意,也可以使用 Node.js:
CD 擋板/站點 包子安裝 包子運行構建
然後在beszel/cmd/hub
:
CGO_ENABLED=0 go build -ldflags "-w -s" 。
您可以使用GOOS
和GOARCH
環境變數針對不同平台進行交叉編譯。
例如,要為 FreeBSD ARM64 建置:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "-w -s" 。
透過執行go tool dist list
查看有效選項的清單。
歡迎貢獻,但如果您計劃做任何重要的事情,最好先在討論/問題中與我們聯繫。
我們使用 Crowdin 來管理翻譯。歡迎新語言或對現有翻譯的改進!
在不久的將來,我們將提供更多有關為 Beszel 做出貢獻的有用資訊。
Beszel 已根據 MIT 許可證獲得許可。有關更多詳細信息,請參閱許可證文件。
Beszel 只需要存取權限即可讀取容器資訊。對於 linuxserver/docker-socket-proxy 你可以設定CONTAINERS=1
。 ↩
已用記憶體的預設值是基於 gopsutil 的「已使用」計算,該計算應與free
相當接近。將MEM_CALC
設為htop
以與 htop 的計算保持一致。 ↩