feat: add access log functionality and related components

- Introduced NodeAccessLog model and corresponding database migrations.
- Implemented access log retrieval in the service layer.
- Created API endpoint for accessing logs with appropriate security measures.
- Developed frontend components for displaying access logs, including filtering and summary statistics.
- Updated observability buffer to include access logs and ensure proper merging and retention.
- Enhanced traffic report and observability tests to validate new access log features.
- Updated documentation to reflect changes in access log handling and data retention policies.
This commit is contained in:
ryan
2026-03-14 18:21:48 +08:00
parent e25b41fd75
commit b7d38590ba
25 changed files with 669 additions and 21 deletions
+3 -1
View File
@@ -82,7 +82,7 @@ ATSFlare 当前定位为内部自用的反向代理控制面,不面向外部
* 为了支持世界地图看板,允许节点维护低频地图元数据,如位置名、纬度和经度;这类字段仍属于控制面摘要信息,可保留在 `nodes`
* 节点详情页聚焦系统信息、实时资源、网络流量、24 小时趋势和目标版本,不继续堆积低价值静态字段
* 在不引入 Prometheus、ClickHouse、Kafka 等新基础设施前提下完成第六版;数据采集、聚合与查询继续落在现有 Server/SQLite 基线内
* 原始请求数据不作为长期日志平台对外开放;第六版允许保留受控时间窗口内的明细,用于聚合分析、趋势计算与节点详情辅助排查
* 原始请求数据不作为长期日志平台对外开放;第六版允许保留受控时间窗口内的明细,用于聚合分析、趋势计算、节点详情辅助排查,以及管理端“日志”页面查看最近时间窗口内的访问记录
* 第六版不做完整 APM、调用链追踪、日志检索平台、任意 SQL 分析接口或自定义报表系统
新增能力超出上述边界时,必须先更新本文档,再进入实现。
@@ -181,6 +181,7 @@ ATSFlare Agent (register / heartbeat / sync / apply / update)
* `tls_certificates`:托管证书与私钥
* `managed_domains`:域名资产及默认证书关系
* `node_request_reports`:节点通过 heartbeat 批量上报的请求明细或请求批次
* `node_access_logs`:节点最近时间窗口内的受控访问明细,仅保留用于管理端排查的必要字段
* `node_metric_snapshots`:节点实时资源、磁盘 IO 与网络流量快照
* `traffic_analytics_rollups`:按时间窗口聚合后的访问指标,用于总览与节点详情看板
* `node_health_events`:节点运行状态变化、阈值异常与配置偏差事件
@@ -203,6 +204,7 @@ ATSFlare Agent (register / heartbeat / sync / apply / update)
* 节点请求数据必须随 heartbeat 按批次上报,Server 不主动反向拉取节点日志文件
* 指标看板使用服务端聚合结果,不在前端重复做大规模统计计算
* 节点资源快照与请求明细必须能按时间排序并绑定节点,保证 24 小时趋势与节点详情可回放
* 管理端日志页只展示受控保留窗口内的必要访问字段,如原始来源 IP、访问域名、路径、命中的节点与响应状态码,不演变为通用日志检索平台
* 原始请求明细、聚合统计与节点基础状态必须在时间窗口上可对齐
* 首页总览的系统状态必须基于统一服务端口径生成,不能由多个历史列表接口在前端临时拼装推导
* 健康事件必须支持“触发中/已恢复”状态,避免首页异常永远累积
+2
View File
@@ -133,6 +133,7 @@
* `tls_certificates`
* `managed_domains`
* `node_request_reports`
* `node_access_logs`
* `node_metric_snapshots`
* `traffic_analytics_rollups`
* `node_health_events`
@@ -154,6 +155,7 @@
* 第六版新增的请求明细、资源快照和聚合统计必须按节点与时间窗口关联
* `node_metric_snapshots` 必须是追加式时间序列快照,不通过覆盖 `nodes` 当前值替代历史
* `traffic_analytics_rollups` 必须区分时间粒度与统计范围,优先存储窗口聚合而不是无限制保留原始逐请求明细
* `node_access_logs` 仅保留管理端排查所需的受控访问字段与短期保留窗口,不承担全文检索或长期归档职责
* `node_health_events` 必须具备事件类型、严重级别、首次触发时间、最近触发时间和恢复时间,便于首页总览做异常归并
* 访问分析优先复用现有 Server/SQLite 基线,不为第六版引入新的时序数据库或消息队列
* 聚合统计与原始明细的保留策略必须明确,避免无限制累积