Skip to content

国际化与诊断模板

v1.1.0 引入的国际化与诊断模板功能


i18n — 国际化

Kafka Log Analyzer 内置英文和中文支持。所有用户可见字符串(CLI 消息、MCP 工具描述、报告标题、图表标签、错误消息和模板名称)均通过 t() 函数处理。

设置语言

优先级顺序:

  1. LOCALE 环境变量
  2. --locale / -l CLI 标志
  3. LC_ALL / LC_MESSAGES / LANG 系统语言(包含 zh → 中文)
  4. 默认:en

CLI 示例:

bash
# 使用中文
npx kafka-log-analyze analyze server.log --locale zh

# 或通过环境变量
LOCALE=zh npx kafka-log-analyze analyze server.log

# 短标志
npx kafka-log-analyze analyze server.log -l zh

架构

src/i18n/
├── index.ts    # t(), setLocale(), getLocale()
├── en.ts       # ~180 条英文键
└── zh.ts       # 中文翻译
  • t(key, params?) — 翻译键值,支持 {param} 占位符替换
  • setLocale(locale) — 设置活跃语言(启动时调用一次)
  • getLocale() — 获取当前语言
  • resetLocale() — 重置为检测到的默认值(用于测试)

不支持运行时热切换 — 语言在进程启动时锁定。


ASCII 时间线图表

分析器渲染 ASCII 堆叠柱状图展示时间线分布:

14:30 ████████████████████·····░░░░░░░░░░░░░░░ 102
14:35 ████████········░░░░░░░░░░░░░░░░░░░░░░░░  67
       █ 严重错误  · 警告  ░ 信息  |  总计: 169  错误: 7  警告: 35

推送通知迷你图

使用 Unicode 方块元素的单行迷你图,嵌入飞书和 Slack 推送消息:

📈 ▂▃▅█▇▅▃▂▁▂▃▅▆█▇▅▃▂

MCP 工具选项

analyze_log 工具接受 chart 布尔参数(默认 true)来控制报告中是否包含图表。


Shell 补全

生成覆盖所有命令、标志和枚举值的 Shell 补全脚本:

bash
# bash
npx kafka-log-analyze completion bash > /etc/bash_completion.d/kafka-log-analyze
source ~/.bashrc

# zsh
npx kafka-log-analyze completion zsh > "${fpath[1]}/_kafka-log-analyze"
autoload -U compinit && compinit

# fish
npx kafka-log-analyze completion fish > ~/.config/fish/completions/kafka-log-analyzer.fish

补全覆盖:

  • 所有命令和子命令
  • --focus 值:producerconsumerbrokerlagerror
  • --timeline 值:1m5m15m1h6h1d
  • --report 值:markdownjsonslackfolded-markdown
  • --priority 值:P0P1P2P3

折叠 Markdown 报告

新增 --report folded-markdown 格式生成可折叠报告:

markdown
# Kafka 日志分析报告

## 概要
- **事件总数**: 1024
- **发现异常**: 3

<details>
<summary>📊 按优先级(点击展开)</summary>

| 优先级 | 数量 | 描述 |
|--------|------|------|
| P0     |    2 | 严重 - 集群宕机、数据丢失风险 |
...

</details>

<details>
<summary>⚠️ 检测到的异常 (3)</summary>

#### 1. 消费积压激增 (P1)
...

</details>

适用于 GitHub Issue、Slack 代码片段及任何支持 <details> 的 Markdown 渲染器。


交互式 TUI 浏览器

使用 --interactive / -i 启动键盘驱动的终端界面:

bash
npx kafka-log-analyze analyze server.log --interactive

操作方式:

按键操作
/ 上下导航
Enter / 空格展开/折叠
e全部展开
c全部折叠
q退出

TUI 使用纯 readline 实现 — 无需 blessed 或 ink 依赖。


诊断模板

内置模板

ID名称关注领域优先级提示
lag-diagnosis消费积压诊断consumer, lagP0, P1
rebalance-storm重平衡风暴排查consumerP0, P1, P2
producer-errors生产者错误分析producer, errorP0, P1
broker-healthBroker 健康检查brokerP0, P1, P2
full-audit全面审计(全部)(全部)

CLI 使用

bash
# 列出可用模板
npx kafka-log-analyze templates

# 使用模板分析
npx kafka-log-analyze analyze server.log --template lag-diagnosis

# 模板 + 覆盖(CLI 标志优先)
npx kafka-log-analyze analyze server.log --template lag-diagnosis --focus producer

MCP 工具

diagnose — 运行诊断模板:

json
{
  "tool": "diagnose",
  "input": {
    "template_id": "lag-diagnosis",
    "source": "file",
    "path": "/var/log/kafka/server.log",
    "report": "folded-markdown"
  }
}

list_templates — 列出模板及智能排序:

json
{
  "tool": "list_templates",
  "input": {
    "cluster": "production"
  }
}

模板按指定集群的历史异常频率排序。无集群参数或无历史记录时,返回默认排序的全部模板。

智能模板推荐

recommendTemplates() 函数查询 SQLite 数据库中的近期异常模式,按模板目标异常类型的出现频率评分。例如,如果 lag_spike 异常在近期历史中占主导,lag-diagnosis 模板将排名第一。


相关文档

  • 命令参考 — 完整 CLI 命令参考
  • 配置 — 环境变量包括 LOCALE
  • API 参考 — MCP 工具 API 包括 diagnoselist_templates

基于 MIT 许可发布