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, который передаёт данные в Nightingale по протоколу Prometheus Remote Write.
Нужны ли мне отдельная база временных рядов и отдельный сборщик?Да. Nightingale сам данные не собирает, поэтому нужна база временных рядов, например Prometheus или VictoriaMetrics, для хранения, и сборщик, такой как Categraf (или другие агенты через протоколы Remote Write, OpenTSDB, Datadog, Falcon), чтобы передавать в неё метрики.
Подойдёт ли Nightingale, если мне нужны графики дежурств и эскалация?Нет. В README прямо рекомендуется для графиков дежурств и эскалации алертов выбирать специализированные продукты вроде PagerDuty или FlashDuty, так как Nightingale для этого не подходит.
Кто использует Nightingale в продакшене?Изначально его разработала и открыла компания DiDi, а в 2022 году проект передали Комитету по открытой разработке CCF, что говорит о внедрении в масштабах крупных предприятий.
Работает ли оно в периферийных дата-центрах или там, где нет постоянной связи?Да, есть режим распределённого развёртывания (n9e-edge). Благодаря ему оповещения продолжают работать на периферийных площадках, даже если связь с центральным сервером пропала.
Для чего нужен встроенный сервер MCP?Nightingale открывает встроенную конечную точку MCP по адресу /mcp, чтобы ИИ-ассистенты, например Claude Code, Claude Desktop, Cursor или коннекторы ChatGPT, могли запрашивать и управлять данными оповещений и наблюдаемости на естественном языке без отдельного процесса для развёртывания. Доступно 74 детализированных инструмента (42 на чтение, 32 на запись) в 13 наборах. По умолчанию доступ только на чтение, пока запись явно не включена.
Как устроена аутентификация для конечной точки MCP?Вы проходите аутентификацию с помощью персонального токена доступа, созданного в веб-интерфейсе (Профиль → Управление токенами) и передаваемого в заголовке X-User-Token. Также можно использовать OAuth 2.1: тогда Nightingale выступает либо собственным сервером авторизации, либо ресурсным сервером для существующего корпоративного провайдера идентификации, например Keycloak, Entra ID, Okta или Auth0.
Какие каналы уведомлений он поддерживает?Nightingale нативно поддерживает 20 типов средств уведомлений, включая телефонные звонки, SMS, email, DingTalk и Slack, с настраиваемыми шаблонами сообщений.
Из каких источников данных он может получать данные для оповещений?Поддерживаются источники данных вроде Prometheus, Elasticsearch, Loki, ClickHouse, MySQL и Postgres, а также прямой приём данных по протоколам Remote Write, OpenTSDB, Datadog и Falcon.
Creator
ccfos
Size
119 MB
Stars
13.4K
Age
6y
Commits · 90 Days