# Log Analyzer

> 【日志分析】对服务器日志进行结构化分析，提取异常模式、频率统计、趋势分析和根因推断。支持 Nginx、应用日志、系统日志等常见格式。 触发时机： - 用户提供日志内容要求分析 - remote-exec 获取日志后需要解读 - 排查线上问题时需要分析错误日志 纯 prompt 模板，不依赖外部工具。

- Skill: `afine907/log-analyzer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add afine907/log-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/afine907/log-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: afine907 (https://skillmd.com/u/afine907)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/afine907/log-analyzer

---


# Log Analyzer — 日志分析 Agent

对服务器日志进行结构化分析，提取异常模式、频率统计、趋势分析。


## Goal

对服务器日志进行结构化分析，提取异常模式、频率统计、趋势分析和根因推断。支持 Nginx、应用日志、系统日志等常见格式

## Trigger

- 用户提供日志内容要求分析
  - remote-exec 获取日志后需要解读
  - 排查线上问题时需要分析错误日志

## 工作流程

```
原始日志 → 格式识别 → 结构化解析 → 异常检测 → 趋势分析 → 输出报告
```

## Step 1: 识别日志格式

根据日志内容自动识别格式类型：

| 格式 | 特征 | 常见来源 |
|------|------|----------|
| **Nginx/Apache Access** | IP + 时间 + Method + Path + Status + BodyBytes + UserAgent | Web 服务器 |
| **Nginx Error** | 时间 + 级别 + PID + 消息 | Nginx |
| **JSON 结构化日志** | `{"time":..., "level":..., "msg":...}` | 现代应用（Go、Node.js、Python） |
| **系统日志 (syslog)** | 时间 + 主机 + 进程 + 消息 | Linux 系统 |
| **Java Stacktrace** | Exception 开头 + at ... 堆栈 | Java 应用 |
| **自定义应用日志** | 自定义格式，包含级别+时间戳+消息 | 各类应用 |

**如无法识别**：向用户询问日志来源和格式说明。

## Step 2: 结构化解析

对日志按行解析，提取关键字段：

```
# Nginx Access 示例
192.168.1.1 - - [10/May/2025:13:55:36 +0800] "GET /api/users HTTP/1.1" 200 1234 "-" "curl/7.68"

# 解析结果
{
  "ip": "192.168.1.1",
  "time": "2025-05-10T13:55:36+08:00",
  "method": "GET",
  "path": "/api/users",
  "status": 200,
  "bytes": 1234,
  "agent": "curl/7.68"
}
```

### 关注的关键指标

- **异常状态码**: 4xx（客户端错误）、5xx（服务端错误）
- **响应时间**: 慢请求识别（超过 1s、3s、5s 的阈值）
- **错误级别**: FATAL > ERROR > WARN 的分布
- **重复模式**: 同一错误反复出现
- **时间聚集**: 错误集中在特定时间窗口

## Step 3: 异常检测

扫描日志并标记异常条目：

### 异常等级定义

| 等级 | 含义 | 示例 |
|------|------|------|
| 🚨 **CRITICAL** | 严重影响可用性 | OOM、panic、连接池耗尽、5xx 暴增 |
| ⚠️ **WARNING** | 潜在风险 | 慢查询、重试次数多、4xx 高频 |
| ℹ️ **INFO** | 值得关注的正常信息 | 服务重启、配置变更、新版本上线 |

### 需要标记的异常模式

```
# 1. 错误突发 (Error Burst)
#    同一错误在短时间内多次出现
#    例：30 秒内 50 次 "connection refused"

# 2. 状态码异常分布
#    5xx 比例 > 1% 或 4xx 比例 > 5% 需要关注
#    特定接口 5xx 率突增

# 3. 性能退化
#    P99 响应时间超过基线 2 倍
#    慢请求（>3s）数量突然增加

# 4. 资源耗尽信号
#    "out of memory", "cannot allocate", "too many open files"
#    "connection pool exhausted", "disk full"

# 5. 级联失败
#    A 服务报错 → B 服务报错 → C 服务报错
#    表明故障在蔓延
```

## Step 4: 输出报告

按以下模板输出分析结果：

```markdown
## 📊 日志分析报告

### 概览
- **日志来源**: {Nginx Access / 应用日志 / 系统日志}
- **时间范围**: {开始时间} → {结束时间}
- **总行数**: {总数}
- **异常行数**: {异常数} ({比例}%)

### 状态码分布（HTTP 日志专用）
| 状态码 | 数量 | 占比 |
|--------|------|------|
| 2xx    | {n}  | {n%} |
| 3xx    | {n}  | {n%} |
| 4xx    | {n}  | {n%} |
| 5xx    | {n}  | {n%} |

### 🚨 Critical 级异常
| 时间 | 来源 | 内容 | 影响 |
|------|------|------|------|
| {time} | {source} | {message} | {impact} |

### ⚠️ Warning 级异常
| 时间 | 来源 | 内容 | 建议 |
|------|------|------|------|
| {time} | {source} | {message} | {suggestion} |

### 趋势分析

\`\`\`
错误趋势（按时间窗口）
{时间} → {数量} {趋势箭头} {对比上一窗口}
{时间} → {数量} {趋势箭头} {对比上一窗口}
\`\`\`

### 根因推断

{基于异常模式的分析结论}

### 建议措施

1. {具体建议}
2. {具体建议}
3. {具体建议}
```

## 快速使用

```
# 分析一段 Nginx 日志
分析这段日志：{paste logs}

# 配合 remote-exec：先拉日志，再分析
远程执行：tail -n 1000 /var/log/nginx/error.log
分析上面的输出

# 分析应用报错
看下这个错误日志，找出根因
```

## 参考资料

- 常见日志模式: [references/patterns.md](references/patterns.md)

