Files

160 lines
4.8 KiB
Plaintext
Raw Permalink Normal View History

$ uv run tools/flow.py push answers/77-lab03-challenge2-slo-alert.json
✔ pushed '77 SLO alert (answer)' (id w46a402ba838f33c)
POST http://localhost:5678/webhook/my-slo-alert
$ uv run tools/flow.py test cases/lab03-challenge2.json -v
✔ before: POST http://localhost:8800/alerts-clear · HTTP 200 · 0.0s · {"cleared": 0}
→ request POST http://localhost:8800/alerts-clear
{}
← response HTTP 200
{
"cleared": 0
}
POST http://localhost:5678/webhook/my-slo-alert · 6 case(s) × 1
✔ 둘째 주 · SLO 못 지킴 → 알림 · 1.0s
→ request POST /webhook/my-slo-alert
{
"from": "2026-10-26",
"to": "2026-10-30"
}
← response HTTP 200
{
"ok": false,
"breaches": [
"error_rate",
"unanswered_rate"
],
"alert": "sent",
"message": "SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476 > 0.02",
"total": 357
}
✔ 알림 확인 (high · slo) · 0.0s
→ request POST http://localhost:8800/alerts/latest
{}
← response HTTP 200
{
"workflow": "slo",
"severity": "high",
"reason": "slo",
"breaches": [
"error_rate",
"unanswered_rate"
],
"message": "SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476 > 0.02",
"at": 1793400787.7696092
}
✔ 10분 안에 다시 확인 → 보내지 않음 · 0.3s
→ request POST /webhook/my-slo-alert
{
"from": "2026-10-26",
"to": "2026-10-30"
}
← response HTTP 200
{
"ok": false,
"breaches": [
"error_rate",
"unanswered_rate"
],
"alert": "suppressed",
"message": "SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476 > 0.02",
"total": 357
}
✔ slo 알림은 1개 · 0.0s
→ request POST http://localhost:8800/alerts/list
{
"workflow": "slo"
}
← response HTTP 200
{
"count": 1,
"alerts": [
{
"workflow": "slo",
"severity": "high",
"reason": "slo",
"breaches": [
"error_rate",
"unanswered_rate"
],
"message": "SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476 > 0.02",
"at": 1793400787.7696092
}
]
}
✔ 기준 안이면 알림 없음 · 0.1s
→ request POST /webhook/my-slo-alert
{
"from": "2026-10-19",
"to": "2026-10-23",
"slo": {
"unanswered_rate": 0.06
}
}
← response HTTP 200
{
"ok": true,
"breaches": [],
"alert": "none",
"message": "",
"total": 309
}
✔ 그래도 알림은 1개 · 0.0s
→ request POST http://localhost:8800/alerts/list
{
"workflow": "slo"
}
← response HTTP 200
{
"count": 1,
"alerts": [
{
"workflow": "slo",
"severity": "high",
"reason": "slo",
"breaches": [
"error_rate",
"unanswered_rate"
],
"message": "SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476 > 0.02",
"at": 1793400787.7696092
}
]
}
Passed 6/6
report: runs/lab03-challenge2-20261031-075308.json
$ uv run tools/flow.py test cases/lab03-slo.json
POST http://localhost:5678/webhook/my-log-report · 4 case(s) × 1
✔ 둘째 주 · SLO 못 지킴 · 0.1s · 304 calls · $0.039810
✔ 첫 주 · 답 못 함만 · 0.1s · 292 calls · $0.038550
✔ 기준을 바꾸면 · 첫 주 · 0.1s · 292 calls · $0.038550
✔ 고친 뒤 · 오류 · 답 못 함 기준은 지킴 · 0.1s · 10 calls · $0.000000
Passed 4/4
report: runs/lab03-slo-20261031-075308.json
$ uv run tools/flow.py ops
fault switch: all ok
live run logs: 30 (tag before 10 · tag after 10 · tag normal 10)
added FAQ: 1 (FAQ-007)
created tickets: 0
DLQ: 0 (parked 0)
alerts: 1
[high] slo · slo · - · SLO breach: error_rate 0.0588 > 0.01, unanswered_rate 0.0476
$ uv run tools/flow.py ops --reset
✔ live run logs, added FAQ, created tickets, DLQ and alerts emptied, fault switch all ok
$ uv run tools/flow.py doctor
! n8n install folder /Users/mcchae/day65-n8n
→ day 65 SETUP-N8N 5단계 (get.n8n.io 설치). 다른 곳에 설치했다면 Last3Mon/65/n8n/.env 에 N8N_HOME=<폴더>
✔ n8n container day65-n8n-n8n-1
✔ n8n http://localhost:5678
✔ data API http://localhost:8800
✔ dead letter queue /dlq · alerts · fault switch dlq (day 76 data API)
✔ run logs /logs (666 seeded runs) · FAQ additions /faq-extra (day 77 data API)
✔ n8n → http://data-api:8800
✔ credential 'OpenAI (.env)' (openAiCourse0001)
✔ node catalog (for check)
✔ CLI coding agent: codex, claude, agy
ready