nightingale README

The project's README from github.com/ccfos/nightingale. As one markdown file: README.md.

nightingale - cloud native monitoring

Open-Source Alerting Expert

Docs Docker pulls GitHub contributors GitHub Repo stars GitHub forks
GitHub Repo issues GitHub Repo issues closed GitHub latest release License GitHub contributors

English | 中文

🎯 What is Nightingale

Nightingale is an open-source monitoring project that focuses on alerting. Similar to Grafana, Nightingale also connects with various existing data sources. However, while Grafana emphasizes visualization, Nightingale places greater emphasis on the alerting engine, as well as the processing and distribution of alarms.

💡 Nightingale now speaks MCP out of the box: the server itself exposes a built-in MCP endpoint at /mcp, so AI assistants can manage alerting and explore observability data in natural language with no extra process to deploy. See MCP Server below.

The Nightingale project was initially developed and open-sourced by DiDi.inc. On May 11, 2022, it was donated to the Open Source Development Committee of the China Computer Federation (CCF ODTC).

💡 How Nightingale Works

Many users have already collected metrics and log data. In this case, you can connect your storage repositories (such as VictoriaMetrics, ElasticSearch, etc.) as data sources in Nightingale. This allows you to configure alerting rules and notification rules within Nightingale, enabling the generation and distribution of alarms.

Nightingale Product Architecture

Nightingale itself does not provide monitoring data collection capabilities. We recommend using Categraf as the collector, which integrates seamlessly with Nightingale.

Categraf can collect monitoring data from operating systems, network devices, various middleware, and databases. It pushes this data to Nightingale via the Prometheus Remote Write protocol. Nightingale then stores the monitoring data in a time-series database (such as Prometheus, VictoriaMetrics, etc.) and provides alerting and visualization capabilities.

For certain edge data centers with poor network connectivity to the central Nightingale server, we offer a distributed deployment mode for the alerting engine. In this mode, even if the network is disconnected, the alerting functionality remains unaffected.

Edge Deployment Mode

In the above diagram, Data Center A has a good network with the central data center, so it uses the Nightingale process in the central data center as the alerting engine. Data Center B has a poor network with the central data center, so it deploys n9e-edge as the alerting engine to handle alerting for its own data sources.

🤖 MCP Server

Nightingale has a built-in MCP Server: the n9e process itself serves the Model Context Protocol at /mcp over the Streamable HTTP transport. Any MCP client — Claude Code / Claude Desktop, Cursor, ChatGPT connectors, or your own agent — can query and manage Nightingale in natural language, with no extra process to deploy.

Connecting a client

The endpoint is http(s)://<nightingale>:17000/mcp — a root path, not under /api/n9e. Authenticate with a personal access token (create one in the web UI under Profile → Token Management) sent in the X-User-Token header:

{
  "mcpServers": {
    "nightingale": {
      "type": "http",
      "url": "http://127.0.0.1:17000/mcp",
      "headers": { "X-User-Token": "<your-token>" }
    }
  }
}

Every tool call is dispatched onto Nightingale's own HTTP API inside the process, carrying your token, so RBAC and business-group permissions apply exactly as they do for that user in the UI — a client can never reach anything its token's owner cannot.

Tools

74 fine-grained tools (42 read, 32 write) across 13 toolsets: alerts, targets, datasource, mutes, busi_groups, notify_rules, alert_subscribes, event_pipelines, users, metrics, logs, dashboards, roles.

The endpoint is read-only by default — the write tools (create / update / delete) are an explicit config opt-in.

Configuration

Everything below is optional; /mcp is enabled out of the box (etc/config.toml):

[HTTP.A2A]
# DisableMCP = true                        # turn off /mcp (Disable = true turns off /a2a as well)
# MCPToolsets = ["alerts", "dashboards"]   # restrict the exposed toolsets; empty = all of them
# MCPEnableWriteTools = true               # also register the write tools; read-only by default

/mcp reuses [HTTP.TokenAuth] for authentication, so keep that enabled.

OAuth 2.1 instead of a token

/mcp also accepts OAuth access tokens via Authorization: Bearer, in two flavors:

