If OceanBase Diagnostic Tool (obdiag) is independently deployed, you can run this command to collect the stack information of the specified OceanBase cluster. This command is not supported for a cluster built in the ARM architecture.
If your OceanBase cluster is deployed by using OceanBase Deployer (obd), you can run obdiag commands on obd to collect diagnostic information of the cluster. For more information about the commands, see obdiag commands.
Syntax
obdiag gather stack [options]
The following table describes the options.
| Option | Required? | Data type | Default value | Description |
|---|---|---|---|---|
| --store_dir | No | string | The current path where the command is executed | The local path where the results are stored. |
| -c | No | string | ~/.obdiag/config.yml |
The path of the configuration file. |
| --inner_config | No | string | Empty | The configurations of obdiag. |
| --config | No | string | Empty | The configurations of the cluster diagnosed by obdiag, in the format of --config key1=value1 --config key2=value2.
NoteFor information about the parameters supported by this option, see Configure obdiag. |
Examples
Method 1: Use the command out-of-the-box without a configuration file
obdiag gather stack \
--config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
--config obcluster.servers.nodes[1].ip=xx.xx.xx.xx.2 \
--config obcluster.servers.nodes[2].ip=xx.xx.xx.xx.3 \
--config obcluster.servers.global.home_path=/home/admin/oceanbase
The output is as follows:
Summary:
+-------------------+-----------+---------+--------+---------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+===================+===========+=========+========+=================================================================================+
| xxx.xxx.xxx.xxx | Completed | 19.926K | 10 s | obdiag_gather_pack_20220729163951/obstack2_xxx.xxx.xxx.xxx_20220729163951.zip |
+-------------------+-----------+---------+--------+---------------------------------------------------------------------------------+
| xxx.xxx.xxx.xxx | Completed | 22.803K | 12 s | obdiag_gather_pack_20220729163951/obstack2_xxx.xxx.xxx.xxx_20220729163951.zip |
+-------------------+-----------+---------+--------+---------------------------------------------------------------------------------+
Collect the stack information of nodes accessible to obdiag without a password.
obdiag gather stack \ --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \ --config obcluster.servers.nodes[1].ip=xx.xx.xx.xx.2 \ --config obcluster.servers.global.home_path=/home/admin/oceanbaseCollect the stack information of nodes with different SSH logon passwords.
obdiag gather stack \ --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \ --config obcluster.servers.nodes[0].ssh_username=test1 \ --config obcluster.servers.nodes[0].ssh_password=****** \ --config obcluster.servers.nodes[0].home_path=/home/test2/oceanbase --config obcluster.servers.nodes[1].ip=xx.xx.xx.xx.2 --config obcluster.servers.nodes[1].ssh_username=test2 \ --config obcluster.servers.nodes[1].ssh_password=****** \ --config obcluster.servers.nodes[1].home_path=/home/test2/oceanbaseCollect the stack information of all nodes in a cluster with the connection information of the
systenant specified. In this case, obdiag automatically obtains the IP addresses of all nodes in the cluster.obdiag gather stack \ --config db_host=xx.xx.xx.xx \ --config db_port=xxxx \ --config tenant_sys.user=root@sys \ --config tenant_sys.password=*** \ --config obcluster.servers.global.home_path=/home/admin/oceanbase
Method 2: Use the command with a configuration file
Before you run the command, make sure that you have configured the logon information of the target nodes in the config.yml configuration file of obdiag. For more information, see Configure obdiag.
obdiag gather stack
Results
The command generates a folder in the specified directory. A sample folder name is
obdiag_gather_pack_20240808105846.You can use OBStack to obtain stack information.
OBStack has the following features:
Small blocking window: The average blocking time of threads is less than 1 ms.
High efficiency: OBStack can return results containing complete line numbers within a few seconds.
Support for parsing the names of functions in dynamic libraries.
Support for stack aggregation.
Support for paths of binary and debuginfo files.
Support for fetching independent threads.