A.3. Diagnostic Tools

Documentation

VoltDB Home » Documentation » VoltDB Kubernetes Administrator's Guide

A.3. Diagnostic Tools

The following sections give a summary of each of the diagnostics tools. See the online help for detailed instructions on commands and qualifiers.

A.3.1. Collect (kcollect)

The kcollect command collects logs, error files, and configuration information for both the base system and the database. This information can help debug issues with the database operation.

kcollect [--release={release-name}] [--dir={directory-path}]

Additional qualifiers:
--context={context-name}
--namespace={namespace-name}
--no-cores
--no-zip
--password={password}
--username={user-name}

If there is only one database release running in the namespace, the release name defaults to that release. Otherwise, you should specify the release name of the database cluster with the --release qualifier. Similarly, the output directory where the resulting collection is stored defaults to the /tmp directory. If you are using an additional PVC, you can use the --dir qualifier to redirect the output.

Note

The command for running the collect tool changed in version 1.2.0. See the online help for the helm voltadmin command on the diagnostics pod for information on running the collect function on earlier versions.

A.3.2. Mesh Monitor (meshmonitor, V1.5.0 and later)

The meshmonitor command starts network monitoring on the database cluster, recording network performance between the cluster nodes. This tool is useful in diagnosing issues such as network delays and instability, mysterious timeouts and hangs, and scheduling problems that impact database performance.

meshmonitor [qualifier]... start

meshmonitor [qualifier]... stop

meshmonitor [qualifier]... collect

Qualifiers:
--dir={directory-path}
--release={release-name}

There are three commands available for mesh monitor. The start command starts monitoring on the cluster nodes. The stop command stops monitoring, collects the results, and saves them as a compressed file in the output directory (/tmp by default). The collect command collects current results and saves them without stopping the monitoring.

For a quick analysis of potential network issues, you can use the meshmonitor start and stop commands to start monitoring for an hour or so, then stop and collect the data. This is useful if you are seeing problems with database connectivity or latency and want to see if network performance may be the cause.

For extended monitoring, you can use the meshmonitor start command to initiate monitoring, then intermittently use the collect command to collect and review the results without interrupting further monitoring. When you are done, you can use the stop command to cancel monitoring and collect the final data.

Note that monitoring continues only as long as the database pod is running. If the pod or pods stop for any reason (for example a crash or a reboot), the monitoring will not automatically restart. You can use the meshmonitor start command to restart monitoring in this situation.

Note

The meshmonitor command was introduced in version 1.5.0 of the diagnostic pod. The network monitoring code itself was added to the VoltDB server software in V14.2.0. So, for the time being, monitoring cannot be turned on for earlier versions of VoltDB and the meshmonitor command will report that the command is unsupported for the VoltDB version running on the cluster. However, the monitoring code will be included in all future releases of VoltDB and, in upcoming updates, it will be added to the earlier LTS versions as well.

A.3.3. Snapshot (ksnapshot, V1.3.0 and later)

The ksnapshot command takes a native database snapshot of the database's current contents, collects the resulting files and saves them as a compressed file in the output directory (/tmp by default).

ksnapshot [--release={release-name}] [--outdir={directory-path}]

If there is only one database release running in the namespace, the release name defaults to that release. Otherwise, you should specify the release name of the database cluster with the --release qualifier. Similarly, the output directory where the resulting collection is stored defaults to the /tmp directory. If you are using an additional PVC, you can use the --outdir qualifier to redirect the output.

Note

The ksnapshot command was introduced in version 1.3.0 of the diagnostics pod.

A.3.4. Sqlcmd (ksqlcmd)

The ksqlcmd command lets you enter interactive SQL commands and execute stored procedures (including system procedures) on the database.

ksqlcmd [--release={release-name}]

The ksqlcmd command is identical to the sqlcmd command except with the --release qualifier in place of the --servers and --port qualifiers for specifying which database you want to connect to. By default, the command connects to the "default" release listed in the welcome message when you connect to the diagnostics pod. The command also uses the TLS/SSL security configuration specified for the diagnostics pod when connecting to the database, as described in Section A.1.2, “Using the Diagnostic Tools Securely with TLS/SSL”.