Skip to content

Loki Instant Query Endpoint (/loki/api/v1/query) #20

@frisbeeman

Description

@frisbeeman

Overview

Implement the Loki instant query endpoint that queries logs/metrics at a single point in time.

Parent Issue

Part of #6 (Query Service Implementation), delegated from #7 (Loki Query Interface) and #8 (LogQL Query Compiler).

Context

The /loki/api/v1/query endpoint performs instant queries - evaluating a query at a single point in time. Currently, this endpoint returns 501 Not Implemented.

Requirements

Endpoint Specification

Request:

GET /loki/api/v1/query
POST /loki/api/v1/query

Parameters:
- query: LogQL query string (required)
- time: Evaluation timestamp (optional, defaults to now)
- limit: Maximum number of entries (optional)
- direction: forward/backward (optional)

Behavior Differences from query_range

Aspect query_range query (instant)
Time parameter start, end, step single time
Result for logs Streams over range Streams at instant
Result for metrics Matrix (multiple points) Vector (single point per series)

Implementation Approach

  1. Add handler in src/query/loki/handlers.rs:

    • Parse time parameter (default to current time)
    • For log queries: query small window around time
    • For metric queries: evaluate at single timestamp
  2. Response format:

    • Log queries: resultType: "streams" (same as query_range)
    • Metric queries: resultType: "vector" (single value per series)

Vector Response Format

{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {"job": "app", "level": "error"},
        "value": [1609459200, "42"]
      }
    ]
  }
}

Acceptance Criteria

  • GET /loki/api/v1/query endpoint is implemented
  • POST /loki/api/v1/query endpoint is implemented
  • time parameter is correctly parsed and applied
  • Log queries return streams at the specified instant
  • Metric queries return vector format (single point per series)
  • Default time is current time when not specified
  • Grafana instant queries work correctly
  • Unit tests for endpoint
  • Integration tests verify Grafana compatibility

Technical References

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions