Skip to main content

Web View (with OpenObserve)

Send Wake logs to OpenObserve and inspect them in a browser. This is useful when you want a shareable view during debugging, incident response, or longer --since investigations.

Quick Setup

1. Start OpenObserve

mkdir -p data
chmod +x data

docker run -d \
--name openobserve \
-v $PWD/data:/data \
-p 5080:5080 \
-e ZO_ROOT_USER_EMAIL="root@example.com" \
-e ZO_ROOT_USER_PASSWORD="Complexpass#123" \
-e ZO_COMPACT_DATA_RETENTION_DAYS=3 \
-e ZO_ORG_DATA_QUOTA=10737418240 \
-e ZO_STREAM_DATA_QUOTA=2147483648 \
public.ecr.aws/zinclabs/openobserve:latest

Open the UI:

http://localhost:5080

Default login:

root@example.com
Complexpass#123

2. Configure Wake (only if needed)

These are Wake's default web settings. Run them only if you changed the OpenObserve endpoint or credentials.

wake setconfig web.endpoint "http://localhost:5080"
wake setconfig web.user "root@example.com"
wake setconfig web.password "Complexpass#123"

3. Send Logs To Web View

# Pull a useful incident window first
wake -n production api-* --since 2h --web

# Live stream new logs
wake -n apps log-generator --web

# All namespaces
wake -A "api|worker" --since 1h --web

Wake prints the OpenObserve stream name and dashboard link after web mode starts. Prefer sending a useful log window first, then query inside OpenObserve so you keep the surrounding context.

OpenObserve Logs view showing Wake logs in a runtime stream
Wake logs in OpenObserve, grouped by runtime stream.

Query The Logs

OpenObserve is most useful when Wake sends enough context in one run. Instead of repeatedly running narrow filters, pull the logs once with --since, then query the stream in the browser.

Start broad:

wake -n production api-* --since 2h --web

Then query in OpenObserve:

SELECT * FROM "logs_wake_<namespace>_<runtime_timestamp>"
WHERE level = 'error'
ORDER BY _timestamp DESC

Search message text:

SELECT * FROM "logs_wake_<namespace>_<runtime_timestamp>"
WHERE message LIKE '%timeout%'
ORDER BY _timestamp DESC

Narrow to one pod:

SELECT * FROM "logs_wake_<namespace>_<runtime_timestamp>"
WHERE pod_name = 'payment-service-7c9d5f'
ORDER BY _timestamp DESC

Use the exact stream name Wake prints when web mode starts. This gives you better debugging context: you can inspect errors, warnings, neighboring log lines, pods, containers, and timestamps without pulling the same Kubernetes logs again.

How Streams Work

Each wake --web run writes to a new OpenObserve stream named like:

logs_wake_<namespace>_<runtime_timestamp>

This keeps separate runs clean. For example, running wake --web --since 2h multiple times will create separate streams instead of mixing repeated historical backfills into one daily stream.

Using --since

--since is useful for loading a recent incident window into OpenObserve:

wake -n production payment-service --since 4h --web

Behavior to know:

  • The initial connection uses the --since window.
  • If the pod log connection drops and Wake reconnects, Wake does not replay the same --since window again.
  • Reconnects continue with fresh logs to avoid duplicate OpenObserve data.

Common Workflows

Incident Response

wake -n production --since 2h --web

Use this when you need a shared browser view for an incident timeline. Query level, message, pod_name, and time range in OpenObserve after the data lands.

Service Debugging

wake -n staging payment-service --since 1h --web

Use this when multiple people need to inspect the same service context.

Performance Investigation

wake -n production "api-.*" --since 24h --web

Use OpenObserve's time range controls to narrow down spikes after the logs are loaded.

Troubleshooting

OpenObserve Is Not Reachable

docker ps | grep openobserve
docker logs -f openobserve

If the container is not running:

docker start openobserve

Port 5080 Is Already In Use

Run OpenObserve on another host port:

docker run -d \
--name openobserve \
-v $PWD/data:/data \
-p 5081:5080 \
-e ZO_ROOT_USER_EMAIL="root@example.com" \
-e ZO_ROOT_USER_PASSWORD="Complexpass#123" \
public.ecr.aws/zinclabs/openobserve:latest

wake setconfig web.endpoint "http://localhost:5081"

Reset Local OpenObserve Data

docker stop openobserve
docker rm openobserve
rm -rf data

Then run the setup command again.