Observability - 100-hours-a-week/KTB4-10th-Cloud GitHub Wiki
- E2E / ๋ถํํ ์คํธ ์งํ ์ Observability ํ๊ฒฝ ๊ตฌ์ฑ ํ์
- ํ
์คํธ ๊ฒฐ๊ณผ๋ง์ผ๋ก๋ ์ฅ์ ๋ฐ ์ฑ๋ฅ ์ ํ์ ์์ธ ํ์ธ์ด ์ด๋ ค์
- E2E
- ์์ฒญ ์คํจ ์ ์ด๋ ๊ตฌ๊ฐ์์ ์คํจํ๋์ง ํ์ธ ํ์
- ๋ถํํ
์คํธ
- P95 ์ฆ๊ฐ, Error ์ฆ๊ฐ ์ ์ด๋ค ์์์ ๋ณ๋ชฉ์ผ๋ก ๋ฐ์ํ๋์ง ํ์ธ ํ์
- E2E
- Metric / Log๋ฅผ ์์งํ์ฌ ์๋น์ค ๋ด๋ถ ์ํ ํ์ธ
- E2E์ ๋ถํํ ์คํธ์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ
### **์งํ ์์**
1. Observability ๊ตฌ์ฑ
2. E2E ํ
์คํธ
3. Fake LLM ๊ตฌ์ฑ
4. ๋ถํํ
์คํธ
5. ๋ณ๋ชฉ ๋ถ์
6. ๊ฐ์
7. ์ฌํ
์คํธ
- Metric
- ์์คํ ์ ์ํ ๋ฐ ๋ณํ ํ์ธ
- CPU / Memory
- JVM
- HTTP
- DB Connection
- AI ์ฒ๋ฆฌ์๊ฐ ๋ฑ
- Log
- ์ค์ ์ค๋ฅ ๋ด์ฉ ํ์ธ
- Exception
- Timeout
- Connection Error ๋ฑ
- AWS Resource Metric
- AWS Resource ์์ฒด์ ์ํ ํ์ธ
| ๋์ | ๋๊ตฌ | ์ญํ |
|---|---|---|
| Application / System Metric | Prometheus | Backend / AI / DB ์ํ ํ์ธ |
| Application Log | CloudWatch Logs | Backend / AI Error ํ์ธ |
| AWS Resource Metric | CloudWatch Metrics | EC2 / CloudFront ์ํ ํ์ธ |
- Prometheus
- Application / System Metric ์์ง ๋ฐ ์กฐํ
- CloudWatch Logs
- Application Log ์์ง ๋ฐ ์กฐํ
- CloudWatch Metrics
- AWS Resource Metric ํ์ธ
- ํ์ฌ ๋ชฉ์ ์ ์ง์์ ์ธ Dashboard ์ด์๋ณด๋ค ํ ์คํธ ์ค ํน์ ์๊ฐ๋์ Metric ํ์ธ ๋ฐ ๋ณ๋ชฉ ๋ถ์
- V1์์๋ ๋น ๋ฅธ ๊ตฌ์ถ ๋ฐ ์ด์ ๋จ์ํ ์ฐ์
- Backend / AI Server / DB์ Metric์ ํ ๊ณณ์์ ์์ง ๊ฐ๋ฅ
- ํ ์์ฒญ์ด ์ฌ๋ฌ ์์คํ ์ ๊ฑฐ์น๋ ์ฐ๋ฆฌ ์๋น์ค์ ์ด๋ ๊ตฌ๊ฐ์ด ๋ณ๋ชฉ์ธ์ง ๋น๊ตํ๊ธฐ ์ฌ์์ง
- ์์ฒด Web UI ์ ๊ณต
- ๋ฐ๋ผ์ V1์์๋ ๋ณ๋์ Grafana ํ๊ฒฝ์ ๊ตฌ์ฑํ์ง ์๊ณ Prometheus๋ฅผ ์ฌ์ฉ
- ์ถํ ์ง์์ ์ธ Metric ๋ชจ๋ํฐ๋ง ๋ฐ ํตํฉ Dashboard ํ์์ฑ์ด ์ปค์ง ๊ฒฝ์ฐ Grafana ๋์ ๊ณ ๋ ค
- ํ์ฌ AWS ํ๊ฒฝ์์ ์๋น์ค ์ด์
- ๋ณ๋์ Logging Stack ๊ตฌ์ถ ์ ์ถ๊ฐ์ ์ธ ๊ตฌ์ถ ๋ฐ ์ด์ ํ์
- CloudWatch Logs๋ฅผ ์ด์ฉํ์ฌ Backend / AI Server์ Log ํ์ธ ๊ฐ๋ฅ
โ ๊ธฐ์กด์ ํ๊ฒฝ ํ์ฉํ๋ฉฐ ๊ตฌ์ถ ๋ฒ์๋ฅผ ์ค์ผ ์ ์๊ธฐ์ ํ ์ํฉ๊ณผ ์ ๋ง๋๋ค ํ๋จ
- V1์์๋ ๋ณ๋์ PLG Stack์ ๊ตฌ์ฑํ์ง ์๊ณ CloudWatch Logs ์ฌ์ฉ
PLG Stack ?
- Promtail
- Log ์์ง
- Loki
- Log ์ ์ฅ ๋ฐ ์กฐํ
- Grafana
- ์๊ฐํ
โ ํ์ฌ V1์์๋ ํด๋น ํ๊ฒฝ์ ๋ณ๋๋ก ์ด์ํ ํ์์ฑ์ด ๋ฎ๋ค๊ณ ํ๋จ
โ ์์ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ด ๋ชฉํ๊ฐ ์๋๋ผ ๋ฌธ์ ๋ฐ์ ์ง์ ๊ณผ ์์ธ์ ์ฐพ๋๊ฒ์ด ๋ชฉํ์ด๊ธฐ์
- EC2 / CloudFront ๋ฑ AWS Resource ์์ฒด์ ์ํ ํ์ธ
- AWS์์ ๊ธฐ๋ณธ ์ ๊ณต๋๋ CloudWatch Metrics ํ์ฉ
- ๋ณ๋์ Metric ์์ง ํ๊ฒฝ์ ์ถ๊ฐํ์ง ์๊ณ ๊ธฐ์กด AWS ํ๊ฒฝ ํ์ฉ
- Application / System Metric ํ์ธ โ ์ด๋ ์์คํ ์์ ์ด์์ด ๋ฐ์ํ๋์ง ํ์ธ
- Prometheus โ BE, AI server, MySQL
- ์ค์ Exception / Timeout ๋ฑ์ ์ค๋ฅ ํ์ธ โ Metric ์ด์ ๋ฐ์ ์ ๋์ผ ์๊ฐ๋์ Log ํ์ธ
- CloudWatch Logs โ BE, AI Server
- AWS Resource ์ํ ํ์ธ
- CloudWatch Metrics โ EC2, CloudFront
-
Backend๋ ๋ชจ๋ ์ผ๋ฐ API ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๊ฐ์ด๋๋ถ ์์ฑ์์๋ AI Server์ DB ์ฌ์ด์ ์ค์ฌ ์ญํ ์ ํจ.
โ ๋ฐ๋ผ์ Backend์ ์ํ๊ฐ ๋๋น ์ง๋ฉด ๋ค ๊ฐ์ง SLI ๋ชจ๋์ ์ํฅ์ ์ค ์ ์์.
-
Spring Boot์ JVM, HTTP, HikariCP ๋ฑ์ Application Metric์ Micrometer๋ก ์์งํ๊ณ , Actuator์
/actuator/prometheusEndpoint๋ฅผ ํตํด Prometheus๊ฐ ์์งํ ์ ์๋๋ก ์ ๊ณต
- System
- โ CPU, Memory, Thread
- EC2/Backend ์์ฒด์ ์ฒ๋ฆฌ ์์์ด ํ๊ณ์ ๋๋ฌํ๋์ง ํ์ธ
-
JVM
- โ Heap, Non-Heap ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, GC ํ์, Thread(JVM ๋ด๋ถ ์ค๋ ๋)
-
HTTP
- Request Count, Request Duration, Status Code, Error
-
HikariCP(ํ์นด๋ฆฌ ์ปค๋ฅ์
ํ)
-
๋ฐฑ์๋์์ mySQL์ ์ ๊ทผํ ๋ ์ปค๋ฅ์ ํ์ ์ฌ์ฉํจ
-
๋ถํ๊ฐ ์ฆ๊ฐํ๋ฉด ๋์์ DB์ปค๋ฅ์ ์๊ตฌํ๋ ์์ฒญ๋ ์ฆ๊ฐ
-
๋ถํ ์ฆ๊ฐ ์ API Latency์ ํจ๊ป HikariCP / JVM / System Metric ํ์ธ
- API P95 ์ฆ๊ฐ
- Hikari Active๊ฐ Max์ ๊ทผ์
- Hikari Pending ์ฆ๊ฐ
- ๋์ผ ์๊ฐ๋ DB Connection ์ฆ๊ฐ
โ Connection Pool ๋๋ DB ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ณ๋ชฉ ํ๋ณด๋ก ํ์ธ
(DB์ฐ๊ฒฐ์ ๋ง๋ค๊ณ ๋๋ ๋น์ฉ ๋ฐ์ ์ค์ด๊ธฐ ์ํด ์ปค๋ฅ์ ์ ๋ง๋ค์ด๋๊ณ ํ์ํ ๋ ์ฐ๋๊ฒ CP)
-
- AI Server๋ ์ผ๋ฐ API๋ณด๋ค ํนํ ๊ฐ์ด๋๋ถ ์์ฑ ์ฑ๊ณต๋ฅ ๊ณผ ์์ฑ์๊ฐ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋จ.
- ๊ฐ์ด๋๋ถ ์์ฑ์ด ๋๋ ค์ก๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด LLM์ด ๋๋ฆฐ ๊ฒ์ ์๋ (BE๊ฐ ๋ฌธ์ ์ผ ์๋)
-
System
- โ CPU, Memory, Thread
- EC2/Backend ์์ฒด์ ์ฒ๋ฆฌ ์์์ด ํ๊ณ์ ๋๋ฌํ๋์ง ํ์ธ
-
HTTP
- Request Count, Request Duration, Active Request(๋์ํ์ฑ), Error
- duration : ์์ฑ์๊ฐ / Error : ์์ฑ ์ฑ๊ณต๋ฅ ๊ณผ ์ฐ๊ด
- duration์ ์ ์ฒด ์์ฑ์๊ฐ์ ์ฒดํฌํ๋ฏ๋ก ์ธ๋ถํ ํด์ผํจ( Req, llm call, post process)
-
Backend Metric๊ณผ ํจ๊ป ํ์ธ
- API P95 ์ฆ๊ฐ
- Hikari Active Max ๋๋ฌ
- Hikari Pending ์ฆ๊ฐ
- DB Connection ์ฆ๊ฐ
- Query ์ฒ๋ฆฌ ์ง์ฐ
- latency๊ฐ DB๋๋ฌธ์ธ์ง ํ์ธํ ์ ์์ด์ผ ํจ
- Connection / Active Connection
- Query์ฒ๋ฆฌ๋, ์ฒ๋ฆฌ ์ํ
- DB์ปจํ ์ด๋ ๋ฆฌ์์ค
-
Prometheus๊ฐ ์ด๋๊ฐ ์ด์ํ๊ฐ ๋ฅผ ์ฐพ๋ ์ญํ
โ CloudWatch Logs๋ ๊ทธ๋์ ์ค์ ๋ก ๋ฌด์จ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๊ฐ ๋ฅผ ํ์ธํ๋ ์ญํ
ex)
- ๊ฐ์ด๋๋ถ ์์ฑ ์ฑ๊ณต๋ฅ ๊ฐ์
- AI Error Count ์ฆ๊ฐ (prometheus)
- LLM Timeout(CloudWatch Logs)