Ажиглалт ба аудит¶
Trace, metric, structured log гурвуулаа, дээр нь hash-chain audit бүртгэл.
Trace — OpenTelemetry¶
Хүсэлт бүрд span нээгддэг. TracingMiddleware нь хамгийн эхэнд ажилладаг
тул request-ID лог гарахаас өмнө trace_id тогтоно.
| Тохиргоо | Утга |
|---|---|
OTEL_EXPORTER |
otlp · stdout · хоосон (унтраалттай) |
OTEL_SAMPLE_RATIO |
Sampling харьцаа |
Автомат instrumentation:
- pgx —
otelpgx-ээр DB query бүр span болно (удаан query trace дээр харагдана). - Redis —
redisotel. - HTTP — chi middleware.
Metric — Prometheus¶
MetricsMiddleware нь хүсэлтийн тоолуур + latency гистограм цуглуулна.
ObservabilityGate middleware нь /metrics ба /swagger/doc.json-ыг
production дээр хаана. Token тохируулаагүй бол эдгээр endpoint нээлттэй үлдэх
биш, харин хаагдана.
Log — Zap¶
Бүтэцлэгдсэн JSON лог. Мөр бүрд request_id, trace_id, категори орно.
| Категори | Юу |
|---|---|
server |
Асаах / унтраах, boot guard |
access |
Нэг мөрийн access log |
recovery |
Panic-аас сэргэсэн тохиолдол |
Юу лог-д БИЧИГДЭХГҮЙ вэ?
Хэрэглэгчийн AI асуултын текст, токен, нууц үг, интеграцын credential. AI мэдлэгийн хайлт нь горим, олдсон тоо, шилдэг оноо, slug-ийг л бичнэ — асуултыг өөрийг нь биш.
Access log¶
AccessLogMiddleware нь хүсэлт бүрд нэг мөр гаргана: метод, зам, статус,
үргэлжлэх хугацаа, клиентийн IP (TRUSTED_PROXIES-аар шийдэгдсэн), request ID.
Gateway телеметр¶
Proxy-лагдсан дуудлагууд gateway_request_logs хүснэгтэд бичигдэнэ:
| Endpoint | Юу |
|---|---|
GET /v1/gateway/overview |
Хүсэлтийн тоо, алдааны хувь, latency |
GET /v1/gateway/logs |
Дэлгэрэнгүй лог |
UI: Admin → Gateway → Overview / Logs.
Audit log¶
Hash-chain холбоост, зөвхөн-нэмэх бүртгэл. Мөр бүр өмнөх мөрийн hash-ыг агуулдаг тул дунд мөрийг өөрчилвөл гинж таарахаа болино.
| Endpoint | Эрх | Юу |
|---|---|---|
GET /v1/audit/ |
admin | Бүртгэл унших (шүүлттэй) |
GET /v1/audit/verify |
admin | Гинжний бүрэн бүтэн байдлыг шалгах |
UI: Admin → Audit.
Юу бүртгэгддэг вэ: role / эрхийн өөрчлөлт, хэрэглэгчийн мутаци, super admin-ийн бүх үйлдэл, client secret эргүүлэлт, gateway тохиргооны өөрчлөлт, гарын үсгийн үйлдэл.
Зөвхөн-нэмэх гэдэг нь
Audit хүснэгт дээр UPDATE / DELETE эрх апп-ын role-д олгогдоогүй. RLS
policy нь service ба admin-д уншилт олгоно.
Security event¶
Тусдаа урсгал — сэжигтэй үйлдлийг бүртгэнэ:
| Endpoint | Эрх | Юу |
|---|---|---|
POST /v1/security/events |
нэвтэрсэн | Event бичих (клиентээс ч ирж болно) |
GET /v1/security/events |
admin | Унших |
UI: Admin → Security. security_events хүснэгт RLS-ээр хамгаалагдсан.
Health check¶
| Зам | Юу |
|---|---|
/health |
Liveness — DB / Redis холболтыг шалгана |
Compose дээр api ба web хоёулаа healthcheck-тэй; deploy скрипт нь healthy
болтол хүлээдэг.
platform-core нь бие даасан healthcheck хоёртой ч агуулна:
Graceful shutdown¶
SIGTERM дээр дараах дарааллаар хаагдана: HTTP сервер → rate limiter →
pgx pool → Redis → tracer. Идэвхтэй хүсэлтүүд дуусах хүртэл хүлээнэ.
Хаанаас юу харах вэ¶
| Асуулт | Хаанаас |
|---|---|
| «Хүсэлт яагаад удаан вэ?» | Trace (span breakdown) |
| «Хэдэн 5xx гарсан бэ?» | /metrics эсвэл Gateway → Overview |
| «Хэн энэ role-ыг өөрчилсөн бэ?» | Admin → Audit |
| «Нэвтрэх оролдлого хэвийн үү?» | Admin → Security |
| «Аль апп gateway-г их дуудаж байна?» | Gateway → Logs |