夜莺开源监控如何使用 Docker 部署,有哪些注意事项?
2026/7/23 17:16:28 网站建设 项目流程

我这个问题里刻意提到“夜莺”关键字,没有使用 Nightingale,因为我的 Knowledge 里就是用的“夜莺”,另外,我刻意要求 AI 告诉我有哪些注意事项,因为我担心有坑。AI 的回答真的挺惊艳的,而且这是普通的 DeepSeek V4,并非顶级模型,截图如下,不骗大家。


详细回答如下。


用 Docker Compose 部署夜莺监控

一、快速开始

夜莺提供了开箱即用的 Docker Compose 配置文件,位于源码仓库的docker/compose-bridge/目录下。

1. 克隆仓库并启动:

git clone https://gitlink.org.cn/ccfos/nightingale.git cd nightingale/docker/compose-bridge docker compose up -d

国内网络 Docker Hub 拉取镜像可能很慢,可使用镜像加速器,或从m.daocloud.io代理拉取。

备注:上面给的 gitlink 的地址,是国内 git repo 地址,建议优先使用 github.com/ccfos/nightingale 这个 github 的地址,gitlink 会稍微滞后一些,发布 releases 的时候,是在 github 发布。

2. 启动后你会得到 5 个容器:

容器镜像用途端口
mysqlmysql:8关系型数据库,存用户、告警规则、仪表盘等3306
redisredis:6.2缓存,存 JWT token、心跳元信息6379
victoriametricsvictoriametrics/victoria-metrics:v1.79.12时序数据库(兼容 Prometheus,性能更好)8428
nightingaleflashcatcloud/nightingale:latest夜莺核心服务17000, 20090
categrafflashcatcloud/categraf:latest数据采集器(采集 CPU/内存/磁盘等)

3. 登录:

浏览器访问http://<服务器IP>:17000,默认用户名root,默认密码root.2020


二、当前 docker-compose.yaml 完整内容

networks: nightingale: driver: bridge services: mysql: image: "mysql:8" container_name: mysql hostname: mysql restart: always environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 1234 volumes: - ./mysqldata:/var/lib/mysql/ - ../initsql:/docker-entrypoint-initdb.d/ - ./etc-mysql/my.cnf:/etc/my.cnf networks: - nightingale ports: - "3306:3306" redis: image: "redis:6.2" container_name: redis hostname: redis restart: always environment: TZ: Asia/Shanghai networks: - nightingale ports: - "6379:6379" victoriametrics: image: victoriametrics/victoria-metrics:v1.79.12 container_name: victoriametrics hostname: victoriametrics restart: always environment: TZ: Asia/Shanghai ports: - "8428:8428" networks: - nightingale command: - "--loggerTimezone=Asia/Shanghai" nightingale: image: flashcatcloud/nightingale:latest container_name: nightingale hostname: nightingale restart: always environment: GIN_MODE: release TZ: Asia/Shanghai WAIT_HOSTS: mysql:3306, redis:6379 volumes: - ./etc-nightingale:/app/etc networks: - nightingale ports: - "17000:17000" - "20090:20090" depends_on: - mysql - redis - victoriametrics command: - /app/n9e categraf: image: "flashcatcloud/categraf:latest" container_name: "categraf" hostname: "categraf01" restart: always environment: TZ: Asia/Shanghai HOST_PROC: /hostfs/proc HOST_SYS: /hostfs/sys HOST_MOUNT_PREFIX: /hostfs WAIT_HOSTS: nightingale:17000, nightingale:20090 volumes: - ./etc-categraf:/etc/categraf/conf - /:/hostfs networks: - nightingale depends_on: - nightingale

三、重要注意事项 ⚠️

1. 仅适合测试,不建议直接上生产

官方文档明确指出:Docker Compose 方式仅用于快速测试,不推荐在生产环境使用。如果要在生产环境使用,需要对 Docker Compose 有深入理解(Volume 持久化、网络、升级策略等)。生产环境推荐二进制部署 + systemd 托管,开机自启、挂了自动拉起、日志滚动、升级方便。

2. 数据持久化
  • MySQL 数据挂载到./mysqldata,务必保证此目录不随容器删除而丢失。
  • VictoriaMetrics 默认没有挂载数据卷——容器删除后时序数据全部丢失!如果需要持久化,应添加 volume 挂载:- ./vmdata:/victoria-metrics-data,并添加-retentionPeriod=90d参数。
  • Redis也无持久化配置,重启即丢失 JWT token(用户需重新登录)和心跳元信息。
3. MySQL 初始化

容器首次启动时,../initsql目录下的 SQL 文件会自动导入,创建夜莺所需的数据库表结构。这是通过 MySQL 镜像的/docker-entrypoint-initdb.d/机制完成的,只在数据库首次创建时执行

4. 密码安全
  • MySQL root 密码默认是1234生产环境务必修改MYSQL_ROOT_PASSWORD并同步修改etc-nightingale/config.toml中的 DSN 连接串。
  • 夜莺 Web 默认密码root.2020登录后立即修改
5. 集群模式

如果要部署多个n9e实例组成集群,不能用默认的 Docker Compose。需要修改etc-nightingale/config.toml,让所有 n9e 实例指向同一套外部的 MySQL 和 Redis。

6. 边缘模式不支持 Docker

边缘机房需要的n9e-edge进程,社区目前没有提供 Docker 镜像,边缘模式只能用二进制方式部署。

7. 可选替代:PostgreSQL + host 网络模式

仓库还提供了另外两种 Compose 变体:

  • compose-postgres/:用 PostgreSQL 替代 MySQL
  • compose-host-network/:使用network_mode: host,避免 bridge 网络的端口映射开销,适合单机高性能场景
8. 版本选择

仓库中有 V5(nightingale/docker/)和 V9(nightingale/docker/compose-bridge/)两套 Compose。V5 的架构是 nserver + nwebapi 分离模式,V9 已合并为单一nightingale容器。建议使用 V9,文档路径为docker/compose-bridge/

9. Categraf 采集器注意
  • Categraf 挂载了宿主机根目录/: /hostfs来读取/proc/sys等系统指标。
  • 如果宿主机也是 Mac(比如你当前环境是 macOS),Docker 容器内的/hostfs/proc实际是 Linux VM 的 proc,采集到的 CPU/内存是 Docker Desktop 虚拟机的指标,不是 macOS 宿主机的

四、总结

场景推荐方案
快速体验/演示docker compose up -d,5 分钟搞定
生产环境二进制部署 + systemd 托管
K8s 环境Helm 部署
需要边缘告警中心端 Docker Compose + 边缘二进制 n9e-edge

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询