Skip to content

历史与趋势

持久化存储与历史趋势分析(v0.5.0+)

SQLite 持久化

所有分析结果自动持久化到本地 SQLite 数据库(better-sqlite3)。数据库在首次使用时懒加载,采用 WAL 模式以获得最佳读取性能。

数据库位置:由 SQLITE_PATH 环境变量控制(默认:./storage/kafka-analyzer.db

如果存储目录不可写或 better-sqlite3 加载失败,系统优雅降级——分析继续进行但不持久化。

存储的数据

说明
analysis_records每次分析运行的摘要统计
anomaly_details关联到分析记录的异常明细
lag_snapshots每次 get_lag 的结果快照
baselines自动(7 天滚动均值)和手动基线

事件驱动架构

持久化和基线更新通过内部 EventEmitter 与分析流水线解耦:

analyze_log 完成 → emit('analysis:completed')
    ├─→ 持久化监听器 → 写入 SQLite → emit('analysis:persisted')
    └─→ 基线监听器 → 更新自动基线(7 天均值)

get_lag 完成 → emit('lag:completed')
    └─→ 持久化监听器 → 写入 lag_snapshots

监听器错误隔离——失败的监听器只记日志,不会中断主分析流程。

异常倍数检测

分析检测到异常时,系统自动将当前值与存储的基线对比。如果值**≥ 基线 2 倍**,异常会收到倍数元数据标注:

⚠️ lag_spike [P0] consumer
   3 partitions with lag > 10000 detected
   🔺 比基线多 3.5 倍(基线: 2857, 当前: 10000, 来源: auto-7d)

这在返回结果前同步完成——无需额外工具调用。

MCP 工具

query_history

查询历史分析记录,支持过滤。

参数:

参数类型说明
fromstring起始时间 ISO 8601(默认:7 天前)
tostring截止时间 ISO 8601(默认:now)
sourcestring按来源过滤:paste / file / exporter / loki
clusterstring按集群过滤
limitnumber返回条数(默认:50,最大:200)

compare_trend

对比两个时间段的指标趋势。

参数:

参数类型必填说明
metricstringerror_rate / lag / anomaly_count / event_count
current_rangestring1h / 6h / 1d / 7d
compare_rangestringprevious / last_week / last_month(默认:previous
clusterstring集群名称

输出示例:

json
{
  "metric": "lag",
  "current": { "range": "2026-07-04 ~ 2026-07-05", "avg": 8500, "max": 15000 },
  "compare": { "range": "2026-07-03 ~ 2026-07-04", "avg": 3200, "max": 8000 },
  "change": { "avgMultiplier": 2.66, "maxMultiplier": 1.88, "trend": "up" },
  "summary": "平均Lag比对比时段2.66倍,峰值1.88倍,趋势上升"
}

set_baseline

手动设置指标基线值,覆盖自动基线。

参数:

参数类型必填说明
metric_keystringlag:cluster:group:topic
valuenumber基线值
metric_typestringlag / error_rate / anomaly_count

list_baselines

查看所有基线,支持按指标类型过滤。

参数:

参数类型必填说明
metric_typestringlag / error_rate / anomaly_count

cleanup_storage

清理过期持久化数据。

参数:

参数类型必填说明
retention_daysnumber保留天数(默认:30)
dry_runboolean只预览,不实际删除(默认:false)

基线

基线定义了指标的"正常值",用于倍数检测。

  • 自动基线:基于历史数据 7 天滚动均值计算,每次分析持久化后自动更新
  • 手动基线:通过 set_baseline 工具设置,覆盖同指标键的自动基线

当某指标没有基线时,倍数检测自动跳过。

数据保留

默认保留 30 天数据,超期自动清理。可配置:

配置项环境变量默认值说明
storageRetentionDaysSTORAGE_RETENTION_DAYS30保留天数
storageAutoCleanupSTORAGE_AUTO_CLEANUPtrue启用每日自动清理

手动基线永不自动删除。自动基线超过保留窗口未更新则被移除。

基于 MIT 许可发布