Overview
This article covers how to use the Dremio Diagnostic Collector (DDC), to collect diagnostic information from your cluster
Applies To
All versions of Dremio and all deployment types.
Contents
Install
The DDC tool can be found here: https://github.com/dremio/dremio-diagnostic-collector or
in Dremio Versions 24.2.0 onwards and is located in the directory
/opt/dremio/tools/ddc
Prerequisites
Before running DDC, you need the following prerequisites:
- Admin access to the Dremio cluster infrastructure (kubectl access for K8s, SSH access for other types)
- Admin privileges in Dremio Software to read system tables, job profiles, and WLM
- A DDC binary for your client machine (downloaded as zip file from the "Releases" page on Github.
- Sufficient local permissions to run the downloaded binary (run ./ddc -h to verify)
Quick Start - DDC v4.0+
DDC v4 introduced a new subcommand-based CLI structure and an interactive TUI. If you are on an older version, see the DDC v3.x section below.
Recommended: Interactive Mode (TUI)
The easiest way to use DDC v4 is to run the binary with no arguments. The interactive TUI walks you through every decision and generates a reusable CLI command at the end:
ddc
The TUI will prompt you for: transport (Kubernetes, SSH, Local, or Local-K8s), collection mode (standard for routine or diagnosis for full incident investigation), paths, node selection, and API access (diagnosis mode only). Before collection starts, the TUI shows the equivalent ddc collect … command so you can reuse or share it.
Note:
diagnosismode is intended for use with Dremio Support and requires a password when running via the TUI.
Non-interactive (Scripting)
The general structure is:
ddc collect <transport> <mode> [flags]
Kubernetes:
ddc collect k8s standard --namespace <your-namespace>
SSH (on-prem):
# Coordinator only ddc collect ssh standard --coordinator <coordinator-ip> --ssh-user <user> # Coordinator and executors ddc collect ssh standard --coordinator <coordinator-ip> --executors <ip1>,<ip2>,<ip3> --ssh-user <user>
Local (run directly on the Dremio host):
ddc collect local standard
All modes output a tarball (diag.tgz) in the current working directory.
Diagnosis Mode (v4)
A PAT token is only required if enabling API-based collectors (--collect-problematic-profiles or --collect-kvstore-report). System tables and WLM are read from RocksDB and need no PAT.
export DDC_PAT_TOKEN="your-token-here" ddc collect k8s diagnosis --namespace <your-namespace> \ --collect-problematic-profiles --collect-kvstore-report \ --dremio-pat-token "$DDC_PAT_TOKEN"
Quick Start - DDC v3.0+
The following shows basic usage
Kubernetes
For Kubernetes one just has to enter the namespace where Dremio is installed.
ddc -n <where dremio is installed> --collect standard
Example: Dremio is in the dremio-install namespace:
ddc -n dremio-install --collect standard
This will generate a tarball named diag.tgz in your current working directory.
Nodes with SSH access
One must list the following to collect over ssh:
- the location of a valid ssh key that can access the nodes
- the list of coordinators separated by comma, example:
-c 192.168.1.3,192.168.1.2 - the list of executors separated by comma, example:
-e 192.168.1.10,192.168.1.11 - the user for the login, example:
-u ssh_user_login - the user that dremio runs as on the node, example:
-b dremio
In the following example of a coodinator at 192.168.1.20 with no executors and a login user of user123, and the dremio user for the dremio process we get:
ddc -c 192.168.1.20 -u user123 -b dremio --collect standard
This will generate a tarball named diag.tgz in your current working directory.
FAQ
See the FAQ for common questions
https://github.com/dremio/dremio-diagnostic-collector/blob/main/FAQ.md
How DDC Works
DDC runs on each node locally and collects logs, config files, OS-level info, and JVM diagnostics from the Dremio process. In diagnosis mode it can also connect to the Dremio REST API to collect WLM config, job profiles, and system table data.
DDC v4 — transport modes:
-
k8s- streams file contents from each pod directly to your local machine via the Kubernetes API; nothing is staged remotely -
ssh- streams files over an SSH channel the same way -
local- collects directly on the current host (no remote transport) -
local-k8s- runs from inside a coordinator pod and also gathers Kubernetes cluster info via the API
DDC v3 and earlier - remote collect process:
- DDC is copied across to each node/pod along with a
ddc.yamlconfig file - DDC is run on each node/pod
- The DDC files are cleaned up and the tarball is transferred back to the local machine
- The tarballs are extracted and combined into one archive
Further Reading
DDC github page: https://github.com/dremio/dremio-diagnostic-collector
DDC FAQ: https://github.com/dremio/dremio-diagnostic-collector/blob/main/FAQ.md
Collecting log files for support - https://support.dremio.com/hc/en-us/articles/7296581582235
Running a JFR - https://support.dremio.com/hc/en-us/articles/14285366833563