現(xiàn)在搭個服務(wù)狀態(tài)頁面,動不動就要配PostgreSQL,配Redis,再搞個K8s集群。
前兩天在GitHub上翻到一個叫BetterStatusPage的開源項目,部署方式就一行docker compose up -d。整個應(yīng)用跑在單個Node.js 22進程上,數(shù)據(jù)庫用的SQLite,不需要額外裝任何數(shù)據(jù)庫服務(wù)器、緩存或者消息隊列。
這個項目目前還在MVP階段,但核心功能已經(jīng)能用了。最讓我意外的是它內(nèi)置了備份和離線恢復(fù)——萬一哪天服務(wù)器掛了,拿之前的備份文件直接恢復(fù),不至于從頭配起。
監(jiān)控能查什么
監(jiān)控類型覆蓋得比較全。HTTP和HTTPS檢查是基本功,能校驗返回的狀態(tài)碼、響應(yīng)時間,還能在響應(yīng)正文里搜關(guān)鍵詞。身份認(rèn)證方面支持基礎(chǔ)認(rèn)證、OAuth2和CAS三種方式,對內(nèi)部系統(tǒng)監(jiān)控比較實用。
網(wǎng)絡(luò)層面的檢查也沒落下:ICMP ping用來測連通性,TCP端口檢查可以確認(rèn)服務(wù)端口是否在監(jiān)聽。DNS監(jiān)控覆蓋了A、AAAA、MX、CNAME和TXT五種記錄類型,域名解析出問題能第一時間發(fā)現(xiàn)。
數(shù)據(jù)庫層面目前只支持SQL Server的測試查詢,對于用微軟技術(shù)棧的團隊算是個加分項。還有一個被動Webhook監(jiān)控功能,cron任務(wù)跑完或者外部服務(wù)要上報狀態(tài)時,調(diào)個接口就行。
告警能發(fā)到哪兒
通知渠道覆蓋了五種:郵件、通用Webhook、Discord、Slack和Microsoft Teams。告警發(fā)出去如果失敗了,系統(tǒng)會自動重試,管理員也可以在后臺面板里手動檢查失敗記錄、手動重發(fā)。
這個重試機制比很多商業(yè)SaaS做得都好——至少你不用半夜被吵醒之后,還得去排查"為什么告警沒收到"這種二次傷害的問題。
恢復(fù)通知也支持,服務(wù)恢復(fù)正常了會自動發(fā)一條消息,不用手動更新狀態(tài)。
狀態(tài)頁和事件管理
公開狀態(tài)頁的編輯方式是拖拽網(wǎng)格布局。你可以往上拖監(jiān)控卡片、服務(wù)分組、Markdown文本塊,還有一個事件時間線組件,全程不需要寫CSS。自定義品牌標(biāo)識和深色模式也做了,多語言支持也在功能列表里。
事件管理這邊的功能設(shè)計得比較細。創(chuàng)建事件時可以標(biāo)記嚴(yán)重等級、關(guān)聯(lián)受影響的監(jiān)控項,還能添加事件更新的時間線記錄。定時維護窗口也支持——你設(shè)定下周三凌晨維護,系統(tǒng)會自動在這個時間段抑制告警,不會給用戶發(fā)一堆假警報。
監(jiān)控依賴關(guān)系這個功能挺少見的。比如你有臺服務(wù)器宕機了,上面跑的三個服務(wù)都會報故障。配好依賴關(guān)系后,系統(tǒng)知道根因是服務(wù)器掛了,只發(fā)一條告警,不會同時彈三條通知把你淹掉。
實時更新走的是Server-Sent Events協(xié)議,狀態(tài)頁上監(jiān)控項的狀態(tài)變化會實時推送到瀏覽器。運行時間歷史記錄也保留著,想看過去七天某個接口的可用率,直接查就行。
用戶角色、審計日志這些企業(yè)級功能也都做了,審計日志能記錄字段級別的變更——誰在什么時候把監(jiān)控間隔從30秒改成10秒了,一查就知道。
安全方面做了個AES-256-GCM加密的憑據(jù)保險箱。數(shù)據(jù)庫連接字符串、API令牌這些東西不需要明文寫在監(jiān)控配置里,加密存進去就行。
為什么要做這個項目
作者的想法很直接:他要的不只是一個簡單的uptime檢測器,但也不想為了搭狀態(tài)頁專門維護一套基礎(chǔ)設(shè)施。很多小團隊、家庭實驗室或者個人項目,配數(shù)據(jù)庫服務(wù)器、緩存、消息隊列再加好幾個容器的運維成本,比狀態(tài)頁本身的業(yè)務(wù)價值還高。
BetterStatusPage的目標(biāo)體驗就是一條命令啟動,一個進程一個端口跑完全部功能。不需要先裝PostgreSQL、裝Redis、配集群網(wǎng)絡(luò),省下來的時間精力可以干點別的。
目前作者在找人幫忙測試部署、在家庭實驗室或者小規(guī)模生產(chǎn)環(huán)境里跑跑看,報bug、審安全設(shè)計、提缺失的監(jiān)控類型或者集成需求——特別是安裝升級體驗、界面配置易用性、通知可靠性這些方面,還有"你覺得自己不會認(rèn)真用它之前,它還需要什么功能"這類直擊要害的反饋。
MIT協(xié)議開源,GitHub地址在BElluu/BetterStatusPage,有興趣可以直接拉下來跑一趟。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.