#!/bin/bash
# ==========================================
# 配置参数 - 请根据实际情况修改
# ==========================================
#PARENT_IP="你的IP"
PARENT_IP="10.8.0.3"
#内网地址;使用了host;注意安全。
PARENT_PORT="19999"
API_KEY="你的一个uuid"
DATA_DIR="/data/netdata"
# ==========================================
# 脚本逻辑
# ==========================================
# 创建目录
echo "正在创建目录: $DATA_DIR"
mkdir -p $DATA_DIR/config $DATA_DIR/lib $DATA_DIR/cache
chown -R 201:201 $DATA_DIR
# 生成 stream.conf
# 注意:如果 IP 是 IPv6,destination 必须加方括号 []
echo "正在生成 stream.conf..."
cat <<EOF > $DATA_DIR/config/stream.conf
[stream]
enabled = yes
destination = [$PARENT_IP]:$PARENT_PORT
api key = $API_KEY
timeout seconds = 60
buffer size bytes = 1048576
reconnect delay seconds = 5
EOF
# 生成 docker-compose.yml
echo "正在生成 docker-compose.yml..."
cat <<EOF > $DATA_DIR/docker-compose.yml
services:
netdata:
image: netdata/netdata
container_name: netdata
# 关键修改 1: 使用 host 网络模式,这样监控网络指标最准确
network_mode: host
# 关键修改 2: 共享宿主机的 PID 命名空间,这样才能监控到所有进程
pid: host
restart: always
cap_add:
- SYS_PTRACE
- DAC_READ_SEARCH # 修复 apps.plugin 的权限报错
- NET_ADMIN # 允许监控网络接口
security_opt:
- apparmor:unconfined
volumes:
- /data/netdata/config:/etc/netdata
- /data/netdata/lib:/var/lib/netdata
- /data/netdata/cache:/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
# 修复 Systemd DBUS 报错:挂载 dbus socket
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- NETDATA_HOSTNAME=$(hostname)
- TZ=Asia/Shanghai
- NETDATA_LOG_METHOD=stderr
- NETDATA_LOG_FORMAT=default
EOF
# 启动容器
echo "正在启动 Netdata Child..."
cd $DATA_DIR
docker compose up -d
echo "=========================================="
echo "部署完成!"
echo "请检查中心机 (Parent) 的 Dashboard 确认节点是否上线。"
echo "=========================================="