Parseable

Live Tail

Stream log events from a dataset in real time with pb tail.


pb tail connects to a dataset and streams new events as they arrive. It is useful when you want to watch a service in real time, confirm that ingestion is working, or keep an eye on a pipeline while it is running.

Usage

pb tail <dataset-name>
# Watch a dataset called "backend"
pb tail backend

Events are printed as newline-delimited JSON, one event per line. Press Ctrl+C when you want to stop the stream.

● watching backend... (ctrl+c to stop)
{"level":"info","msg":"request received","service":"api","ts":"2024-01-15T10:23:01Z"}
{"level":"error","msg":"db timeout","service":"api","ts":"2024-01-15T10:23:02Z"}

Piping to jq

Because the output is newline-delimited JSON, you can pipe it straight into jq for filtering and formatting:

# Pretty-print all events
pb tail backend | jq .

# Show only error-level events
pb tail backend | jq 'select(.level == "error")'

# Extract specific fields
pb tail backend | jq '{time: .ts, msg: .msg}'

Piping to grep

# Show only lines containing "timeout"
pb tail backend | grep timeout

# Exclude health check noise
pb tail backend | grep -v "health_check"

How it works

pb tail uses Apache Arrow Flight over gRPC for streaming. It first reads the gRPC port advertised by the connected Parseable server, then opens the streaming connection on that port. The default self-hosted ports are:

PortProtocolPurpose
8000HTTPMain Parseable API (login, query, datasets)
8001gRPCDefault streaming port used by pb tail

Troubleshooting

Error: rpc error: code = Unavailable ... dial tcp <ip>:8001: i/o timeout

This means pb tail reached the server over HTTP, but could not reach the gRPC port advertised by that server. 8001 is the default, but a deployment can expose a different value.

Possible causes:

  • The advertised gRPC port is blocked by a firewall on the server
  • The advertised gRPC port is not exposed in your Docker or Kubernetes setup
  • Your network restricts outbound gRPC connections

To fix it, make sure the configured gRPC port is open and reachable from your machine. In a default Docker setup, expose it with -p 8001:8001. In a custom deployment, expose the port configured by the server and allow outbound TCP access to it.

Was this page helpful?

On this page