UptimeEye Logs

Ship logs from any stack, search them with fields and filters, jump from an alert to the lines that explain it. This section covers how to send logs (13 integration guides) and how to find them again.

Quick start

Three steps, no agent required. Everything else builds on this.

1. Create an ingest key

In the app open API Keys → New API Key, choose the type “Log ingest” and copy the key. It starts with ue_ingest_ and is shown once.

2. Send a line

shell
curl -sS -X POST "https://logs.uptimeeye.com/v1/ingest/jsonline?_stream_fields=service,env" \
  -H "Authorization: Bearer ue_ingest_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/x-ndjson" \
  --data-binary @- <<'JSON'
{"_msg":"hello from the docs","service":"demo","env":"prod","level":"info","user_id":"u_42"}
JSON

3. Search

Open Logs, type service:=demo and press Enter. Open the line, click the filter icon next to user_id — that is the whole workflow.

Plain-text logs? Send the file as text instead — see Log files / plain text.

Guides

Integrations

Step-by-step guides with copy-paste configuration. Pick the one closest to how you run your services.

Key concepts

  • No schema. Every JSON key you send is a field. _msg is the message, _time the event time; nested objects become dotted names.
  • Stream fields (_stream_fields=service,env) are the labels of a log stream — the fastest filters and the backbone of the fields panel. Pick a few low-cardinality fields.
  • One query. Clicking a value in the fields panel or a row's detail writes field:=value into the query; two values of the same field become field:in(a, b) (OR), different fields narrow each other (AND).
  • Quota and retention are per plan; the Logs page shows both. Over quota, the ingest endpoint answers 429 with Retry-After — nothing is silently dropped.
  • Live tail follows event time with a ~6 s delay; backfilled lines show up in search, not in the tail.

FAQ

What is UptimeEye Logs?
Centralized log search that lives next to your uptime monitors. You ship logs over HTTP (JSON lines, Elasticsearch bulk, OpenTelemetry, Loki push or plain text), UptimeEye stores them per organization and you search them with words, field filters and a time range — from any alert straight to the cause.
Which formats and agents are supported?
Anything that speaks JSON lines, the Elasticsearch bulk API, OTLP/HTTP, the Loki push API or plain text: Vector, Fluent Bit, Filebeat, the OpenTelemetry Collector and SDKs, Promtail, Grafana Alloy, the Docker Loki driver, curl and your own code.
Do I have to change my application?
Usually not. Agents pick up stdout or files; if your app logs JSON, every key becomes a searchable field automatically. Plain-text logs are accepted as well.
Where are logs stored and for how long?
On UptimeEye's own infrastructure in Germany (Hetzner, Falkenstein), isolated per organization, with no third-party service touching the content. Retention is 3 days on Free, 7 on Pro and 15 on Agentur; the monthly volume is 1, 10 or 50 GB. Deleting your organization deletes its log tenant.
How fast are logs searchable?
Within about a second after ingest. Live tail follows new lines with a delay of roughly six seconds so batching agents can deliver in order.