You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/docs/02-功能清单/01-采集日志/日志分表与分析设计.md

4.1 KiB

日志分表与分析设计(草案)

目标与范围

  • 对采集日志实现按月分区写入,提升写入吞吐和查询历史的性能。
  • 提供可查询的分析摘要字段,便于后台看板展示本次采集及对比分析。
  • 不引入新的依赖,不改变现有接口接口风格,确保向后兼容。

设计原则

  • 高并发写入:分区写入尽量避免锁争用,分区表应有合理的索引覆盖查询条件。
  • 易维护:分区边界需要可扩展,提供脚本自动创建未来分区的能力。
  • 可观测:数据结构中包括分析摘要字段,便于 API 与前端直接展示。
  • 兼容性:尽量复用现有字段名与数据类型,避免大规模重构。

目标表设计(草案)

  • 新增分区表 logs_partitioned字段如下
    • id BIGINT 自增主键
    • machine_id INT机床唯一标识
    • program_name VARCHAR(128):加工程序名
    • log_time DATETIME日志时间点
    • log_level VARCHAR(16):日志等级,默认 INFO
    • raw_payload JSON原始日志数据
    • analysis_summary TEXT本次采集的分析摘要可追溯、可回放
    • analysis_version VARCHAR(64):分析逻辑版本
    • 索引idx_machine_time(machine_id, log_time)、idx_program_time(program_name, log_time)
  • 分区PARTITION BY RANGE (TO_DAYS(log_time))
  • 示例分区p202401, p202402, ..., p202501按月份边界

分区键与分区策略

  • 使用 LOG_TIME 的日期维度进行分区TO_DAYS(log_time) 作为分区区间值。
  • 分区命名建议:按 yyyyMM 命名,如 p202401、p202402以便直观查看。
  • 初始覆盖期:从系统落地起,覆盖过去 24 个月及未来 12 个月的分区。
  • 未来分区维护:提供周期性脚本( monthly_partition_maintenance.sql )来创建新月份分区。

分区维护脚本(草案)

  • 提供简单的迁移脚本 skeleton示例位于 database/sqls/partitioned_logs.sql 的分区创建段。
  • 未来可将分区维护封装成 SQL store 程序或外部脚本bash/python自动按月扩容。
  • 维护内容包括:创建新的分区、对旧分区归档/归档策略,及对相关日志表的清理策略。

数据分析字段与 API 将暴露的摘要

  • analysis_summary 字段存放本次采集的要点、差异、以及可能的异常记录。
  • 通过 API 提供最新采集日志及其分析摘要,便于前端看板展示与对比。
  • 日志写入路径保持向后兼容:原有原始日志字段保留,新增分析字段仅供访问。

API/前端对接要点

  • 后端应提供查询接口:
    • 根据 machine_id、时间范围筛选日志
    • 返回最新采集日志及分析摘要
  • 前端看板要显示:
    • 最新日志时间、机器、程序、分析摘要要点
    • 与历史时间点对比的分析摘要对比信息

验证与测试计划(草案)

  • 基础验证:分区表创建是否成功、是否能够写入数据、是否能查询到分区信息。
  • 功能验证:
    • 日志写入时附带 analysis_summary 字段
    • API 能返回最新采集日志及分析摘要
  • 性能/压力测试:在高并发写入情况下分区表的锁争用情况、查询历史时的响应时间。
  • 回归测试:现有日志写入路径不受影响,现有看板字段仍可访问

后续工作与风险

  • 风险:分区设计对现有 ORM/DAO 层的影响,旧查询路径需兼容。
  • 后续:与前端看板字段对齐、以及归档/清理策略的落地实现。

草案作者CI 项目组

审核日期2026-05

看板草案设计摘要(日志看板)

  • 目标:展示最近采集日志、分析摘要,以及提供筛选入口,便于运维与分析人员快速定位问题。
  • 数据字段日志时间戳、机床ID、加工程序名、日志等级、日志摘要。以及可选的分析摘要文本。
  • 后端端点草案GET /api/logs/dashboard返回数据结构包含最近日志、等级分布、总条数和可展示的分析摘要。
  • 前端展示要点:顶部筛选区、摘要统计、最近日志表格、日志摘要截断预览。
  • 验证要点:前端路由可打开,后端接口能返回结构化数据,字段与前端模板对齐。