故障排除
使用 kafka-log-analyzer 时的常见错误及解决方案。
错误码参考
| 错误码 | 描述 | 常见原因 |
|---|---|---|
INVALID_INPUT | 缺少或无效的输入参数 | 必填字段未提供 |
FILE_NOT_FOUND | 日志文件不存在 | 文件路径错误或权限不足 |
PROMETHEUS_UNAVAILABLE | 无法连接 Prometheus | URL 不正确或服务未运行 |
LOKI_UNAVAILABLE | 无法连接 Loki | URL 不正确或服务未运行 |
HOOK_ERROR | Hook 服务器操作失败 | 端口冲突或 Webhook 配置错误 |
PUSH_ERROR | 推送通知失败 | Webhook URL 无效或目标不可达 |
JIRA_ERROR | JIRA 集成失败 | JIRA URL/Token 不正确 |
DATABASE_ERROR | SQLite 操作失败 | 存储目录不可写 |
Python 依赖问题
kafka-log-analyzer 需要 Python 3.8+ 来执行日志分析。
找不到 Python
Error: Python script failed: python3: command not found解决方案:
安装 Python 3.8+:
bash# macOS brew install python3 # Ubuntu/Debian sudo apt install python3 # RHEL/CentOS sudo yum install python3或设置
pythonLocation环境变量指向自定义安装路径:bashexport pythonLocation=/path/to/python/installation
Python 版本不正确
Error: Python script failed: SyntaxError: invalid syntax解决方案: 确认安装了 Python 3.8+:
bash
python3 --version
# 应显示 3.8.x 或更高版本连接故障排除
Prometheus 连接失败
WARN: Prometheus unavailable: fetch failed检查清单:
确认 Prometheus 正在运行:
bashcurl http://localhost:9090/-/healthy检查
PROMETHEUS_URL环境变量:bashecho $PROMETHEUS_URL # 应为 http://prometheus-server:9090 格式确保分析器主机到 Prometheus 的网络连通性。
Loki 连接失败
WARN: Loki unavailable: Invalid URL检查清单:
确认 Loki 正在运行:
bashcurl http://localhost:3100/ready检查
LOKI_URL环境变量:bashecho $LOKI_URL # 应为 http://loki-server:3100 格式
Webhook 推送失败
Error: Webhook URL validation failed: URL must start with https://或:
Error: Webhook URL validation failed: URL resolves to private IP range检查清单:
- Webhook URL 必须使用
https://(不支持http://)。 - URL 不能解析到私有 IP 地址范围(127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)。
- 验证
FEISHU_WEBHOOK_URL或SLACK_WEBHOOK_URL环境变量。
文件分析问题
文件未找到
Error: File not found: /path/to/server.log解决方案:
确认文件存在:
bashls -la /path/to/server.log使用绝对路径避免歧义。
确保路径不包含
../(路径遍历已被安全策略阻止)。
分析结果为空
如果 analyze_log 返回零个事件:
- 检查日志格式是否匹配预期模式(文本或 JSON Kafka 日志)。
- 验证日志文件包含 Kafka 相关条目。
- 使用
--debug标志获取详细解析信息:bashnpx kafka-log-analyze analyze server.log --debug
路径遍历错误
Error: Invalid path: path traversal detected解决方案: 使用不含 ../ 序列的直接路径。分析器出于安全原因阻止路径遍历。
存储问题
SQLite 数据库错误
Error: DATABASE_ERROR: unable to open database file检查清单:
检查
SQLITE_PATH环境变量:bashecho $SQLITE_PATH # 默认: ./storage/kafka-analyzer.db确保存储目录可写:
bashmkdir -p ./storage chmod 755 ./storage如果不需要持久化,分析器可以在无存储模式下继续工作。
Hook 服务器问题
端口已被占用
Error: HOOK_ERROR: listen EADDRINUSE: address already in use :::3000解决方案: 使用其他端口:
bash
npx kafka-log-analyze hooks --port 3001或设置 PAGERDUTY_WEBHOOK_PORT 环境变量。
Hook 未触发分析
确认 Hook 服务器正在运行:
bashcurl http://localhost:3000/hooks/health检查 Webhook 负载是否匹配预期格式(Grafana 统一告警或 PagerDuty Events API v2)。
检查去重设置 — TTL 窗口内的告警会被抑制:
HOOK_DEDUP_WINDOW_MS=30000 # 默认 30 秒