Add CentralLogging stack, Covance/EDC sources, email import + IWRS scripts
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# log_gateway — FastAPI brána pro centrální logování
|
||||
|
||||
**Verze:** 1.0 · **Datum:** 2026-06-08 · **Soubor:** `log_gateway_v1.0.py`
|
||||
|
||||
FastAPI služba, která přijímá logy od klientských skriptů a přeposílá je do
|
||||
Grafana Loki přes jeho HTTP push API.
|
||||
|
||||
## Endpoints
|
||||
|
||||
| Metoda | Cesta | Popis |
|
||||
|--------|---------------|--------------------------------------------------|
|
||||
| GET | `/health` | liveness + dostupnost Loki (`/ready`) |
|
||||
| POST | `/log/batch` | dávka záznamů (klient používá toto) |
|
||||
| POST | `/log` | jeden záznam (query: `app_name`, `host`, `env`) |
|
||||
|
||||
Autorizace: hlavička `Authorization: Bearer <LOG_TOKEN>`.
|
||||
|
||||
## Payload `/log/batch`
|
||||
|
||||
```json
|
||||
{
|
||||
"app": "parse_emails_graph",
|
||||
"host": "PC-VB",
|
||||
"env": "prod",
|
||||
"records": [
|
||||
{"ts": 1780921433.81, "level": "ERROR", "msg": "bulk_write: ...",
|
||||
"logger": "root", "func": "save_batch", "line": 542, "exc": "Traceback ..."}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Brána seskupí záznamy podle `(app, host, level, env)` do Loki streamů, převede
|
||||
`ts` na nanosekundy, tělo řádku uloží jako JSON (kvůli `| json` v Grafaně) a
|
||||
pošle na `POST {LOKI_URL}/loki/api/v1/push`.
|
||||
|
||||
## ENV
|
||||
|
||||
| ENV | Default | Popis |
|
||||
|--------------|------------------------|------------------------------------|
|
||||
| `LOKI_URL` | `http://loki:3100` | adresa Loki (uvnitř docker sítě) |
|
||||
| `LOG_TOKEN` | `change-this-...` | sdílené tajemství (= klientův token)|
|
||||
| `GATEWAY_ENV`| `prod` | výchozí label env, když klient neuvede|
|
||||
|
||||
## Lokální běh (mimo docker)
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
LOKI_URL=http://192.168.1.76:3100 LOG_TOKEN=tajne \
|
||||
uvicorn log_gateway_v1.0:app --host 0.0.0.0 --port 8770
|
||||
```
|
||||
|
||||
## Návrhové poznámky
|
||||
|
||||
- Labely držíme nízkokardinální (`ALLOWED_LABELS`). Nikdy nedávat do labelů
|
||||
např. ID zprávy / pacienta — explodovala by kardinalita sérií v Loki.
|
||||
- Při chybě Loki vrací brána 502; klient si záznam uloží do spoolu a zkusí
|
||||
znovu → data se neztratí.
|
||||
Reference in New Issue
Block a user