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/logsCopy 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.