diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..0c356d3 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "Bash(cp ~/.claude/skills/bms-log-test-query/SKILL.md bms-log-test-query/)", + "Bash(cp ~/.claude/skills/bms-log-prd-query/SKILL.md bms-log-prd-query/)", + "Bash(cp ~/.claude/skills/bms-log-test-query/SKILL.md ~/.cursor/skills/bms-log-test-query/)", + "Bash(cp ~/.claude/skills/bms-log-prd-query/SKILL.md ~/.cursor/skills/bms-log-prd-query/)" + ] + } +} diff --git a/bms-log-prd-query/SKILL.md b/bms-log-prd-query/SKILL.md index c43a815..afe7c34 100644 --- a/bms-log-prd-query/SKILL.md +++ b/bms-log-prd-query/SKILL.md @@ -42,19 +42,38 @@ Headers: `kbn-xsrf: true`, `Content-Type: application/json` ## Log Fields -| Field | Description | -|-------|-------------| -| `@timestamp` | ISO 8601 timestamp | -| `timestamp` | Original timestamp string | -| `message` | Log message (Chinese/English) | -| `level` | Log level: INFO, WARN, ERROR, etc. | -| `app_name` | Application name (e.g. `bms-web`) | -| `class` | Java class name | -| `thread` | Thread name | -| `traceId` | Distributed trace ID | -| `host_ip` | Host IP address | -| `log_origin` | Log origin identifier | -| `stack_trace` | Exception stack trace (empty if no error) | +| 字段 | 说明 | +|------|------| +| `@timestamp` | ES 时间戳 (ISO 8601) | +| `timestamp` | 原始时间字符串 | +| `message` | 日志正文 (中文/英文) | +| `level` | 日志级别 (INFO, WARN, ERROR) | +| `app_name` | 应用名 (如 bms-web) | +| `class` | Java 类名 | +| `thread` | 线程名 (如 `http-nio-8081-exec-59`) | +| `traceId` | SkyWalking 链路追踪 ID | +| `parentTraceId` | 父级追踪 ID | +| `trace_id` | 另一种追踪 ID 标识 | +| `stack_trace` | 异常堆栈 (无异常时为空) | +| `host_ip` | 主机 IP | +| `ip` | 请求 IP 地址 | +| `node_ip` | 节点 IP | +| `log_origin` | 日志来源标识 | + +## Troubleshooting Guide — 排查链路问题 + +排查业务链路问题时,结合以下三个核心维度: + +1. **message + 时间戳** — 定位具体操作和发生时间,快速缩小范围 +2. **traceId** — SkyWalking 分布式链路追踪 ID,可贯穿整个调用链(前端 → 网关 → 服务A → 服务B → DB) + - 大部分业务场景下 traceId 可完整贯穿 + - **例外**:xxljob 定时任务、dubbo 服务互相调用可能丢失 traceId +3. **thread** — 单机线程名,辅助定位具体执行线程 + - 测试环境通常单实例,thread 可直接定位 + - **生产环境注意分布式问题**:同一线程名可能出现在不同机器上,需结合 `host_ip` + `node_ip` 一起使用 + +**推荐排查流程:** +- 已知现象 → 用 message 关键词 + 时间范围找到第一条相关日志 → 提取 traceId → 用 traceId 查出完整链路 → 结合 thread + host_ip 定位具体节点 ## Query Patterns diff --git a/bms-log-test-query/SKILL.md b/bms-log-test-query/SKILL.md index cd1f586..b4b65c3 100644 --- a/bms-log-test-query/SKILL.md +++ b/bms-log-test-query/SKILL.md @@ -94,14 +94,38 @@ GET /api/console/proxy?path=/bms-test-/_count&method=GET GET /api/console/proxy?path=/bms-test-/_mapping&method=GET ``` -## Common Fields +## Log Fields -- `@timestamp` — log timestamp -- `message` — main log message (Chinese/English) -- `original_message` — original unformatted message -- `log.level` — INFO, WARN, ERROR, etc. -- `error.message` — error details -- `host.name` — host/container name +| 字段 | 说明 | +|------|------| +| `@timestamp` | ES 时间戳 (ISO 8601) | +| `timestamp` | 原始时间字符串 | +| `message` | 日志正文 (中文/英文) | +| `original_message` | 原始未格式化消息 | +| `level` | 日志级别 (INFO, WARN, ERROR) | +| `app_name` | 应用名 (如 bms-web) | +| `class` | Java 类名 | +| `thread` | 线程名 (如 `http-nio-8081-exec-59`) | +| `traceId` | SkyWalking 链路追踪 ID | +| `parentTraceId` | 父级追踪 ID | +| `stack_trace` | 异常堆栈 (无异常时为空) | +| `host_ip` | 主机 IP | +| `log_origin` | 日志来源标识 | + +## Troubleshooting Guide — 排查链路问题 + +排查业务链路问题时,结合以下三个核心维度: + +1. **message + 时间戳** — 定位具体操作和发生时间,快速缩小范围 +2. **traceId** — SkyWalking 分布式链路追踪 ID,可贯穿整个调用链(前端 → 网关 → 服务A → 服务B → DB) + - 大部分业务场景下 traceId 可完整贯穿 + - **例外**:xxljob 定时任务、dubbo 服务互相调用可能丢失 traceId +3. **thread** — 单机线程名,辅助定位具体执行线程 + - 测试环境通常单实例,thread 可直接定位 + - **生产环境注意分布式问题**:同一线程名可能出现在不同机器上,需结合 `host_ip` 一起使用 + +**推荐排查流程:** +- 已知现象 → 用 message 关键词 + 时间范围找到第一条相关日志 → 提取 traceId → 用 traceId 查出完整链路 → 结合 thread + host_ip 定位具体节点 ## Rules