Observability — Logs & Metriken aus der CLI
Observability — Logs & Metriken aus der CLI
Ab Polycrate CLI 0.46.0 können Plattform-Logs und -Metriken direkt aus dem Terminal abgefragt werden — ohne Grafana-Zugriff. Die CLI spricht die Polycrate API an, die Anfragen transparent an VictoriaLogs (Logs) bzw. VictoriaMetrics (Metriken) durchreicht.
```yaml
api:
enabled: true
url: https://app.ayedo.cloud
api_key: <your-api-key>
```
→ [API-Integration](api.md)
Der Workspace wird wie gewohnt über `-w` geladen; Organisation und Workspace-Name stammen aus der `workspace.poly`.
polycrate logs
Fragt Logs für die Organisation des geladenen Workspaces ab. Optional kann auf einen Block innerhalb des Workspaces eingeschränkt werden.
Grundlegende Verwendung
cd ~/.polycrate/workspaces/acme/production
# Alle Logs des Workspaces (Default-Query: *)
polycrate logs
# LogsQL-Filter
polycrate logs --query '_msg:error'
# Auf einen Block einschränken
polycrate logs --block victoria-logs --limit 50
polycrate logs list ist ein Alias mit identischem Verhalten (Rückwärtskompatibilität).
Flags
| Flag | Kurz | Standard | Beschreibung |
|---|---|---|---|
--query |
* |
LogsQL-Query (transparenter Passthrough an VictoriaLogs) | |
--block |
— | Scope auf eine Block-Instanz im Workspace | |
--start |
— | Zeitraum-Start (RFC3339 oder VictoriaLogs-Duration, z. B. 5m) |
|
--end |
— | Zeitraum-Ende (RFC3339 oder Duration) | |
--limit |
100 |
Maximale Anzahl Ergebnisse | |
--format |
Tabelle | json für maschinenlesbare Ausgabe |
|
--follow |
-f |
false |
Client-seitiges Polling neuer Einträge (wie tail -f) |
--follow-interval |
2s |
Polling-Intervall bei --follow |
|
-w, --workspace |
$PWD |
Pfad zum Workspace |
Output
Standard (Tabelle): Spalten TIME, SEVERITY, MESSAGE — Severity farblich hervorgehoben.
JSON: Rohe Log-Einträge als JSON-Array (empfohlen für Scripting und Coding-Agents):
polycrate logs --query 'severity:error' --format json
Follow-Modus
--follow pollt die gleiche Query in einem Intervall und druckt neu erscheinende Einträge chronologisch. Das ist client-seitiges Polling, kein server-push Tail — ausreichend für interaktives Debugging und Agent-Workflows.
polycrate logs --follow --block polycrate-api --query '*'
API-Endpunkt
Die CLI nutzt GET /api/v1/logs/query mit Parametern organization, workspace, block, query, start, end, limit. Org/Workspace/Block werden als Namen übergeben (nicht als UUID).
polycrate metrics
Führt PromQL- bzw. MetricsQL-Abfragen gegen VictoriaMetrics aus — gescoped auf Organisation, Workspace und optional Block.
Grundlegende Verwendung
# Instant Query
polycrate metrics 'up'
# Mit Block-Scope
polycrate metrics 'rate(http_requests_total[5m])' --block nginx
# Range Query (automatisch wenn --start, --end oder --step gesetzt)
polycrate metrics 'up' --start -1h --end now --step 1m
# JSON (rohe VictoriaMetrics-Response)
polycrate metrics 'up' --format json
Flags
| Flag | Beschreibung |
|---|---|
<query> |
PromQL/MetricsQL (positionales Argument, Pflicht) |
--block |
Scope auf Block-Instanz |
--time |
Evaluationszeitpunkt für Instant Query (RFC3339 oder Unix) |
--start |
Range-Start — löst Range Query aus |
--end |
Range-Ende — löst Range Query aus |
--step |
Auflösung der Range Query (Default: 1m wenn Range aktiv) |
--format |
json für rohe API-Response; Default: Tabelle |
-w, --workspace |
Workspace-Pfad |
Instant vs. Range Query
Sobald einer der Flags --start, --end oder --step gesetzt ist, wird automatisch eine Range Query (query_range) statt einer Instant Query ausgeführt — analog zum serverseitigen Verhalten der Polycrate API.
Output
Standard (Tabelle): Labels und Wert(e) pro Serie. Bei Range-Ergebnissen (matrix) zeigt die Tabelle eine kompakte Zusammenfassung (letzter Wert, Anzahl Datenpunkte).
JSON: Unveränderte VictoriaMetrics/Prometheus-API-Struktur (status, data.resultType, data.result).
API-Endpunkte
- Instant:
GET /api/v1/metrics/query - Range:
GET /api/v1/metrics/query_range
Typische Workflows
Operator ohne Grafana
cd ~/.polycrate/workspaces/ayedo/laser24
# Fehler der letzten Stunde
polycrate logs --query 'severity:error' --start 1h
# Verfügbarkeit eines Blocks
polycrate metrics 'up{block="polycrate-api"}'
CI / Scripting
polycrate logs --query '_msg:OOM' --format json --limit 20 \
-w /home/user/workspaces/acme/prod | jq '.[]._msg'
polycrate metrics 'sum(rate(http_requests_total[5m]))' --format json \
-w /home/user/workspaces/acme/prod | jq '.data.result[0].value[1]'
Migration von polycrate logs (alt)
| Alt (≤ 0.45.0) | Neu (≥ 0.46.0) |
|---|---|
Lokale .logs/-YAML-Dateien |
API-Abfrage gegen VictoriaLogs |
polycrate logs inspect <txid> |
Entfernt — Logs über --query filtern |
events.handler: workspace in workspace.poly |
Entfernt — keine lokale Event-Persistenz mehr |