MCPcopy
hub / github.com/ccfos/nightingale

github.com/ccfos/nightingale @v8.5.1 sqlite

repository ↗ · DeepWiki ↗ · release v8.5.1 ↗
3,577 symbols 10,268 edges 366 files 594 documented · 17%
README

nightingale - cloud native monitoring

开源告警管理专家

Docs Docker pulls GitHub contributors GitHub Repo stars GitHub forks

GitHub Repo issues GitHub Repo issues closed GitHub latest release License GitHub contributors

English | 中文

夜莺是什么

夜莺 Nightingale 是一款开源云原生监控告警工具,是中国计算机学会接受捐赠并托管的第一个开源项目,在 GitHub 上有超过 12000 颗星,广受关注和使用。夜莺的统一告警引擎,可以对接 Prometheus、Elasticsearch、ClickHouse、Loki、MySQL 等多种数据源,提供全面的告警判定、丰富的事件处理和灵活的告警分发及通知能力。

夜莺侧重于监控告警,类似于 Grafana 的数据源集成方式,夜莺也是对接多种既有的数据源,不过 Grafana 侧重于可视化,夜莺则是侧重于告警引擎、告警事件的处理和分发。

夜莺监控项目,最初由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展技术委员会(CCF ODTC),为 CCF ODTC 成立后接受捐赠的第一个开源项目。

夜莺的工作逻辑

很多用户已经自行采集了指标、日志数据,此时就把存储库(VictoriaMetrics、ElasticSearch等)作为数据源接入夜莺,即可在夜莺里配置告警规则、通知规则,完成告警事件的生成和派发。

夜莺产品架构

夜莺项目本身不提供监控数据采集能力。推荐您使用 Categraf 作为采集器,可以和夜莺丝滑对接。

Categraf 可以采集操作系统、网络设备、各类中间件、数据库的监控数据,通过 Remote Write 协议推送给夜莺,夜莺把监控数据转存到时序库(如 Prometheus、VictoriaMetrics 等),并提供告警和可视化能力。

对于个别边缘机房,如果和中心夜莺服务端网络链路不好,希望提升告警可用性,夜莺也提供边缘机房告警引擎下沉部署模式,这个模式下,即便边缘和中心端网络割裂,告警功能也不受影响。

边缘部署模式

上图中,机房A和中心机房的网络链路很好,所以直接由中心端的夜莺进程做告警引擎,机房B和中心机房的网络链路不好,所以在机房B部署了 n9e-edge 做告警引擎,对机房B的数据源做告警判定。

告警降噪、升级、协同

夜莺的侧重点是做告警引擎,即负责产生告警事件,并根据规则做灵活派发,内置支持 20 种通知媒介(电话、短信、邮件、钉钉、飞书、企微、Slack 等)。

如果您有更高级的需求,比如:

  • 想要把公司的多套监控系统产生的事件聚拢到一个平台,统一做收敛降噪、响应处理、数据分析
  • 想要支持人员的排班,践行 On-call 文化,想要支持告警认领、升级(避免遗漏)、协同处理

那夜莺是不合适的,推荐您选用 FlashDuty 这样的 On-call 产品,产品简单易用,也有免费套餐。

相关资料 & 交流渠道

  • 📚 夜莺介绍PPT 对您了解夜莺各项关键特性会有帮助(PPT链接在文末)
  • 👉 文档中心 为了更快的访问速度,站点托管在 FlashcatCloud
  • ❤️ 报告 Bug 写清楚问题描述、复现步骤、截图等信息,更容易得到答案
  • 💡 前后端代码分离,前端代码仓库:https://github.com/n9e/fe
  • 🎯 关注这个公众号了解更多夜莺动态和知识
  • 🌟 加我微信:picobyte(我已关闭好友验证)拉入微信群,备注:夜莺互助群,如果已经把夜莺上到生产环境,可联系我拉入资深监控用户群

关键特性简介

夜莺告警规则

  • 夜莺支持告警规则、屏蔽规则、订阅规则、通知规则,内置支持 20 种通知媒介,支持消息模板自定义
  • 支持事件管道,对告警事件做 Pipeline 处理,方便和自有系统做自动化整合,比如给告警事件附加一些元信息,对事件做 relabel
  • 支持业务组概念,引入权限体系,分门别类管理各类规则
  • 很多数据库、中间件内置了告警规则,可以直接导入使用,也可以直接导入 Prometheus 的告警规则
  • 支持告警自愈,即告警之后自动触发一个脚本执行一些预定义的逻辑,比如清理一下磁盘、抓一下现场等

夜莺事件大盘

  • 夜莺存档了历史告警事件,支持多维度的查询和统计
  • 支持灵活的聚合分组,一目了然看到公司的告警事件分布情况

