llmrouter README: die vier Wege ins Log (stats, zuordnung, jsonl/changes/sqlite, Journal)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -133,17 +133,51 @@ Der erste Lauf mit leerem State prüft jeden Alias unter Last, das ist gewollt.
|
||||
## Log und Statistik
|
||||
|
||||
Je Anfrage eine Zeile in `log/requests.jsonl` und in `log/requests.sqlite`:
|
||||
Key, Alias, angefragter Name, tatsächliches Modell, Effort, Tokens
|
||||
(prompt/completion/cached), **Kosten wie von OpenRouter gemeldet**
|
||||
(`usage.cost`, auch im Stream über den letzten Chunk). Lokale Upstreams haben
|
||||
keine Kosten, das Feld bleibt leer, wir erfinden keine Preise.
|
||||
Key, angefragter Name, aufgelöster Alias, tatsächliches Modell, Effort, Pfad,
|
||||
Status, Dauer, Tokens (prompt/completion/cached), **Kosten wie von OpenRouter
|
||||
gemeldet** (`usage.cost`, auch im Stream über den letzten Chunk und über den
|
||||
Messages-Endpunkt). Lokale Upstreams und die LiteLLM-Durchreiche haben keine
|
||||
Kosten, das Feld bleibt leer, wir erfinden keine Preise. Die Antwort trägt
|
||||
`x-llmrouter-model`, damit ein Client sieht, was wirklich lief.
|
||||
|
||||
### Vier Wege ins Log
|
||||
|
||||
**1. Statistik je Tag und Key** — vom Mac aus, Admin-Key aus OpenBao
|
||||
(`jessie/llmrouter admin_key`):
|
||||
|
||||
```bash
|
||||
bun run src/stats.ts 7 # Tag × Key: Anfragen, Tokens, Kosten, Modelle
|
||||
curl -H "Authorization: Bearer $ADMIN_KEY" http://llm.lan:4010/stats?days=7
|
||||
curl -s "http://llm.lan:4010/stats?days=7" \
|
||||
-H "Authorization: Bearer $(~/.agents/bin/secret get jessie llmrouter admin_key)" | python3 -m json.tool
|
||||
```
|
||||
|
||||
Die Antwort trägt `x-llmrouter-model`, damit ein Client sieht, was wirklich lief.
|
||||
**2. Aktuelle Zuordnung** — konfigurierte Aliasse und alle bisher angefragten
|
||||
`alt/`-Referenzen mit Ziel, Effort, Indexen, Preis und Zeitpunkt:
|
||||
|
||||
```bash
|
||||
curl -s http://llm.lan:4010/zuordnung \
|
||||
-H "Authorization: Bearer $(~/.agents/bin/secret get jessie llmrouter admin_key)" | python3 -m json.tool
|
||||
```
|
||||
|
||||
**3. Einzelne Anfragen** auf dem Host (LXC 185020, `/srv/llmrouter/log`):
|
||||
|
||||
```bash
|
||||
ssh s18p1.lan 'pct exec 185020 -- tail -20 /srv/llmrouter/log/requests.jsonl'
|
||||
ssh s18p1.lan 'pct exec 185020 -- cat /srv/llmrouter/log/changes.log' # jeder Modellwechsel der Auflösung
|
||||
ssh s18p1.lan 'pct exec 185020 -- bash -c "cd /srv/llmrouter && ./llmrouter-stats 7"' # Tagesstatistik als Tabelle
|
||||
```
|
||||
|
||||
`requests.sqlite` steht für eigene Abfragen offen (Tabelle `requests`, Spalten
|
||||
wie die JSONL-Felder).
|
||||
|
||||
**4. Dienst-Journal** — Start, Auffrischen, abgewiesene Keys (401 mit
|
||||
Key-Länge und Präfix), Upstream-Fehler:
|
||||
|
||||
```bash
|
||||
ssh s18p1.lan 'pct exec 185020 -- journalctl -u llmrouter -n 50 --no-pager -o cat'
|
||||
```
|
||||
|
||||
Manuell auffrischen: `POST /auffrischen` mit Admin-Key startet den vollen
|
||||
Lauf (Preise neu, Aliasse mit Last-Probe bei Wechsel, `alt/`-Einträge neu).
|
||||
|
||||
## Betrieb
|
||||
|
||||
|
||||
Reference in New Issue
Block a user