ProductLogs
Know when your logs say something is wrong.
Write the query once. Observer turns it into one number, judges it against your thresholds and puts the result on your status page. The lines never leave your log store.
Loki: the query returns one number, 3 failures. Healthy under 5, unhealthy over 25. Verdict: Healthy.
In your log store
The query
LogQLsum(count_over_time(
{app="checkout"} |= "payment_failed" [5m]))What Loki answers
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{ "metric": {}, "value": [1791381895, "3"] }
]
}
}One number
Payment failures, last 5 minutes
3failures
The verdict
- Healthy
- < 5
- Unhealthy
- > 25
- Otherwise
- degraded
Healthy
3 is under 5: the healthy rule matches.
Your status page
Shown as each reading lands. A real page waits out the confirmation time first, 3 minutes by default.
Services
- Checkout100%Operational
Boundary
Only the number leaves your log store.
The agent asks your log store for one aggregate and sends that number out. Observer never stores a log line, and never sees your token.
Stored in Observer
Cloudkey: payment-failures
source_type: loki
source_config:
base_url: http://loki.monitoring:3100
query: |
sum(count_over_time(
{app="checkout"} |= "payment_failed" [5m]))
auth_mode: bearer
token_ref: LOKI_TOKENThe token is a name. Its value is read on the agent host when the query runs.
Only on the agent host
Your network# agent environment LOKI_TOKEN=glc_••••••••••••••••
Loki answers the agent with one number. The lines it counted stay in Loki.
Sent to Observer
Each reading{
"metric_id": "5c0e…",
"value": 31,
"timestamp": "2026-10-06T12:05:00Z",
"status": "unhealthy"
}The reading and the agent's verdict. A failed read adds a reason and no value.
Elasticsearch
No documents come back.
The agent forces size to 0 on every search and reads one named aggregation: a count, an average, a percentile.
OpenSearch
Same search API.
Point the Elasticsearch source at OpenSearch. Only the labels in the console change.
Auth
Bearer, basic or API key.
Loki takes a bearer token or basic auth, plus a tenant ID for multi-tenant setups. Elasticsearch also takes an API key.
Guardrails
A broken query tells you, instead of lying to you.
Some mistakes are refused when you save. The rest show up as no data with a reason, never as a quiet healthy.
A query that returns log lines
{app="checkout"} |= "payment_failed"Refused
When you save
LogQL query must be a metric aggregation (count_over_time, rate, sum(...), …), not a raw log stream
Counting per stream instead of in total
count_over_time({app="checkout"} |= "payment_failed" [5m])No data
Saves; caught on the agent
loki_multiple_series: one series per stream comes back, so there is no single number to judge. Wrap it in sum(...).
A search with nothing to read
{"query":{"range":{"@timestamp":{"gte":"now-5m"}}}}Refused
When you save
query must contain an `aggs` (or `aggregations`) block that produces the metric value
An aggregation name that doesn't match
agg_name: error
aggs: { "errors": { "value_count": { "field": "level" } } }No data
Saves; caught on the agent
es_agg_not_found, with the aggregation names the response did contain.
A token the agent host doesn't have
auth_mode: bearer token_ref: LOKI_TOKEN
No data
On the agent
loki_auth_ref_missing, naming LOKI_TOKEN, instead of a silent 401.
Then
From here, it's just a metric.
Thresholds, the confirmation window, services, SLOs and drafted incidents work the same as for any other source. This is the console chart for the Loki query above.
| Time (UTC) | Average | Min | Max | Status |
|---|---|---|---|---|
| 2026-11-12 09:50:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 09:55:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 10:00:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 10:05:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 10:10:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 10:15:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 10:20:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 10:25:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 10:30:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 10:35:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 10:40:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 10:45:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 10:50:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 10:55:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 11:00:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 11:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 11:10:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 11:15:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 11:20:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 11:25:00 UTC | 4 | 4 | 4 | Healthy |
| 2026-11-12 11:30:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 11:35:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 11:40:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 11:45:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 11:50:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 11:55:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 12:00:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 12:05:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 12:10:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 12:15:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 12:20:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 12:25:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 12:30:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 12:35:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 12:40:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 12:45:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 12:50:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 12:55:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 13:00:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 13:05:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 13:10:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 13:15:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 13:20:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 13:25:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 13:30:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 13:35:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 13:40:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 13:45:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 13:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 13:55:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 14:00:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 14:05:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 14:10:00 UTC | 4 | 4 | 4 | Healthy |
| 2026-11-12 14:15:00 UTC | 4 | 3 | 4 | Healthy |
| 2026-11-12 14:20:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 14:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 14:30:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 14:35:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 14:40:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 14:45:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 14:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 14:55:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 15:00:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 15:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 15:10:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 15:15:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 15:20:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 15:25:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 15:30:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 15:35:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 15:40:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 15:45:00 UTC | 4 | 4 | 4 | Healthy |
| 2026-11-12 15:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 15:55:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 16:00:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 16:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 16:10:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 16:15:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 16:20:00 UTC | 3 | 2 | 3 | Healthy |
| 2026-11-12 16:25:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 16:30:00 UTC | 4 | 4 | 4 | Healthy |
| 2026-11-12 16:35:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 16:40:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 16:45:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 16:50:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 16:55:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 17:00:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 17:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 17:10:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 17:15:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 17:20:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 17:25:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 17:30:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 17:35:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 17:40:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 17:45:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 17:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 17:55:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 18:00:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 18:05:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 18:10:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 18:15:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 18:20:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 18:25:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 18:30:00 UTC | 3 | 2 | 3 | Healthy |
| 2026-11-12 18:35:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-12 18:40:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 18:45:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 18:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 18:55:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 19:00:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 19:05:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 19:10:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 19:15:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 19:20:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 19:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 19:30:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 19:35:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 19:40:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 19:45:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 19:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 19:55:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 20:00:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 20:05:00 UTC | 18 | 15 | 21 | Degraded |
| 2026-11-12 20:10:00 UTC | 39 | 33 | 49 | Unhealthy |
| 2026-11-12 20:15:00 UTC | 19 | 17 | 21 | Degraded |
| 2026-11-12 20:20:00 UTC | 12 | 10 | 14 | Degraded |
| 2026-11-12 20:25:00 UTC | 18 | 16 | 22 | Degraded |
| 2026-11-12 20:30:00 UTC | 34 | 28 | 38 | Unhealthy |
| 2026-11-12 20:35:00 UTC | 28 | 23 | 34 | Unhealthy |
| 2026-11-12 20:40:00 UTC | 26 | 22 | 30 | Unhealthy |
| 2026-11-12 20:45:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 20:50:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 20:55:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 21:00:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:10:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:15:00 UTC | 3 | 2 | 3 | Healthy |
| 2026-11-12 21:20:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:30:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:35:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 21:40:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 21:45:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 21:50:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 21:55:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 22:00:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 22:05:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 22:10:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 22:15:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 22:20:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 22:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 22:30:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 22:35:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 22:40:00 UTC | 3 | 2 | 3 | Healthy |
| 2026-11-12 22:45:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-12 22:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 22:55:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 23:00:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 23:05:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 23:10:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 23:15:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 23:20:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-12 23:25:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-12 23:30:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 23:35:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-12 23:40:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-12 23:45:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-12 23:50:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-12 23:55:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-13 00:00:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 00:05:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 00:10:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 00:15:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 00:20:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-13 00:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 00:30:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 00:35:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-13 00:40:00 UTC | 3 | 2 | 4 | Healthy |
| 2026-11-13 00:45:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-13 00:50:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 00:55:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-13 01:00:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 01:05:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-13 01:10:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-13 01:15:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-13 01:20:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-13 01:25:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 01:30:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-13 01:35:00 UTC | 4 | 4 | 5 | Healthy |
| 2026-11-13 01:40:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-13 01:45:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-13 01:50:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 01:55:00 UTC | 3 | 3 | 4 | Healthy |
| 2026-11-13 02:00:00 UTC | 2 | 2 | 3 | Healthy |
| 2026-11-13 02:05:00 UTC | 2 | 2 | 2 | Healthy |
| 2026-11-13 02:10:00 UTC | 3 | 3 | 3 | Healthy |
| 2026-11-13 02:15:00 UTC | 1 | 1 | 1 | Healthy |
| 2026-11-13 02:20:00 UTC | 4 | 3 | 5 | Healthy |
| 2026-11-13 02:25:00 UTC | 1 | 1 | 1 | Healthy |