主题
Nightingale | 夜莺监控
夜莺(Nightingale)是一款开源的云原生监控系统,采用 all-in-one 设计,集数据采集、监控告警、可视化于一体。它由滴滴开源,现托管于中国计算机学会开源发展委员会(CCF),由快猫星云等持续投入,Apache-2.0 协议。
一句话定位:夜莺 = Prometheus + Alertmanager + Grafana 的「开箱即用」一体化替代。如果你觉得这三件套割裂、配置学习曲线高、多集群管理成本大,夜莺提供了一条更省心的路径。
一、核心架构
夜莺 v5+ 的核心是 server 与 webapi 两个模块,配合采集器与可替换的时序库:
Categraf / Telegraf / Grafana-Agent(采集器)
│ 写入
▼
时序库(Prometheus / VictoriaMetrics / M3DB / Thanos / TDengine)
▲
│ 查询 + 告警判断
▼
夜莺 Server(告警引擎/数据转发) ── 依赖 MySQL(元数据)+ Redis(缓存)
│
▼
夜莺 WebAPI(无状态,前端 + 配置写入)| 角色 | 说明 |
|---|---|
| server | 告警引擎 + 数据转发,通常随时序库部署,可水平扩展集群 |
| webapi | 无状态前端服务,承接请求、把配置写入 MySQL |
| Categraf | 夜莺默认采集器,all-in-one 设计,支持 metric/log/trace/event 采集 |
| 时序库 | 可替换,默认推荐 VictoriaMetrics(兼容 Prometheus、性能更优) |
二、Docker 安装
夜莺是一个多组件系统(依赖 MySQL、Redis 与一个时序库),因此官方以 Docker Compose 作为推荐部署方式,一条命令拉起全部组件。
前置要求
- Docker Engine 19.03+ 与 Docker Compose 1.27+(或
docker compose插件) - 建议资源:2 核 CPU、4GB 内存、20GB 磁盘
- 端口 17000、3306、6379、8428 需保持空闲
方式一:官方 Compose(推荐)
夜莺仓库内置开箱即用的编排文件,克隆后直接启动:
bash
git clone https://github.com/ccfos/nightingale.git
cd nightingale/docker/compose-bridge
docker compose up -d启动后 docker compose ps 应看到 5 个容器均为 Up 状态:
| 服务 | 镜像 | 端口 | 作用 |
|---|---|---|---|
| mysql | mysql:8 | 3306 | 元数据库,存用户、告警规则、仪表盘等 |
| redis | redis:6.2 | 6379 | 缓存,存 JWT token 与心跳元数据 |
| victoriametrics | victoriametrics/victoria-metrics | 8428 | 时序库,兼容 Prometheus |
| nightingale | flashcatcloud/nightingale | 17000 / 20090 | 夜莺核心服务(17000 Web、20090 数据上报) |
| categraf | flashcatcloud/categraf | - | 数据采集器,采集 CPU / 内存 / 磁盘 |
方式二:自定义 Compose(结构示意)
如需自定义配置,可参照官方 docker/compose-bridge 目录自行编写,核心服务定义示意如下(完整配置以官方仓库为准):
yaml
version: '3.8'
services:
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: n9e
ports:
- "3306:3306"
redis:
image: redis:6.2
ports:
- "6379:6379"
victoriametrics:
image: victoriametrics/victoria-metrics:latest
ports:
- "8428:8428"
nightingale:
image: flashcatcloud/nightingale:latest
ports:
- "17000:17000" # Web UI
- "20090:20090" # 数据上报
volumes:
- ./etc-nightingale:/app/etc
depends_on:
- mysql
- redis
- victoriametrics
categraf:
image: flashcatcloud/categraf:latest验证安装
bash
docker compose ps # 5 个容器应为 Up 状态
curl http://localhost:17000 # 返回页面即部署成功国内网络限制导致镜像拉取失败时,可改用
m.daocloud.io等镜像加速源。
三、登录与首次使用
浏览器访问 http://localhost:17000,默认账号密码为:
用户名:root
密码:root.2020登录后第一件事是修改默认密码。进入「系统配置」可查看并关联数据源(默认已连好内置时序库)。
四、核心功能
夜莺把监控告警的能力收拢在一套 Web 界面里:
- 告警规则:可视化配置 PromQL 告警规则,支持触发阈值、持续时长、告警级别。
- 屏蔽规则:在计划维护等场景下,按标签屏蔽指定告警(类似 Alertmanager 的 Silence)。
- 订阅规则:让不同团队/成员只接收自己关心的告警,实现告警分流。
- 通知渠道:支持邮件、飞书、钉钉、企业微信等多种送达方式,可自定义模板。
- 告警自愈:告警触发后自动回调 Webhook 或执行脚本,实现故障自动处理。
- 历史事件:告警事件的分组、归档与检索。
- 兼容 Grafana 仪表盘:可直接导入现有 Grafana Dashboard。
五、与 Prometheus 生态的关系
夜莺深度兼容 Prometheus 生态,并非另起炉灶:
- 采集器兼容:支持 Categraf、Telegraf、Grafana-Agent,也接收 Prometheus 指标。
- 存储兼容:时序库可选 Prometheus、VictoriaMetrics、M3DB、Thanos、TDengine 等。
- 查询兼容:告警规则与仪表盘沿用 PromQL。
适合升级到夜莺的场景:
- Prometheus + Alertmanager + Grafana 多系统割裂,缺乏统一视图;
- 通过改配置文件管理告警,学习成本高、团队协同难;
- 单套 Prometheus 数据量过大、扩展困难;
- 生产环境跑多套 Prometheus,管理与使用成本高。
六、注意事项
- 修改默认密码:
root/root.2020是默认凭据,上线前务必更改。 - 集群模式:多实例需共享同一 MySQL 与 Redis,需修改
etc-nightingale/config.toml统一配置。 - 边缘(Edge)模式:需额外部署
n9e-edge进程,社区暂不提供其 Docker 镜像,需二进制方式部署。 - 端口占用:17000(Web)、3306(MySQL)、6379(Redis)需保持空闲。