開源專案
ccfos/nightingale avatar
ccfos/nightingale

Nightingale:面向告警引擎的雲原生監控專案

Nightingale 之於監控與警報,就像 Grafana 之於視覺化。

13,288 個 Star1,776 個 ForkGoApache-2.0

秒懂

它是什麼?
Nightingale 是一個開源的監控與告警平台,強調告警規則的配置、事件處理與通知分發,而非數據採集或可視化。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
Nightingale 的定位是透過連接已有數據源,集中處理告警規則、事件管道和通知分發。若需採集、可視化或告警協同,README 建議分別使用 Categraf、Grafana 和 PagerDuty 等產品。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

專案定位:告警引擎而非採集與可視化

Nightingale 是一個開源監控專案,其核心定位是告警引擎。README 開篇即說明,它類似於 Grafana 會連接各種已有數據源,但 Grafana 側重可視化,Nightingale 更側重告警引擎以及告警的處理和分發。專案自身並不提供監控數據採集能力,README 推薦使用 Categraf 作為採集器,透過 Prometheus Remote Write 協議將數據推送到 Nightingale,再存儲到 Prometheus、VictoriaMetrics 等時序資料庫中。因此,Nightingale 負責的是告警規則的配置、事件的生成和通知的發送,而不是從零開始採集數據。

從 DiDi 開源到捐贈 CCF ODTC

README 提到,Nightingale 專案最初由 DiDi 出行開發並開源,2022 年 5 月 11 日捐贈給中國計算機學會開源發展委員會(CCF ODTC)。倉庫元數據顯示該專案使用 Go 語言編寫,採用 Apache-2.0 許可證,當前預設分支為 main。倉庫主頁指向 https://n9e.github.io,README 中提供了 Flashcat.cloud 的文件連結以及 GitHub Issue 追蹤器用於報告錯誤。除此之外,README 沒有給出更詳細的版本歷史或捐贈後的治理細節,僅有一份指向社區治理草案的連結。

核心能力:規則、通知與事件處理

在告警能力方面,README 列出了多種功能:支援告警規則、屏蔽規則、訂閱規則和通知規則;原生支援 20 種通知媒介,如電話、簡訊、電子郵件、釘釘、Slack 等;支援訊息範本自訂;支援事件管道(event pipelines)對告警進行處理,例如附加元數據或對事件進行 relabeling,以便與內部系統自動化整合。,Nightingale 引入了業務群組(business groups)和權限系統的概念,用於分類管理各類規則。很多資料庫和中間件帶有內建告警規則,可以直接導入使用,也支援直接導入 Prometheus 告警規則。告警自癒功能允許在告警產生後自動觸發腳本執行預定義邏輯,例如清理磁碟空間或抓取當前系統狀態。

數據源與整合方式

Nightingale 不採集數據,但透過多種協議直接接收數據,包括 Remote Write、OpenTSDB、Datadog 和 Falcon,因此可以整合各種 Agent。它支援的數據源包括 Prometheus、ElasticSearch、Loki、ClickHouse、MySQL、Postgres,允許基於這些數據源的數據進行告警。對於機器相關監控數據,README 建議使用 Categraf 採集並使用 Nightingale 內建儀表板查看,因為 Categraf 的指標命名遵循 Telegraf 的約定,與 Node Exporter 不同。Nightingale 還可以嵌入到企業內部系統(如 Grafana、CMDB)中,甚至支援為這些嵌入系統配置選單可見性。

邊緣部署模式

對於與中心 Nightingale 伺服器網路連接較差的邊緣資料中心,README 描述了分散式部署模式。在這種模式下,即使網路斷開,告警功能仍然不受影響。具體來說,網路良好的資料中心 A 使用中心資料中心的 Nightingale 程序作為告警引擎;網路較差的資料中心 B 則部署 n9e-edge 作為告警引擎,處理自己的數據源的告警。README 沒有詳細說明 n9e-edge 的部署步驟、資源要求或網路斷開時的具體行為,這些細節需要查看文件或實際測試來驗證。

內建 MCP 伺服器與 AI 助手整合

README 重點介紹了 Nightingale 內建的 MCP(Model Context Protocol)伺服器。n9e 程序本身在 /mcp 路徑透過 Streamable HTTP 傳輸提供 MCP 服務,端點為 http(s)://<nightingale>:17000/mcp,位於根路徑而非 /api/n9e 下。用戶端使用個人存取權杖(在 Web UI 的 Profile → Token Management 建立)透過 X-User-Token 標頭進行身分驗證。所有工具呼叫都在程序內分發到 Nightingale 自己的 HTTP API,攜帶用戶的權杖,因此 RBAC 和業務群組權限與用戶在 UI 中的權限一致。端點預設唯讀,寫入工具(建立、更新、刪除)需要透過設定明確啟用。MCP 提供 74 個工具,分為 13 個工具集,包括 alerts、targets、datasource、mutes、busi_groups、notify_rules、alert_subscribes、event_pipelines、users、metrics、logs、dashboards、roles。除了權杖認證,/mcp 還支援透過 Authorization: Bearer 傳送 OAuth 存取權杖,Nightingale 既可以作為授權伺服器本身(支援 RFC 7591 動態用戶端註冊和 PKCE),也可以作為資源伺服器對接企業 IdP(如 Keycloak、Entra ID、Okta、Auth0)。同一程序還暴露 A2A 端點 /a2a,用於代理到代理整合。如果希望將 MCP 作為獨立程序執行,README 提到了獨立的 n9e-mcp-server 倉庫。

可視化與邊界

Nightingale 支援儀表板功能,包括常見圖表類型,並帶有預建構的儀表板。但 README 明確建議,如果用戶已經習慣 Grafana,應繼續使用 Grafana 進行可視化,因為 Grafana 在此領域更專業。對於 Categraf 採集的機器相關數據,則建議使用 Nightingale 內建儀表板,因為 Categraf 的指標命名遵循 Telegraf 約定,與 Node Exporter 不同。,Nightingale 的儀表板可以與業務群組關聯進行互動式過濾,因為業務群組的概念意味著機器可能屬於不同群組,用戶可能只想查看當前業務群組內的機器。在告警協同方面,README 指出 Nightingale 不適合高級需求,如將多個監控系統的事件整合到一個平台進行統一降噪、響應處理和數據分析,或支援人員排班、on-call 文化和告警升級。對於這些需求,README 推薦使用 PagerDuty 或 FlashDuty 等 on-call 產品。

許可證與驗證要點

Nightingale 使用 Apache License 2.0。根據許可證摘錄,每個貢獻者授予您永久的、全球性的、非排他性的、免費的、免版稅的、不可撤銷的版權許可,允許複製、準備衍生作品、公開展示、公開表演、再許可和分發作品及其衍生作品。同時授予專利許可,但如果您對任何實體提起專利訴訟,指控作品或納入作品的貢獻構成直接或共同的專利侵權,那麼該作品授予您的專利許可將在訴訟提起之日終止。許可證文字本身不包含任何關於安全態勢、支援或保固的內容,README 也未聲稱這些。,README 中提到的用戶徽標、星標歷史圖表等,沒有提供具體的用戶名單或數據,需要查閱實際倉庫頁面或文件驗證。專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果專案文件核對命令路徑設定輸出日誌測試版本部署權限資料流程結果

編輯結論

Nightingale 的定位是透過連接已有數據源,集中處理告警規則、事件管道和通知分發。若需採集、可視化或告警協同,README 建議分別使用 Categraf、Grafana 和 PagerDuty 等產品。MCP 的引入使 AI 助手可直接操作告警配置,但寫入功能預設關閉。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記