dns clickhouse改造

This commit is contained in:
robin
2026-02-10 19:30:44 +08:00
parent 4812ad5aaf
commit 1bb8140a41
47 changed files with 2815 additions and 174 deletions

View File

@@ -139,3 +139,51 @@ flowchart LR
- 通常 1 分钟内自动刷新生效。
- 若要立即生效:重启 `edge-api`,并在需要时重启 `edge-node`、`fluent-bit`。
---
## 8. DNS 日志与 HTTP 策略联动(新增)
从当前版本开始DNS 访问日志与 HTTP 访问日志共享同一套公用策略语义(`writeTargets`
- `WriteMySQL=true`DNS 节点上报 APIAPI 写入 MySQL 分表。
- `WriteClickHouse=true`DNS 节点写本地 JSONLFluent Bit 采集写入 ClickHouse `dns_logs_ingest`。
- 双开即双写;双关即不写(仅保留内存处理,不入库)。
### 8.1 DNS 写入链路
```mermaid
flowchart LR
A[EdgeDNS 产生日志] --> B{writeTargets}
B -->|MySQL=true| C[CreateNSAccessLogs]
C --> D[(MySQL edgeNSAccessLogs_YYYYMMDD)]
B -->|ClickHouse=true| E[/var/log/edge/edge-dns/access.log]
E --> F[Fluent Bit]
F --> G[(ClickHouse dns_logs_ingest)]
```
### 8.2 DNS 查询链路
```mermaid
flowchart TD
Q[/ns/clusters/accessLogs] --> R{策略是否启用ClickHouse且CH可用}
R -->|是| CH[(dns_logs_ingest)]
R -->|否| M{策略是否启用MySQL}
CH -->|查询失败| M
M -->|是| MY[(MySQL edgeNSAccessLogs_YYYYMMDD)]
M -->|否| E[返回空列表]
```
### 8.3 组合场景说明DNS
| 策略 | 写入 | 读取 |
|------|------|------|
| 仅 MySQL | API -> MySQL | MySQL |
| 仅 ClickHouse | 本地文件 -> Fluent Bit -> ClickHouse | ClickHouse |
| MySQL + ClickHouse | API -> MySQL + 本地文件 -> Fluent Bit -> ClickHouse | 优先 ClickHouse失败回退 MySQL |
### 8.4 DNS 相关必须配置
1. `EdgeAPI` 配置 ClickHouse 连接(仅读 CH 时必须)。
2. `deploy/fluent-bit/fluent-bit.conf` 已包含 DNS 输入:`/var/log/edge/edge-dns/*.log`。
3. ClickHouse 已创建 `dns_logs_ingest` 表。
4. EdgeDNS 运行用户对 `EDGE_DNS_LOG_DIR`(默认 `/var/log/edge/edge-dns`)有写权限。