Netdata Docker Compose 部署指南
使用 Docker Compose 基于官方镜像 netdata/netdata 部署 Netdata v2.12 实时监控,涵盖数据持久化、系统指标采集挂载、环境变量、健康检查、等价 docker run 方式与常用运维命令,已在 /opt/data/ops/netdata 实测通过
Netdata Docker Compose 部署指南
目标:使用 Docker Compose 基于官方镜像
netdata/netdata:stable部署 Netdata v2.12 实时监控,涵盖数据持久化、系统指标采集挂载、常用环境变量、健康检查、等价docker run方式与常用运维命令。本文档已在/opt/data/ops/netdata目录实测通过。
一、环境信息
- 操作系统:Ubuntu 24.04 LTS
- 系统架构:x86_64
- Docker 版本:Docker Engine 24.x(含 Compose v2 插件)
- 镜像:
netdata/netdata:stable(官方镜像,内含 v2.12 稳定版) - 容器名称:
netdata-agent - 端口映射:宿主机
19999→ 容器19999 - 数据目录:宿主机
/opt/data/ops/netdata/ - 部署文件:
/opt/data/ops/netdata/docker-compose.yaml
二、镜像选型说明
| 镜像标签 | 对应版本 | 特点 |
|---|---|---|
netdata/netdata:stable | v2.12.x 稳定版 | 官方镜像,面向生产 |
netdata/netdata:nightly | 每夜构建 | 含最新特性,稳定性较低 |
💡 说明:官方镜像仓库为
docker.io/netdata/netdata。国内拉取可配置镜像加速器,或加载到宿主机后docker load。生产建议锁定stable标签。
三、前置条件
- 已安装 Docker Engine 与 Docker Compose 插件:
docker --version && docker compose version - 已规划数据目录
- 监控对象需 Container 权限(采集宿主机容器/进程指标)
四、部署步骤
4.1 创建部署目录
sudo mkdir -p /opt/data/ops/netdata
cd /opt/data/ops/netdata
4.2 编写 docker-compose.yaml
将以下内容保存为 /opt/data/ops/netdata/docker-compose.yaml:
# =============================================================================
# Netdata Docker Compose 部署文件
# 镜像:netdata/netdata:stable(官方稳定镜像,Netdata v2.12)
# 使用方式:cd /opt/data/ops/netdata && docker compose up -d
# =============================================================================
services:
netdata:
image: netdata/netdata:stable
container_name: netdata-agent
restart: unless-stopped
hostname: netdata-host
# ---- 端口映射:宿主机19999 -> 容器19999(Web/API)----
ports:
- "19999:19999"
# ---- 采集合主机的系统指标所需挂载(判读/proc、/sys、cgroup)----
volumes:
- netdataconfig:/etc/netdata
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /etc/os-release:/host/etc/os-release:ro
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
netdataconfig:
netdatalib:
netdatacache:
💡 说明:
/proc、/sys、/etc/passwd等只读挂载与cap_add: SYS_PTRACE让 Netdata 在容器内也能采集宿主机真实的 CPU、内存、磁盘、网络与进程指标。
4.3 启动
docker compose up -d
4.4 验证部署
查看状态:
docker compose ps
执行结果:
NAME IMAGE STATUS
netdata-agent netdata/netdata:stable Up
验证 Web/API:
curl -s http://127.0.0.1:19999/api/v1/info
执行结果(节选):
{"version":"2.12.0","hostname":"netdata-host","hosts-available":1,...}
💡 说明:返回
version(v2.12.0)与hostname,Web/API 正常。浏览器打开http://<服务器IP>:19999查看实时监控仪表盘。
五、数据持久化说明
| 数据 | 类型 | 说明 |
|---|---|---|
netdataconfig | 命名卷 | /etc/netdata 配置目录 |
netdatalib | 命名卷 | /var/lib/netdata 数据库与流式缓存 |
netdatacache | 命名卷 | /var/cache/netdata 图表/运行时缓存 |
💡 说明:三者均为命名卷,容器重建后配置、历史数据与图表缓存不丢失;如需在宿主机直接编辑,可改用 bind mount(如
./etc:/etc/netdata)。
六、常用环境变量表
| 变量 | 默认值 | 说明 |
|---|---|---|
NETDATA_LISTENER_PORT | 19999 | Web/API 监听端口 |
PGID | 201 | 容器内运行组 ID |
HOSTNAME(镜像内置) | 容器名 | 主机名 |
TZ | UTC | 时区,建议 Asia/Shanghai |
七、常用配置参数说明
- Web/API 默认端口
19999,内部时序/图表数据存于命名卷/var/lib/netdata。 - 镜像默认以
memory mode采集,重启后旧数据不会长期保留;如需持久化历史可配置数据库(如libengine/外部 DB)。 - 主配置
/etc/netdata/netdata.conf可通过curl http://<IP>:19999/netdata.conf生成后覆盖默认。
八、配置文件持久化(conf 挂载)
如需把配置落地到宿主机便于编辑,可改用 bind mount 并预生成配置:
services:
netdata:
volumes:
- ./etc:/etc/netdata
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
sudo mkdir -p /opt/data/ops/netdata/etc
docker run --rm netdata/netdata:stable sh -c 'curl -o /dev/null' 2>/dev/null
# 生成一份默认配置到宿主机 ./etc 后按需修改
💡 说明:bind mount 方式下,编辑宿主机
./etc/web/netdata.conf后docker compose restart netdata生效。
九、等价 docker run 运行方式
不使用 Compose 时,可单条 docker run:
docker run -d --name netdata-agent --hostname netdata-host \
-p 19999:19999 \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
--cap-add SYS_PTRACE --security-opt apparmor:unconfined \
netdata/netdata:stable
十、常用运维命令
# 查看容器状态
docker compose ps
# 查看日志
docker compose logs -f netdata
# 校验/可执行 netdata 参数
docker compose exec netdata netdata -h
# 健康检查信息
docker compose exec netdata bash -c 'cat /var/lib/netdata/.healthy 2>/dev/null || echo ok'
# 重启(改配置后)
docker compose restart netdata
# 停止/移除(命名卷保留)
docker compose down
十一、常见问题(FAQ)
11.1 容器内采集不到宿主机指标
💡 原因与解决:多为缺少
/proc、/sys挂载或SYS_PTRACE权限。补全 compose 中的 volumes 与cap_add后docker compose up -d --force-recreate。
11.2 19999 端口被占用
💡 原因与解决:改
ports: - "19999:19999"的宿主机侧端口(如"18099:19999"),同步调整浏览器访问地址与NETDATA_LISTENER_PORT(如相同则改容器侧以避免冲突)。
11.3 重启后历史数据丢失
💡 原因与解决:确认
netdatalib命名卷//var/lib/netdata挂载存在;若用内存模式采集,重启即清空,需按需配置持久化数据库。
十二、参考链接
- netdata/netdata 官方镜像:https://hub.docker.com/r/netdata/netdata
- Netdata 容器部署文档:https://learn.netdata.cloud/docs/installing/
- docker-compose 参考:https://docs.docker.com/compose/compose-file/