๐ Logtide 0.5.0: Observability๋ฅผ ๋ ๊ฐ๋จํ๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค๊ธฐ
Source: Dev.to
์์ ๋งํฌ์ ์๋ ์ ์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํด ์ฃผ์๋ฉด, ํด๋น ๋ด์ฉ์ ํ๊ตญ์ด๋ก ๋ฒ์ญํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฝ๋ ๋ธ๋ก, URL ๋ฐ ๊ธฐ์ ์ฉ์ด๋ ๊ทธ๋๋ก ์ ์งํ๊ณ , ๋๋จธ์ง ๋ด์ฉ๋ง ๋ฒ์ญํด ๋๋ฆฝ๋๋ค. ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์
Logtideโฏ0.5.0์ ๋ก๊ทธ ๋ถ์์ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ๋ง๋ค๋ฉด์ ๋ฐฐํฌ๋ฅผ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ ์งํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด์ Redis์ ์ ์ฒด ๊ธฐ๋ฅ์ด๋ ์ต์ํ์ PostgreSQLโ์ ์ฉ ์ค์ ์ค์์ ์ ํํ ์ ์์ต๋๋ค.
๋ณด๊ธฐ
ํ ์ด๋ธ โ ํฐ๋ฏธ๋ ์ ํ
๊ฒ์ ํ์ด์ง์์ Table๊ณผ Terminal ๋ณด๊ธฐ ์ฌ์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ํฐ๋ฏธ๋ ๋ชจ๋๋ ๋ก๊ทธ๋ฅผ ๊ณ ์ ์ ์ธ ๊ณ ์ ํญ ์คํ์ผ๋ก ํ์ํ๋ฉฐ, ๋ก๊ทธ ๋ ๋ฒจ์ ๋ฐ๋ผ ANSIโ์คํ์ผ ์์ ์ฝ๋ฉ์ ์ ์ฉํฉ๋๋ค:
[2025-01-31T14:23:45.123Z] [ERROR] [api-gateway] Database connection timeout
[2025-01-31T14:23:46.456Z] [WARN] [auth-service] Rate limit approaching threshold
[2025-01-31T14:23:47.789Z] [INFO] [web-server] Request completed in 45ms
์ด ์ค์ ์ ์ธ์ ๊ฐ์ ์ง์๋๋ฉฐ Live Tail๊ณผ ์ํํ๊ฒ ์๋ํฉ๋๋ค.
ํ์ง ํฉ
๋ณด์ ์๋ฆผ์ ์ด์ Sigma ๊ท์น์ ๋ํ ๊น์ ์ง์์ด ํ์ํ์ง ์์ต๋๋ค. ๊ฐค๋ฌ๋ฆฌ๋ฅผ ํ์ํ๊ณ ํฉ์ ์ ํํ์ธ์(์: ์น ๊ณต๊ฒฉ, ๋ฌด์ฐจ๋ณ ๋์
์๋, ์์ฌ์ค๋ฌ์ด ํ๋ ํจํด ๋ฑ) ๊ทธ๋ฆฌ๊ณ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ํ์ฑํํฉ๋๋ค. ๊ฐ ํฉ์ logsource.product: any๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฒ์ํ ํธํ์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ฆ๋ Sigma ๊ท์น์ ํฌํจํฉ๋๋ค.
๋ชจ๋ ๊ท์น์ ์์ ํ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ์ด๊ธฐ ๊ตฌ์ฑ๋ณด๋ค ๋ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
์๋ ์๊ด๊ด๊ณ
Logtide๋ ์ด์ ๋ก๊ทธ ๋ฉํ๋ฐ์ดํฐ์์ request_id, trace_id, user_id์ ๊ฐ์ ์๋ณ์ ๋๋ ์ฌ์ฉ์ ์ ์ ์๊ด ํ๋๋ฅผ ์ถ์ถํฉ๋๋ค. ์๋ณ์๋ฅผ ํด๋ฆญํ๋ฉด ๋ชจ๋ ์๋น์ค์ ๊ฑธ์น ๊ด๋ จ ์ด๋ฒคํธ๊ฐ ์ฆ์ ํ์๋ฉ๋๋คโ์ ์ฉ ์ถ์ ์ธํ๋ผ๊ฐ ํ์ ์๋ ๋ถ์ฐ ์ถ์ .
์๋ฆผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
์๋ฆผ ๊ท์น์ ํ์ฑํํ๊ธฐ ์ ์, ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด ์กฐ๊ฑด์ ํ ์คํธํ์ญ์์ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํตํด ์ด๋ค ๋ก๊ทธ๊ฐ ์ค์ ๋ก ์๋ฆผ์ ํธ๋ฆฌ๊ฑฐํ๋์ง ์ ํํ ํ์ธํ ์ ์์ด ์๊ณ๊ฐ์ ๊ฒ์ฆํ๊ณ ์คํ์ง๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
Redis ์ ํ ์ฌํญ
Redis๋ ์ด์ ์์ ํ ์ ํ ์ฌํญ์ด ๋์์ต๋๋ค. REDIS_URL์ด ์ ๊ณต๋์ง ์์ผ๋ฉด Logtide๋ PostgreSQL ๊ธฐ๋ฐ ๋์ฒด ์ต์
์ ์ฌ์ฉํฉ๋๋ค:
| ๊ธฐ๋ฅ | Redis ๊ตฌํ | PostgreSQL ๋์ฒด |
|---|---|---|
| Jobs | BullMQ | graphile-worker |
| Live Tail | Redis pub/sub | PostgreSQL LISTEN/NOTIFY |
| Rate limiting | Redisโbacked | Inโmemory |
| Caching | Redis cache | Disabled (queries hit DB directly) |
์๋ก์ด docker-compose.simple.yml์ PostgreSQL๊ณผ Logtide๋ง ๋ฐฐํฌํฉ๋๋คโ๊ฐ๋ฐ, ํ
์คํธ, ํน์ ๊ท๋ชจ๊ฐ ์์ ํ๋ก๋์
์์
์ ์ด์์ ์
๋๋ค. ๊ธฐ์กด Redis ๊ธฐ๋ฐ ๋ฐฐํฌ๋ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๋ณด์ ๊ฐํ ๋ฐ ๋ฒ๊ทธ ์์
๋ณด์ ๊ฐํ
- ์ธ์ ์ ๋ฐฉ์ง๋ฅผ ์ํ ์ ๊ท์ ๊ฒ์ฆ ๊ฐํ
- ์ถ๊ฐ ๋ผ์ฐํธ์ ๋ํ ์๋ ์ ํ ํ๋
- ์๋ฆผ ํผ๋ธ๋ฆฌ์ ์ SQLโ์ธ์ ์ ์ทจ์ฝ์ ์์ (์ด์ ์ ์ ํ ํ๋ผ๋ฏธํฐํ๋ ์ฟผ๋ฆฌ ์ฌ์ฉ)
๋ฒ๊ทธ ์์
- URL ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ๋ซ์ ํ ๋ก๊ทธ ์ปจํ ์คํธ ๋ชจ๋ฌ์ด ๋ค์ ์ด๋ฆฌ์ง ์์
- ๋ผ์ด๋ธโํ ์ผ ํธ๋ค๋ฌ์์ WebSocket ๋ฉ๋ชจ๋ฆฌ ๋์ ์์
- ์์ธ ์์ธ ์ ๋ณด๊ฐ ๋ฉํ๋ฐ์ดํฐ ํ๋์์ ์ค๋ฅ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ถ์ถํ๋๋ก ์์
UX ๊ฐ์
- ์์ธ ์คํ ํธ๋ ์ด์ค์ ์ปจํ
์คํธ ํ๋(
env,service,version,hostname) ํฌํจ - ์คํ ํธ๋ ์ด์ค ๋ณต์ฌ ๋ฒํผ
- ์ค๋ฅ ๋ฉํ๋ฐ์ดํฐ์ ํฌ๋งท ๊ฐ์
์ ๊ทธ๋ ์ด๋ ์๋ด
Redis ์ฌ์ฉ ํ์ค ์ ๊ทธ๋ ์ด๋
docker compose pull
docker compose up -d
Redis ์์ด ๋ฐฐํฌ ์ ํ
docker compose -f docker-compose.simple.yml pull
docker compose -f docker-compose.simple.yml up -d
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ์ค๋จ๋๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ํ์ง ์์ต๋๋ค.
ํฅํ ๊ธฐ๋ฅ
- Rateโofโchange alerts: ์ ์ ์๊ณ๊ฐ์ด ์๋๋ผ ์ด์ ์งํ์ ๋ฐ๋ผ ํธ๋ฆฌ๊ฑฐ๋๋ ํต๊ณ์ ๊ธฐ์ค์
- Advanced correlation: ์ ์ฒด ์คํ์ ๊ฑธ์น ์์ฒญ ํ๋ฆ์ ์๊ฐํํ๋ ๋ค์ค ํ ์ด๋ฒคํธ ๊ทธ๋ํ
- Enhanced PII masking: GDPRโ์ค์ ์๋ ๋ฏผ๊ฐ ๋ฐ์ดํฐ ์ญ์
Logtide ์ฌ์ฉํด ๋ณด๊ธฐ
- ํด๋ผ์ฐ๋:
- ์ ํโํธ์คํ :
- ๋ฌธ์:
์ ์ฒด ๋ณ๊ฒฝ ๋ก๊ทธ: v0.4.2โฆv0.5.0