-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
lex edited this page May 28, 2026
·
1 revision
Common issues and their solutions.
macOS:
# One-time setup (persists until reboot) sudo chmod g+r /dev/bpf* # Or run with sudo sudo ocular capture redis 127.0.0.1
Linux:
# Permanent capability (survives reboot) sudo setcap cap_net_raw+ep $(which ocular) # Or run with sudo sudo ocular capture redis 127.0.0.1
Proxy mode:
- Is your app actually connecting to the Ocular proxy port (not the real service port)?
- Check:
redis-cli -h 127.0.0.1 -p 16379(proxy port, not 6379) - Check the component pane — does the proxy show as connected?
Capture mode:
- Are you using the correct interface?
lo0for localhost,en0/eth0for network - Is traffic actually flowing? Run
tcpdump -i lo0 port 6379to verify - Is the traffic encrypted (SSL)? Capture mode cannot decrypt TLS
Ocular auto-strips SSL for MySQL connections. If you see auth issues:
- Make sure the client connects to the proxy port, not the MySQL port directly
- Use
-h 127.0.0.1(notlocalhost—localhostforces Unix socket) - If using
caching_sha2_password, ensure the MySQL server allows fallback tomysql_native_password
This is expected. Traffic between containers on the same Docker network stays inside the Docker bridge and never reaches the host's network interface.
Solutions:
- Use proxy mode and expose ports to the host (
ports: "3306:3306") - Use proxy mode inside a container (Ocular as a sidecar)
Ocular searches for ocular.toml in this order:
-
./ocular.toml(current directory) $XDG_CONFIG_HOME/ocular/ocular.toml~/.config/ocular/ocular.toml$HOME/.config/ocular/ocular.toml-
$SUDO_USER's home (when running under sudo)
Override with: ocular -c /path/to/ocular.toml
- Ensure your terminal supports Unicode and 256+ colors
- Try a different theme:
theme = "default"inocular.toml - Resize the terminal window — the TUI redraws on resize
- If using tmux, ensure
default-terminalis set totmux-256colororscreen-256color
Capture mode processes every packet on the interface. If there's a lot of non-target traffic:
- Use a specific BPF filter (Ocular auto-filters by port, but double-check)
- Use proxy mode instead if possible — it only processes traffic that flows through it
- On high-traffic production servers, limit capture duration
The listen port is already bound by another process.
# Find what's using the port lsof -i :16379 # Use a different listen port ocular proxy redis 127.0.0.1:6379 -l 127.0.0.1:26379
This usually means the protocol parser doesn't recognize the wire format. Check:
- Is the protocol in the Supported Protocols list?
- Are you using the correct protocol name in config?
- Is the traffic actually the protocol you think it is? (e.g., Redis on a non-standard port)
Run with debug logging: RUST_LOG=debug ocular capture redis 127.0.0.1