国际化与诊断模板
v1.1.0 引入的国际化与诊断模板功能
i18n — 国际化
Kafka Log Analyzer 内置英文和中文支持。所有用户可见字符串(CLI 消息、MCP 工具描述、报告标题、图表标签、错误消息和模板名称)均通过 t() 函数处理。
设置语言
优先级顺序:
LOCALE环境变量--locale/-lCLI 标志LC_ALL/LC_MESSAGES/LANG系统语言(包含zh→ 中文)- 默认:
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值:producer、consumer、broker、lag、error--timeline值:1m、5m、15m、1h、6h、1d--report值:markdown、json、slack、folded-markdown--priority值:P0、P1、P2、P3
折叠 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, lag | P0, P1 |
rebalance-storm | 重平衡风暴排查 | consumer | P0, P1, P2 |
producer-errors | 生产者错误分析 | producer, error | P0, P1 |
broker-health | Broker 健康检查 | broker | P0, 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 producerMCP 工具
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 模板将排名第一。