夜莺集成中心

  • 夜莺内置常用操作系统、中间件、数据库的的指标说明、仪表盘、告警规则,不过都是社区贡献的,整体也是参差不齐
  • 夜莺直接接收 Remote Write、OpenTSDB、Datadog、Falcon 等多种协议的数据,故而可以和各类 Agent 对接
  • 夜莺支持 Prometheus、ElasticSearch、Loki、TDEngine 等多种数据源,可以对其中的数据做告警
  • 夜莺可以很方便内嵌企业内部系统,比如 Grafana、CMDB 等,甚至可以配置这些内嵌系统的菜单可见性

夜莺仪表盘

  • 夜莺支持仪表盘功能,支持常见的图表类型,也内置了一些仪表盘,上图是其中一个仪表盘的截图。
  • 如果你已经习惯了 Grafana,建议仍然使用 Grafana 看图。Grafana 在看图方面道行更深。
  • 机器相关的监控数据,如果是 Categraf 采集的,建议使用夜莺自带的仪表盘查看,因为 Categraf 的指标命名 Follow 的是 Telegraf 的命名方式,和 Node Exporter 不同
  • 因为夜莺有个业务组的概念,机器可以归属不同的业务组,有时在仪表盘里只想查看当前所属业务组的机器,所以夜莺的仪表盘可以和业务组联动

广受关注

Stargazers over time

感谢众多企业的信赖

夜莺客户

社区共建

  • ❇️ 请阅读浏览夜莺开源项目和社区治理架构草案,真诚欢迎每一位用户、开发者、公司以及组织,使用夜莺监控、积极反馈 Bug、提交功能需求、分享最佳实践,共建专业、活跃的夜莺开源社区。
  • ❤️ 夜莺贡献者

License

Extension points exported contracts — how you extend this code

CallBacker (Interface)
CallBacker 进行回调的接口 [10 implementers]
alert/sender/callback.go
Datasource (Interface)
(no doc) [8 implementers]
datasource/datasource.go
DatabaseShower (Interface)
(no doc) [7 implementers]
center/router/router_datasource_db.go
Processor (Interface)
(no doc) [7 implementers]
models/event_processor.go
Writer (Interface)
(no doc) [4 implementers]
pushgw/writer/writer.go
API (Interface)
API provides bindings for Prometheus's v1 API. [1 implementers]
pkg/prom/reader.go
NotifyTargetDispatch (FuncType)
Dispatch 抽象由告警事件到信息接收者的路由策略 rule: 告警规则 event: 告警事件 prev: 前一次路由结果, Dispatch 的实现可以直接修改 prev, 也可以返回一个新的 NotifyTarget 用于 And
alert/dispatch/notify_target.go
Producer (Interface)
(no doc) [2 implementers]
pushgw/kafka/producer.go

Core symbols most depended-on inside this repo

DB
called by 438
models/common.go
Data
called by 319
pkg/cfg/scan.go
auth
called by 271
center/router/router_mw.go
user
called by 236
center/router/router_mw.go
Error
called by 195
pkg/prom/reader.go
GET
called by 173
pkg/ibex/ibex.go
POST
called by 147
pkg/ibex/ibex.go
perm
called by 144
center/router/router_mw.go

Shape

Method 1,761
Function 1,132
Struct 613
TypeAlias 29
FuncType 17
Interface 13
Class 12

Languages

Go96%
Python4%

Modules by API surface

pkg/ormx/database_init.go179 symbols
pkg/prom/reader.go85 symbols
pkg/tplx/fns.go64 symbols
models/alert_rule.go62 symbols
models/notify_channel.go54 symbols
models/user.go51 symbols
models/target.go46 symbols
alert/eval/eval.go44 symbols
models/alert_cur_event.go41 symbols
models/migrate/migrate.go36 symbols
models/datasource.go34 symbols
center/router/router_mw.go33 symbols

Dependencies from manifests, versioned

github.com/Azure/go-ntlmsspv0.0.0-2022062108133 · 1×
github.com/BurntSushi/tomlv1.4.0 · 1×
github.com/ClickHouse/ch-gov0.61.5 · 1×
github.com/IBM/saramav1.45.0 · 1×
github.com/VictoriaMetrics/metricsv1.34.0 · 1×
github.com/VictoriaMetrics/metricsqlv0.81.1 · 1×
github.com/alibabacloud-go/alibabacloud-gateway-spiv0.0.5 · 1×
github.com/alibabacloud-go/darabonba-openapi/v2v2.1.13 · 1×
github.com/alibabacloud-go/debugv1.0.1 · 1×
github.com/alibabacloud-go/dingtalkv1.6.95 · 1×
github.com/alibabacloud-go/gateway-dingtalkv1.0.2 · 1×

Datastores touched

(mongodb)Database · 1 repos

For agents

$ claude mcp add nightingale \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact