1.Collector: add an otlphttp exporter
otel-collector.yaml
receivers:
otlp:
protocols:
http:
grpc:
filelog: # optional: pick up files as well
include: [/var/log/myapp/*.log]
exporters:
otlphttp/uptimeeye:
logs_endpoint: https://logs.uptimeeye.com/v1/ingest/otlp/v1/logs
compression: gzip
headers:
Authorization: "Bearer ${env:UPTIMEEYE_KEY}"
# optional: which attributes become stream fields (fast filters)
VL-Stream-Fields: "service.name,deployment.environment"
processors:
batch:
timeout: 2s
service:
pipelines:
logs:
receivers: [otlp, filelog]
processors: [batch]
exporters: [otlphttp/uptimeeye]2.SDKs: export directly with environment variables
Every OpenTelemetry SDK (and the Java agent) honours these variables; the service name becomes the service.name field.
environment
OTEL_SERVICE_NAME=checkout
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=prod,team=payments
OTEL_LOGS_EXPORTER=otlp
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.uptimeeye.com/v1/ingest/otlp/v1/logs
OTEL_EXPORTER_OTLP_LOGS_HEADERS=Authorization=Bearer%20ue_ingest_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNote: The header value is URL-encoded in
OTEL_EXPORTER_OTLP_LOGS_HEADERS, hence %20 for the space. Set only the _LOGS_ endpoint if traces and metrics go elsewhere.3.Search
Filter on service.name:=checkout or severity_text:=ERROR. The body of the log record is the message; attributes are fields.
Fields you get
These show up in the fields panel and can be used in every filter:
service.namedeployment.environmentand other resource attributesseverity_text/severity_numbertrace_id,span_idwhen present- every log attribute
Tips
- Use
http/protobuf. gRPC is not exposed on the ingest endpoint. - Stream fields via the
VL-Stream-Fieldsheader must exist on the records;service.nameanddeployment.environmentare the usual choice. - If you want a plain
servicefield next toservice.name, add atransformprocessor withset(attributes["service"], resource.attributes["service.name"]).
FAQ
- Can I use the same endpoint for traces and metrics?
- No — UptimeEye Logs ingests logs only. Point
OTEL_EXPORTER_OTLP_LOGS_*at UptimeEye and keep traces/metrics on their existing backend. - Where do I get the ingest key?
- In the app under API Keys → New API Key → type “Log ingest”. The key starts with
ue_ingest_and is shown once. Management keys (ue_live_) are refused by the ingest endpoint. - How do I check that logs arrive?
- Open Logs in the app, pick the 15m range and search for
service:=<your service>. New lines are searchable within about a second; Live tail shows them with a ~6 s delay.
Related
KubernetesCollect stdout/stderr of every pod with a Vector DaemonSet and send it to UptimeEye Logs with namespace, container and node attached.Spring Boot / JavaFour ways to get Spring Boot and Logback logs into UptimeEye Logs: OpenTelemetry Java agent, Spring Boot structured logging, Logback JSON files with an agent, or plain-text upload..Node.jsShip Node.js logs to UptimeEye Logs: JSON to stdout with pino for containers, a dependency-free HTTP batcher, or the OpenTelemetry logs SDK..Searching logsNow that lines arrive: filters, fields, time ranges and live tail.