Support bundles
Generate and inspect redacted diagnostic support bundles.
Both workflows support --output table|json. Bundle generation writes a .tar.gz archive as its intended side effect. JSON mode returns archive metadata and never prompts.
Generate a bundle
observal doctor support bundle --output jsonChoose the archive path with the hard-renamed --file/-f option:
observal doctor support bundle \
--file /tmp/observal-support.tar.gz \
--logs-since 2h \
--no-include-system \
--output jsonThe former archive-path meaning of --output/-o has been removed. --output/-o now consistently selects table or json.
Options
--file, -f
Archive path; defaults to a timestamped file in the current directory
--logs-since
Positive duration up to 30 days, such as 30m, 2h, or 1d12h
--include-system, --no-include-system
Include or omit local system metrics
--force, --yes
Overwrite an existing archive and accept the size warning
--output, -o
Human or JSON result
Existing archives prompt in human mode. JSON mode fails with a conflict unless --force or --yes is present.
JSON returns:
Collection behavior
Remote collectors use POST /api/v1/support/collect and require an administrator account. They provide:
Application and migration versions
PostgreSQL, ClickHouse, and Redis health
Allowlisted configuration
Aggregate table counts
Error fingerprints
Recent redacted log records
Local collectors provide allowlisted configuration processing and optional OS, CPU, memory, disk, and container-runtime details.
Remote collection is optional by design. Authentication, permission, version, network, or response failures are recorded in remote_status and warnings; local collection continues. This fallback is never silent.
Individual collector failures are retained in the manifest and JSON result. If no collector produces data, the command exits with code 9 and does not create an archive.
Privacy and integrity
Support bundles contain aggregate diagnostics, not customer database rows or trace payloads.
Protections include:
Configuration allowlisting before archive creation
Redaction of passwords, tokens, API keys, private keys, authorization values, URL credentials, JWTs, AWS access keys, and high-entropy strings
Redaction of collector error text before it enters the manifest
Rejection of unknown collector names and unsafe archive paths
Hashed host identity rather than a raw hostname
SHA-256 inventory entries for every archived file
Atomic archive replacement with mode
0600
The manifest records collector status, redaction counts, file sizes, and hashes. Review every bundle before sharing it because logs and deployment metadata can still be operationally sensitive.
Size budget
The uncompressed budget is 100 MB. Human mode asks before exceeding it. JSON mode requires --force and never prompts.
Inspect a bundle
Show one regular file:
JSON returns the manifest, safe regular-file inventory, schema warnings, and optional shown content:
Inspection never extracts files. It rejects traversal paths, links requested through --show, malformed or oversized manifests, and shown files larger than 1 MB. Unsafe archive members are omitted and reported as warnings.
Exit codes
5
Bundle or requested member not found
6
Destination archive already exists
7
Invalid duration, unsafe archive, malformed manifest, oversized display, or missing non-interactive confirmation
9
No diagnostic data or archive write failure
Related
observal doctor: diagnose and repair telemetry instrumentationobserval ops telemetry status: check telemetry flowTroubleshooting: deployment diagnosis
Last updated
Was this helpful?