198 lines
7.0 KiB
Markdown
198 lines
7.0 KiB
Markdown
# 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
|
||
```
|