#!/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 "=========================================="