feat: add service config templates and extraction script

Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
This commit is contained in:
反编译工作区
2026-05-01 19:38:01 +08:00
parent 3175b7074b
commit 8b15445328
2433 changed files with 8322164 additions and 1604 deletions
@@ -0,0 +1,117 @@
# 星中心日志分析
**Generated:** 2026-04-30
**Type:** Log collection workspace (not a code repo)
## OVERVIEW
Production log collection for Cloudwalk elevator access-control system (`elevator-app`) — a Java Spring Boot + Spring Cloud (Consul) microservice backed by MySQL (MyBatis + ShardingSphere), Redis, and Kafka. Logs captured from 3 servers on 2026-04-30.
## STRUCTURE
```
日志分析/
├── 10.0.22.207/ # Server 207, collected 17:11
│ └── 202604301711/
│ └── logs-207/
│ ├── elevator-app.log (116K lines, 16MB)
│ └── elevator-app-probe.log (15K lines, 3MB)
├── 10.0.22.208/ # Server 208, collected 17:12
│ └── 202604301712/
│ └── logs/
│ ├── elevator-app.log (198K lines, 31MB)
│ └── elevator-app-probe.log (14K lines, 2.9MB)
└── 10.0.22.209/ # Server 209, collected 17:13
└── 202604301713/
└── logs/
├── elevator-app.log (215K lines, 31MB)
└── elevator-app-probe.log (5.6K lines, 1.1MB)
```
**Naming convention**: `{IP}/{YYYYMMDDHHMM}/logs[-N]/` — IP-based server identification with collection timestamp. Server 207 uses `logs-207` subdirectory (non-standard naming, probable manual renaming).
## WHERE TO LOOK
| Task | Location | Notes |
|------|----------|-------|
| Application startup / bootstrap | `elevator-app.log` lines ~1-100 | Spring Boot startup, profile activation, bean registration |
| Face recognition events | `elevator-app.log` grep `PERSON_RECORD_UPLOAD` | Person entry/exit with face match scores |
| Door open events | `elevator-app.log` grep `OPENDOOR_RECORD_UPLOAD` | Door access records with face/token type |
| Database errors | `elevator-app.log` grep `ERROR` | ~4,200 total ERRORs across all servers |
| PERSON_LABEL_IDS truncation | `elevator-app.log` grep `Data too long for column` | ~2,200 occurrences — primary blocker |
| Service discovery / health | `elevator-app-probe.log` | Consul registration, config probes, ribbon status |
| Elevator dispatch failures | `elevator-app.log` grep `派梯记录推送失败` | Elevator record send failures |
## TECH STACK (inferred from logs)
| Component | Evidence |
|-----------|----------|
| Java / Spring Boot | `ElevatorApplication`, `AnnotationConfigEmbeddedWebApplicationContext` |
| Tomcat Embedded | `TomcatEmbeddedServletContainer: Tomcat started on port 16112` |
| Spring Cloud Consul | `ConsulServiceRegistry`, `spring.cloud.consul.host` |
| MySQL + MyBatis | `AcsRecogRecordMapper`, `it_acs_recog_record`, `SqlSessionTemplate` |
| ShardingSphere | `ShardingJDBC` references in log |
| Kafka | Kafka consumer/producer log entries |
| Redis | Dependency references in bean wiring logs |
| Spring Cloud Feign | `AcsFeignConfiguration`, Feign client beans |
## KEY ERROR PATTERNS
### PERSON_LABEL_IDS truncation (2,200+ occurrences)
```
MySQL Data truncation: Data too long for column 'PERSON_LABEL_IDS' at row 1
→ table: it_acs_recog_record
→ source: AcsRecogRecordDaoImpl.add() → AcsRecogRecordMapper.add
→ impact: recognition records with many label IDs fail to persist
→ suggestion: increase column size (VARCHAR → TEXT) or normalize into junction table
```
### Recognition record save failures
```
c.c.elevator.record.impl.AcsRecogRecordDaoImpl:40 - 保存识别记录失败
→ same root cause (PERSON_LABEL_IDS truncation)
```
### Elevator dispatch failures
```
cn.cloudwalk.elevator.task.ElevatorRecordSendTask:134 - 派梯记录推送失败
→ ~468 occurrences across all servers
→ "失败原因是:{}" — error message is empty, root cause masked
```
## EVENT TYPES OBSERVED
| Event Type | Handler | Description |
|------------|---------|-------------|
| `PERSON_RECORD_UPLOAD` | `PersonRecordEventHandler` | Face capture → recognition → person record |
| `OPENDOOR_RECORD_UPLOAD` | `OpenDoorRecordEventHandler` | Door access granted/denied record |
## SERVER-SPECIFIC NOTES
- **10.0.22.207** — appears to have restarted (2 Tomcat startups in log). Profile: `access-control`
- **10.0.22.208** — device: `1F高区闸机-右出-134-新`, threshold: 60.0
- **10.0.22.209** — device: `B1F监控中心`, threshold: 0.9 (much more permissive than 208)
## COMMANDS
```bash
# Error count per server
grep -c "ERROR" */20260430*/logs*/elevator-app.log
# Top error types across all servers
grep -h "ERROR" */20260430*/logs*/elevator-app.log | \
sed 's/\[.*\] \[.*\] ERROR //' | sort | uniq -c | sort -rn | head -20
# Extract all PERSON_LABEL_IDS failures
grep "Data too long for column 'PERSON_LABEL_IDS'" */20260430*/logs*/elevator-app.log
```
## NOTES
- All logs are from 2026-04-30, collected in ~1-hour windows per server
- `.DS_Store` files present in every directory — macOS artifacts, safe to ignore
- No code, configs, tests, or build scripts exist in this workspace — this is a data directory only
- Server 207 subdirectory named `logs-207` instead of `logs` (deviation from 208/209 pattern)