Back to Nightingale

Loki Log Queries

aiagent/skill/embedded/builtin/query-datasource/datasources/loki.md

9.1.11.9 KB
Original Source

Loki Log Queries

  • plugin_type: loki
  • Query language: LogQL
  • Use case: Log queries

Call the native Loki API through the proxy.


Query Logs (Range Query)

GET /api/n9e/proxy/<datasource_id>/loki/api/v1/query_range?query=<logql>&start=<unix_ns>&end=<unix_ns>&limit=100
Authorization: Bearer <token>
ParameterTypeRequiredDescription
querystringYesLogQL expression
startint64YesStart time, nanosecond Unix timestamp
endint64YesEnd time, nanosecond Unix timestamp
limitintNoNumber of log lines to return, default 100

Timestamp conversion: nanoseconds = seconds × 1000000000

Instant Query

GET /api/n9e/proxy/<datasource_id>/loki/api/v1/query?query=<logql>&time=<unix_ns>
Authorization: Bearer <token>

Get Label List

GET /api/n9e/proxy/<datasource_id>/loki/api/v1/labels
Authorization: Bearer <token>

Get Label Values

GET /api/n9e/proxy/<datasource_id>/loki/api/v1/label/<label_name>/values
Authorization: Bearer <token>

Common LogQL Examples

RequirementLogQL
View logs of an application{job="myapp"}
Search logs containing error{job="myapp"} |= "error"
Exclude a keyword{job="myapp"} != "debug"
Regex match{job="myapp"} |~ "timeout|refused"
Count error logscount_over_time({job="myapp"} |= "error" [5m])
Filter by label{job="myapp", level="error"}
Parse JSON logs{job="myapp"} | json | status >= 500
Log raterate({job="myapp"} |= "error" [1m])

Considerations

  • Timestamps are in nanoseconds: Loki API time parameters use nanosecond Unix timestamps (seconds × 1000000000)
  • Stream selector is required: A LogQL query must include at least one stream selector {label="value"}
  • Pipeline operators: |= (contains), != (does not contain), |~ (regex match), !~ (regex non-match)