Alongside MCP, the same process exposes an A2A endpoint at /a2a that wraps Nightingale's built-in AI assistant for agent-to-agent integration (doc/api/a2a.md). If you would rather run MCP as a separate process against a remote Nightingale, the standalone n9e-mcp-server provides the same tools.

🔕 Alert Noise Reduction, Escalation, and Collaboration

Nightingale focuses on being an alerting engine, responsible for generating alarms and flexibly distributing them based on rules. It supports 20 built-in notification medias (such as phone calls, SMS, email, DingTalk, Slack, etc.).

If you have more advanced requirements, such as:

Then Nightingale is not suitable. It is recommended that you choose on-call products such as PagerDuty and FlashDuty. These products are simple and easy to use.

🗨️ Communication Channels

🔑 Key Features

Nightingale Alerting rules

Nightingale Alarm Dashboard

Nightingale Integration Center

Nightingale dashboards

🌟 Stargazers over time

Stargazers over time

🔥 Users

User Logos

🤝 Community Co-Building

📜 License

nightingale (ccfos/nightingale)

Searching Database…

这是什么?Nightingale 是一个开源的监控与告警平台,专注于生成、处理和分发告警,并对接已有的指标/日志数据源,本身不负责采集数据。
这是像 Grafana 那样的可视化工具,还是别的东西?与 Grafana 不同,Nightingale 的重点是告警引擎以及告警的处理与分发,而非可视化,不过它也包含一些仪表盘功能。
怎样才能让它跑起来并接入数据?部署 n9e 服务端,并将已有的存储后端(VictoriaMetrics、Elasticsearch、Prometheus 等)接入为数据源;推荐使用 Categraf 作为采集器,它通过 Prometheus Remote Write 协议将数据推送给 Nightingale。
我还需要单独的时序数据库和采集器吗?需要。Nightingale 本身不采集数据,因此你需要 Prometheus 或 VictoriaMetrics 这类时序数据库用于存储,并需要 Categraf 之类的采集器(或通过 Remote Write、OpenTSDB、Datadog、Falcon 协议接入其他代理)把指标送入其中。
如果我需要值班排班和告警升级,Nightingale 合适吗?不合适。README 明确建议使用 PagerDuty 或 FlashDuty 这类专门的值班产品来处理人员排班和告警升级,Nightingale 并不适合承担这些功能。
谁在生产环境中使用 Nightingale?它最初由滴滴开发并开源,2022 年捐赠给了中国计算机学会(CCF)开源发展技术委员会,这表明它已有企业级规模的应用。
它是否支持边缘或断网的数据中心?支持。它提供分布式部署模式(n9e-edge),即使边缘站点与中心服务端之间的网络中断,告警在边缘也能继续工作。
内置的 MCP 服务器有什么用?Nightingale 在 /mcp 路径下提供内置的 MCP 端点,使 Claude Code、Claude Desktop、Cursor 或 ChatGPT 连接器等 AI 助手能够用自然语言查询和管理告警与可观测性数据,无需额外部署进程。它提供 13 个工具集共 74 个细粒度工具(42 个读取、32 个写入),默认只读,除非明确开启写入权限。
MCP 端点如何进行身份验证?你可以使用在网页界面(个人资料 → 令牌管理)中创建的个人访问令牌,通过 X-User-Token 请求头发送;也可以使用 OAuth 2.1,让 Nightingale 自己作为授权服务器,或作为已有企业身份提供方(如 Keycloak、Entra ID、Okta、Auth0)的资源服务器。
它支持哪些通知渠道?Nightingale 原生支持 20 种通知媒介,包括电话、短信、邮件、钉钉和 Slack 等,并支持自定义消息模板。
它可以从哪些数据源拉取告警数据?它支持 Prometheus、Elasticsearch、Loki、ClickHouse、MySQL 和 Postgres 等数据源,同时也能通过 Remote Write、OpenTSDB、Datadog、Falcon 等协议直接接收数据。
Creator
ccfos
Size
120 MB
Stars
13.4K
Age
6y
Commits · 90 Days