Files
waf-platform/deploy/clickhouse/README.md

7.0 KiB
Raw Blame History

ClickHouse + Fluent Bit 快速部署Ubuntu 22.04 / Amazon Linux 2023

1. 脚本说明

  • setup_clickhouse.sh:一键入口(推荐),默认顺序执行 安装 ClickHouse -> 配置 HTTPS -> 应用运行参数 -> 初始化日志表。
  • install_clickhouse_linux.sh:安装 clickhouse-serverclickhouse-client,并启动服务。
  • configure_clickhouse_https.sh:生成自签名 server.crt + server.key,写入 HTTPS 配置并重启服务。
  • configure_clickhouse_runtime.sh:默认将日志级别设为 warning,并禁用高开销系统日志表(text_logpart_logmetric_logasynchronous_metric_logtrace_log)。
  • init_waf_logs_tables.sh:执行建表脚本。
  • init_waf_logs_tables.sqllogs_ingestdns_logs_ingest 表结构定义。

进入脚本所在目录

cd /opt/waf-platform/deploy/clickhouse
chmod +x setup_clickhouse.sh

2. 一键部署

2.1 方式A不设置 ClickHouse 密码(用户名固定 default

sudo ./setup_clickhouse.sh

说明:

  • ClickHouse 连接用户是 default
  • 未设置密码时,后续平台连接密码留空

2.2 方式B设置用户名/密码(示例使用 default

sudo CH_USER='default' \
     CH_PASSWORD='YourStrongPassword' \
     CH_DATABASE='default' \
     ./setup_clickhouse.sh

说明:

  • CH_USER/CH_PASSWORD:初始化日志表时用于连接 ClickHouse
  • 如果你使用自定义用户,把 CH_USER 改为你的用户名,并保证该用户已有对应数据库权限

可选:单独应用运行参数(日志级别/系统日志表开关):

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

表单填写:

  • 连接地址HostClickHouse 地址IP 或域名),如 10.0.0.8clickhouse.example.com
  • 协议Schemehttps
  • 端口Port8443
  • 用户名Userdefault(或你自定义的用户名)
  • 密码Password:对应用户密码
  • 数据库Databasedefault(或你初始化日志表时使用的库名)

提交顺序:

  1. 点“测试连接”
  2. 连接成功后点“保存”

5. Fluent Bit两种方式

5.1 跟随节点在线自动安装(推荐)

说明:

  • Node / DNS 在线安装或升级时,平台会自动安装/升级 Fluent Bit 并下发配置。
  • 默认由平台托管,不需要逐台手改配置文件。

安装后所在节点关键文件:

  • /etc/fluent-bit/fluent-bit.confFluent 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_USERCH_PASSWORD

  • 更新触发:当平台里的 ClickHouse 账号或密码变更后,需触发一次节点安装/升级任务以下发新凭证。

  • 常见问题:只在 ClickHouse 侧改密码、未同步更新平台配置时Fluent Bit 会出现认证失败401/unauthorized

高配机器调优(当前默认按 4C8G 参数):

  • 当前默认参数:Flush=1storage.backlog.mem_limit=512MBMem_Buf_Limit=256MBworkers=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.gorenderManagedConfig()
    2. 按上面参数同步修改 Node/DNS 两段 [INPUT][OUTPUT]
    3. 重新发布 API 并触发节点安装/升级任务,下发新配置。

检查:

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

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

curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
sudo dnf makecache -y
sudo dnf install -y fluent-bit
  1. 放置配置文件:
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/
  1. 修改 /etc/fluent-bit/clickhouse-upstream.conf 的 ClickHouse HostPort(如 8443)。
  2. 配置认证环境变量(按需):
sudo tee /etc/fluent-bit/fluent-bit.env >/dev/null <<'EOF'
CH_USER=default
CH_PASSWORD=YourStrongPassword
EOF
  1. 让 systemd 读取环境变量:
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
  1. 启动并检查:
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. 验证

sudo journalctl -u fluent-bit -f