# ClickHouse + Fluent Bit 快速部署(Ubuntu 22.04 / Amazon Linux 2023) ## 1. 脚本说明 - `setup_clickhouse.sh`:一键入口(推荐),默认顺序执行 安装 ClickHouse -> 配置 HTTPS -> 应用运行参数 -> 初始化日志表。 - `install_clickhouse_linux.sh`:安装 `clickhouse-server`、`clickhouse-client`,并启动服务。 - `configure_clickhouse_https.sh`:生成自签名 `server.crt + server.key`,写入 HTTPS 配置并重启服务。 - `configure_clickhouse_runtime.sh`:默认将日志级别设为 `warning`,并禁用高开销系统日志表(`text_log`、`part_log`、`metric_log`、`asynchronous_metric_log`、`trace_log`)。 - `init_waf_logs_tables.sh`:执行建表脚本。 - `init_waf_logs_tables.sql`:`logs_ingest`、`dns_logs_ingest` 表结构定义。 进入脚本所在目录 ```bash cd /opt/waf-platform/deploy/clickhouse chmod +x setup_clickhouse.sh ``` ## 2. 一键部署 ### 2.1 方式A:不设置 ClickHouse 密码(用户名固定 `default`) ```bash sudo ./setup_clickhouse.sh ``` 说明: - ClickHouse 连接用户是 `default` - 未设置密码时,后续平台连接密码留空 ### 2.2 方式B:设置用户名/密码(示例使用 `default`) ```bash sudo CH_USER='default' \ CH_PASSWORD='YourStrongPassword' \ CH_DATABASE='default' \ ./setup_clickhouse.sh ``` 说明: - `CH_USER`/`CH_PASSWORD`:初始化日志表时用于连接 ClickHouse - 如果你使用自定义用户,把 `CH_USER` 改为你的用户名,并保证该用户已有对应数据库权限 可选:单独应用运行参数(日志级别/系统日志表开关): ```bash sudo CH_LOG_LEVEL=warning ./setup_clickhouse.sh runtime ``` ## 3. ClickHouse 安装后关键目录 - 配置目录:`/etc/clickhouse-server/` - 客户端配置目录:`/etc/clickhouse-client/` - 数据目录:`/var/lib/clickhouse/` - 日志目录:`/var/log/clickhouse-server/` - HTTPS 覆盖配置:`/etc/clickhouse-server/config.d/waf-https.xml` - 运行参数覆盖配置:`/etc/clickhouse-server/config.d/waf-runtime.xml` - HTTPS 证书和私钥:`/etc/clickhouse-server/server.crt`、`/etc/clickhouse-server/server.key` - 证书生成中间文件目录:`/etc/clickhouse-server/pki/` ## 4. 管理平台配置(EdgeAdmin) 页面路径: - 左侧菜单:`系统设置` -> `高级设置` - 顶部标签:`日志数据库(ClickHouse)` 表单填写: - `连接地址(Host)`:ClickHouse 地址(IP 或域名),如 `10.0.0.8` 或 `clickhouse.example.com` - `协议(Scheme)`:`https` - `端口(Port)`:`8443` - `用户名(User)`:`default`(或你自定义的用户名) - `密码(Password)`:对应用户密码 - `数据库(Database)`:`default`(或你初始化日志表时使用的库名) 提交顺序: 1. 点“测试连接” 2. 连接成功后点“保存” ## 5. Fluent Bit(两种方式) ### 5.1 跟随节点在线自动安装(推荐) 说明: - Node / DNS 在线安装或升级时,平台会自动安装/升级 Fluent Bit 并下发配置。 - 默认由平台托管,不需要逐台手改配置文件。 安装后所在节点关键文件: - `/etc/fluent-bit/fluent-bit.conf`:Fluent Bit 主配置(输入日志路径、输出 ClickHouse、性能参数)。 - `/etc/fluent-bit/parsers.conf`:日志解析器定义(当前主要使用 JSON parser)。 - `/etc/fluent-bit/.edge-managed.env`:平台下发的 ClickHouse 认证环境变量(`CH_USER`/`CH_PASSWORD`)。 - `/etc/fluent-bit/.edge-managed.json`:平台下发的元数据(角色、配置哈希、版本、更新时间)。 说明: - 在线安装时,节点上的 `/etc/fluent-bit/fluent-bit.conf` 会被平台下发覆盖。 fluent-bit中ClickHouse 账号密码下发与更新逻辑: - 下发来源:管理平台 -日志数据库(ClickHouse)中保存的账号密码。 - 落地文件:平台在线安装或升级时写入节点 `/etc/fluent-bit/.edge-managed.env`,内容为 `CH_USER`、`CH_PASSWORD`。 - 更新触发:当平台里的 ClickHouse 账号或密码变更后,需触发一次节点安装/升级任务以下发新凭证。 - 常见问题:只在 ClickHouse 侧改密码、未同步更新平台配置时,Fluent Bit 会出现认证失败(401/unauthorized)。 高配机器调优(当前默认按 4C8G 参数): - 当前默认参数:`Flush=1`、`storage.backlog.mem_limit=512MB`、`Mem_Buf_Limit=256MB`、`workers=2`。 - 机器升配后优先调这 4 个参数: - `storage.backlog.mem_limit`:总缓冲上限(先增大,降低突发堆积丢日志风险)。 - `Mem_Buf_Limit`:每个 tail input 的内存缓冲(HTTP 与 DNS 两段都要改)。 - `workers`:输出并发写入线程数(HTTP 与 DNS 两段都要改)。 - `Flush`:刷盘/发送间隔(值越小越实时,CPU/网络开销更高)。 - 8C16G 参考值可按 `deploy/fluent-bit/fluent-bit-sample-8c16g.conf`: - `storage.backlog.mem_limit=1024MB` - `Mem_Buf_Limit=512MB` - `workers=4` - `Refresh_Interval=1` - 修改方法: 1. 编辑 `EdgeAPI/internal/installers/fluent_bit.go` 的 `renderManagedConfig()`。 2. 按上面参数同步修改 Node/DNS 两段 `[INPUT]` 和 `[OUTPUT]`。 3. 重新发布 API 并触发节点安装/升级任务,下发新配置。 检查: ```bash sudo systemctl status fluent-bit --no-pager sudo cat /etc/fluent-bit/.edge-managed.json sudo journalctl -u fluent-bit -n 100 --no-pager ``` ### 5.2 手动安装(自动安装失败时) 说明: - 适合节点在线自动安装 Fluent Bit 失败的场景。 - 采用在线安装方式,由你手动安装并维护配置。 步骤: 1. 在线安装 Fluent Bit。 Ubuntu 22.04: ```bash curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh sudo apt-get update -y sudo apt-get install -y fluent-bit ``` AWS 2023: ```bash curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh sudo dnf makecache -y sudo dnf install -y fluent-bit ``` 2. 放置配置文件: ```bash sudo mkdir -p /etc/fluent-bit sudo cp /opt/waf-platform/deploy/fluent-bit/fluent-bit.conf /etc/fluent-bit/ sudo cp /opt/waf-platform/deploy/fluent-bit/clickhouse-upstream.conf /etc/fluent-bit/ sudo cp /opt/waf-platform/deploy/fluent-bit/parsers.conf /etc/fluent-bit/ ``` 3. 修改 `/etc/fluent-bit/clickhouse-upstream.conf` 的 ClickHouse `Host`、`Port`(如 `8443`)。 4. 配置认证环境变量(按需): ```bash sudo tee /etc/fluent-bit/fluent-bit.env >/dev/null <<'EOF' CH_USER=default CH_PASSWORD=YourStrongPassword EOF ``` 5. 让 systemd 读取环境变量: ```bash sudo mkdir -p /etc/systemd/system/fluent-bit.service.d sudo tee /etc/systemd/system/fluent-bit.service.d/override.conf >/dev/null <<'EOF' [Service] EnvironmentFile=/etc/fluent-bit/fluent-bit.env EOF ``` 6. 启动并检查: ```bash sudo systemctl daemon-reload sudo systemctl enable fluent-bit sudo systemctl restart fluent-bit sudo systemctl status fluent-bit --no-pager sudo journalctl -u fluent-bit -n 100 --no-pager ``` ## 6. 验证 ```bash sudo journalctl -u fluent-bit -f ```