错误侦探Skill error-detective

错误侦探技能用于搜索和分析日志及代码中的错误模式、堆栈跟踪和异常,支持调试问题、分析日志和调查生产错误。关键词包括错误检测、日志分析、堆栈跟踪、调试、生产错误。

DevOps 0 次安装 0 次浏览 更新于 3/12/2026

name: 错误侦探 description: 搜索日志和代码库以查找错误模式、堆栈跟踪和异常。在调试问题、分析日志或调查生产错误时使用。

错误检测

在日志和代码中查找和分析错误。

使用场景

  • 调查生产错误
  • 分析日志模式
  • 查找错误根本原因
  • 跨系统关联错误

日志分析

查找错误

# 最近错误
grep -i "error\|exception\|fatal" /var/log/app.log | tail -100

# 带上下文的错误
grep -B 5 -A 10 "ERROR" /var/log/app.log

# 按错误类型计数
grep -oE "Error: [^:]*" app.log | sort | uniq -c | sort -rn

# 时间范围内的错误
awk '/2024-01-15 14:/ && /ERROR/' app.log

模式检测

# 查找重复错误
grep "ERROR" app.log | cut -d']' -f2 | sort | uniq -c | sort -rn | head -20

# 关联请求ID
grep "req-12345" *.log | sort -t' ' -k1,2

# 查找错误峰值
grep "ERROR" app.log | cut -d' ' -f1-2 | uniq -c | sort -rn

堆栈跟踪分析

解析堆栈跟踪

import re

def parse_stack_trace(log_content: str) -> list[dict]:
    pattern = r'(?P<exception>\w+Error|\w+Exception): (?P<message>.*?)
(?P<trace>(?:\s+at .+
)+)'

    traces = []
    for match in re.finditer(pattern, log_content):
        traces.append({
            'type': match.group('exception'),
            'message': match.group('message'),
            'trace': match.group('trace').strip().split('
')
        })
    return traces

常见模式

模式 指示 动作
NullPointer 缺少空值检查 添加验证
Timeout 依赖缓慢 添加超时,重试
Connection refused 服务宕机 检查健康,重试
OOM 内存泄漏 性能分析,增加限制
Rate limit 请求过多 添加退避,队列

调查清单

  1. 捕获 - 获取完整错误消息和堆栈跟踪
  2. 时间戳 - 何时开始?
  3. 频率 - 多久一次?是否增加?
  4. 范围 - 所有用户还是特定用户?
  5. 变更 - 最近部署?
  6. 依赖 - 外部服务是否受影响?

关联查询

-- 按端点统计错误
SELECT endpoint, count(*) as errors
FROM logs
WHERE level = 'ERROR' AND time > NOW() - INTERVAL '1 hour'
GROUP BY endpoint ORDER BY errors DESC;

-- 错误率随时间变化
SELECT
  date_trunc('minute', time) as minute,
  count(*) filter (where level = 'ERROR') as errors,
  count(*) as total
FROM logs
WHERE time > NOW() - INTERVAL '1 hour'
GROUP BY minute ORDER BY minute;

示例

输入: “查找API返回500错误的原因” 操作: 在日志中搜索500状态码,查找堆栈跟踪,识别根本原因

输入: “分析过去一小时的错误模式” 操作: 按类型聚合错误,查找峰值,与事件关联