Skip to content

Logs

Every Observability workspace includes a Loki-compatible logs backend. Use the workspace push and query URLs from the overview (pushUrl, lokiQueryUrl, and optional pushOtlpUrl).

Endpoints

https://loki.<region>.thalassa.cloud/workspace/obsw-<id>/loki/api/v1/push
https://loki.<region>.thalassa.cloud/workspace/obsw-<id>/loki/api/v1/query
https://loki.<region>.thalassa.cloud/workspace/obsw-<id>/otlp/v1/logs

Copy the exact values from your workspace. Retention for logs is the same retentionDays as metrics on that workspace.

Authentication

Authenticate with an OIDC bearer token (service account client credentials recommended). The principal needs Loki data-plane permissions for push and/or query on the workspace, plus matching token scopes (for example observability:loki:push).

Workspace control-plane read access alone does not allow log ingest.

Push from agents

Any agent that speaks the Loki push API or OTLP logs can send data to the workspace — for example Promtail, Grafana Alloy, Fluent Bit with a Loki output, or OpenTelemetry Collector.

Example: Grafana Alloy (Loki)

loki.write "thalassa" {
  endpoint {
    url = "https://loki.<region>.thalassa.cloud/workspace/obsw-<id>/loki/api/v1/push"
    oauth2 {
      client_id     = env("THALASSA_CLIENT_ID")
      client_secret = env("THALASSA_CLIENT_SECRET")
      token_url     = "https://api.thalassa.cloud/oidc/token"
    }
  }
}

Wire your scrape or file pipelines to this loki.write component. Adjust the client for your agent’s OAuth2 / bearer configuration.

Query logs

Console

Open the workspace → Logs and run LogQL queries against streams in that workspace.

Gateway API

curl -G -H "Authorization: Bearer $TOKEN" \
  --data-urlencode 'query={app="api"} |= "error"' \
  "https://loki.<region>.thalassa.cloud/workspace/obsw-<id>/loki/api/v1/query_range"

Grafana

Add a Loki data source pointing at the workspace query base URL, with OIDC or bearer auth appropriate for your Grafana deployment. Scope the data source to a single workspace URL so tenants stay isolated.

Label hygiene

  • Prefer stable, low-cardinality labels (app, env, namespace, cluster).
  • Avoid unique IDs, full URLs, or user identifiers as labels — put that content in the log line.
  • High-cardinality labels increase cost and can hit ingestion limits.

Related documentation