Skip to content

Nightingale | 夜莺监控

夜莺(Nightingale)是一款开源的云原生监控系统,采用 all-in-one 设计,集数据采集、监控告警、可视化于一体。它由滴滴开源,现托管于中国计算机学会开源发展委员会(CCF),由快猫星云等持续投入,Apache-2.0 协议。

一句话定位:夜莺 = Prometheus + Alertmanager + Grafana 的「开箱即用」一体化替代。如果你觉得这三件套割裂、配置学习曲线高、多集群管理成本大,夜莺提供了一条更省心的路径。

一、核心架构

夜莺 v5+ 的核心是 serverwebapi 两个模块,配合采集器与可替换的时序库:

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 状态:

服务镜像端口作用
mysqlmysql:83306元数据库,存用户、告警规则、仪表盘等
redisredis:6.26379缓存,存 JWT token 与心跳元数据
victoriametricsvictoriametrics/victoria-metrics8428时序库,兼容 Prometheus
nightingaleflashcatcloud/nightingale17000 / 20090夜莺核心服务(17000 Web、20090 数据上报)
categrafflashcatcloud/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,管理与使用成本高。

六、注意事项

  1. 修改默认密码root/root.2020 是默认凭据,上线前务必更改。
  2. 集群模式:多实例需共享同一 MySQL 与 Redis,需修改 etc-nightingale/config.toml 统一配置。
  3. 边缘(Edge)模式:需额外部署 n9e-edge 进程,社区暂不提供其 Docker 镜像,需二进制方式部署。
  4. 端口占用:17000(Web)、3306(MySQL)、6379(Redis)需保持空闲。

参考资料