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.
Voraussetzung: Polycrate API
Beide Befehle benötigen eine konfigurierte API-Verbindung in ~/.polycrate/polycrate.yml:
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):
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.
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]'
Absoluter Workspace-Pfad
In CI und bei Container-Actions immer den absoluten Pfad für -w verwenden — relative Pfade wie -w . können bei Docker-Mounts fehlschlagen.
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 |