Count matching lines over time loki
Count regex-matched error lines per minute across a namespace. |~ is regex match.
sum(count_over_time({namespace="prod"} |~ "timeout|deadline exceeded" [1m]))
more loki
all 7 commands →
logcli ad-hoc query
logcli query '{job="app/api"} |= "panic"' --since=1h --limit=200 --output=jsonl
Loki query_range via API
curl -sG "$LOKI_ADDR/loki/api/v1/query_range" --data-urlencode 'query=sum(rate({app="api"}[5m]))' --data-urlencode 'step=60' | jq '.data.result'
Push log lines to Loki
curl -s -H 'Content-Type: application/json' -XPOST "$LOKI_ADDR/loki/api/v1/push" -d '{"streams":[{"stream":{"app":"test"},"values":[["'$(date +%s%N)'","hello loki"]]}]}'
Parse JSON logs and reshape line
{app="api"} |= "error" | json | line_format "{{.level}} {{.msg}}"
Per-level log rate
sum by (level) (rate({app="api"} | logfmt [5m]))