Meet OceanBase AI Database, the unified database for operational data, real-time analytics, and AI. Explore ->

Meet OceanBase AI Database, the unified database for operational data, real-time analytics, and AI. Explore ->

OceanBase logo

OceanBase

A unified distributed database ready for your transactional, analytical, and AI workloads.

Product Overview
DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Resources

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS

OceanBase Cloud

OceanBase Database

Tools

Connectors and Middleware

QUICK START

OceanBase Cloud

OceanBase Database

BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Company

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

International - English
中国站 - 简体中文
日本 - 日本語
Sign In
Start on Cloud

OceanBase

A unified distributed database ready for your transactional, analytical, and AI workloads.

Product Overview
DEPLOY YOUR WAY

OceanBase Cloud

The best way to deploy and scale OceanBase

OceanBase Enterprise

Run and manage OceanBase on your infra

TRY OPEN SOURCE

OceanBase Community Edition

The free, open-source distributed database

OceanBase seekdb

Open source AI native search database

Customer Stories

Real-world success stories from enterprises across diverse industries.

View All
BY USE CASES

Mission-Critical Transactions

Global & Multicloud Application

Elastic Scaling for Peak Traffic

Real-time Analytics

Active Geo-redundancy

Database Consolidation

Comprehensive knowledge hub for OceanBase.

Blog

Live Demos

Training & Certification

Documentation

Official technical guides, tutorials, API references, and manuals for all OceanBase products.

View All
PRODUCTS
OceanBase CloudOceanBase Database
ToolsConnectors and Middleware
QUICK START
OceanBase CloudOceanBase Database
BEST PRACTICES

Practical guides for utilizing OceanBase more effectively and conveniently

Learn more about OceanBase – our company, partnerships, and trust and security initiatives.

About OceanBase

Partner

Trust Center

Contact Us

Start on Cloud
编组
All Products
    • Databases
    • iconOceanBase Database
    • iconOceanBase Cloud
    • iconOceanBase Tugraph
    • iconInteractive Tutorials
    • iconOceanBase Best Practices
    • Tools
    • iconOceanBase Cloud Platform
    • iconOceanBase Migration Service
    • iconOceanBase Developer Center
    • iconOceanBase Migration Assessment
    • iconOceanBase Admin Tool
    • iconOceanBase Loader and Dumper
    • iconOceanBase Deployer
    • iconKubernetes operator for OceanBase
    • iconOceanBase Diagnostic Tool
    • iconOceanBase Binlog Service
    • Connectors and Middleware
    • iconOceanBase Database Proxy
    • iconEmbedded SQL in C for OceanBase
    • iconOceanBase Call Interface
    • iconOceanBase Connector/C
    • iconOceanBase Connector/J
    • iconOceanBase Connector/ODBC
    • iconOceanBase Connector/NET
icon

OceanBase Diagnostic Tool

V4.3.0

  • obdiag Overview
  • obdiag installation
  • obdiag configuration
  • One-click Cluster Inspection
    • One-click cluster inspection
    • Detailed explanation of cluster inspection indicators
  • One-click Information Gathering
    • One-click routine information collection
      • OceanBase cluster log collection
      • Host information collection
      • SQL details collection
      • Stack information collection
      • Flame Picture/Bian Que Picture Collection
      • ASH report collection
      • Collect table-related information
      • Cluster parameter collection
      • Variable collection
      • clog/slog collection
      • DBMS_XPLAN information collection
      • Core file collection
      • AWR report collection
      • obproxy log collection
      • OMS log collection
      • Collect all information
    • One-click scenario-based information collection
      • Overview
      • Collect basic cluster information
      • Collect backup problem information
      • Collect backup cleanup problem information
      • Collect clog disk full problem information
      • Collect cluster downtime problem information
      • Collect merge problem information
      • Collect CPU high problem information
      • Collect information on delay issues in primary and standby databases
      • Collect I/O problem information
      • Collect log archiving problem information
      • Collect long transaction problem information
      • Collect memory problem information
      • Collect SQL performance problem information
      • Collect PX error reporting information
      • Collect recovery problem information
      • Collect observer restart information without reason
      • Collect owner-cutting problem information
      • Collect information about hanging transaction issues
      • Collect copy imbalance problem information
      • Collect SQL error reporting information
      • Collect cluster TopSQL information
      • Collect application error information
      • Collect obproxy restart problem information for no reason
      • Collect ODP parameter information
      • Collect unspecified scenario problem information
  • One-click Diagnostic Analysis
    • One-click diagnostic analysis log
    • One-click full-link diagnostic log analysis
    • Parameter analysis (compared with default values)
    • Parameter analysis (parameter differences on different observers)
    • Analyze variables
    • Instructions for using index space analysis
    • One-click diagnostic analysis of memory
    • One-click diagnosis and analysis of queue backlog
  • One-click Root Cause Analysis
    • One-click root cause analysis
    • Root cause analysis scenario: disconnection
    • Root cause analysis scenario: card merging major_hold
    • Root cause analysis scenario: lock conflict lock_conflict
    • Root cause analysis scenario: executing DDL and reporting disk full error ddl_disk_full
    • Root cause analysis scenario: clog disk is full clog_disk_full
    • Root cause analysis scenario: log error log_error
    • Root cause analysis scenario: DDL failure ddl_failure
    • Root cause analysis scenario: Troubleshooting index build execution error index_ddl_error
    • Root cause analysis scenario: transaction disconnection scenario transaction_disconnection
    • Root cause analysis scenario: transaction execution times out and error transaction_execute_timeout
    • Root cause analysis scenario: transaction does not end and error transaction_not_ending is reported
    • Root cause analysis scenario: transaction other errors transaction_other_error
    • Root cause analysis scenario: transaction rollback error transaction_rollback
    • Root cause analysis scenario: transaction wait timeout error transaction_wait_timeout
    • Root cause analysis scenario: OMS full migration exception oms_full_trans
    • Root cause analysis scenario: OMS obcdc component analysis oms_obcdc
    • Root cause analysis scenario: suspended transaction suspend_transaction
    • Root cause analysis scenario: Unit GC exception unit_gc
    • Root cause analysis scenario: OceanBase cluster playback card
    • Root cause analysis scenario: OceanBase cluster memory explosion
    • Root cause analysis scenario: Abnormal deletion of OBServer node
    • Root cause analysis scenario: GC troubleshooting gc_troubleshooting
    • Root cause analysis scenario: Schema leak schema_leak
    • Root cause analysis scenario: partition split scheduling error split_schedule_error
    • Root cause analysis scenario: weak read problem troubleshooting weak_read_troubleshooting
    • Root cause analysis scenario: SQL execution memory is too high execute_memory_high
  • One-click Cluster Insights
    • Overview
    • Cluster overview information insights
    • Cluster node information insight
    • Cluster unit information insight
    • Cluster Zone Information Insights
    • Cluster RS Information Insights
    • Cluster tenant information insight
    • Cluster event information insight
    • Cluster lock information insight
    • Cluster topsql information insight
    • Cluster slowsql information insight
    • Cluster table information insight
    • Cluster processlist information insight
    • SQL execution plan information insights
    • Insights into database disk usage information
    • Insight on the disk usage of the specified table in the database
    • Insights into the full tenant information of the cluster
    • Cluster node CPU usage information insights
    • Internal table name fuzzy matching information insight
    • Cluster leader information insight
    • Information insights into locks held on a certain table
    • Cluster long transaction information information insight
    • Actual execution plan operator information insight
    • Memory information insights for all tenants
    • processlist Real-time session summary information insights
    • Table/index storage method information insight
    • Table NDV Information Insights
    • Table index information insight
    • Merge status display
    • clog log volume/capacity statistics
  • Plug-in file upgrade
  • Update and uninstall
  • Telemetry Mode
  • FAQ
  • Tools
    • Configuration file encryption
    • AI Intelligent Diagnosis Assistant
    • Disk IO performance detection
    • Configure verification tool
  • Release Notes
    • obdiag V4.2.0
    • obdiag V4.1.0
    • obdiag V4.0.0
    • obdiag V3.7.2
    • obdiag V3.7.1
    • obdiag V3.7.0
    • obdiag V3.6.0
    • obdiag V3.5.0
    • obdiag V3.4.0
    • obdiag V3.3.0
    • obdiag V3.2.0
    • obdiag V3.1.0
    • obdiag V3.0.0
    • obdiag V2.6.0
    • obdiag V2.5.0
    • obdiag V2.4.0
    • obdiag V2.3.0
    • obdiag V2.2.0
    • obdiag V2.1.0
    • obdiag V2.0.0
    • obdiag V1.6.2
    • obdiag V1.6.1
    • obdiag V1.6.0
    • obdiag V1.5.2
    • obdiag V1.5.1
    • obdiag V1.5.0
    • obdiag V1.4.0
    • obdiag V1.3.0

Download PDF

obdiag Overviewobdiag installationobdiag configurationOne-click cluster inspectionDetailed explanation of cluster inspection indicatorsOceanBase cluster log collectionHost information collectionSQL details collectionStack information collectionFlame Picture/Bian Que Picture CollectionASH report collectionCollect table-related informationCluster parameter collectionVariable collectionclog/slog collectionDBMS_XPLAN information collectionCore file collectionAWR report collectionobproxy log collectionOMS log collectionCollect all informationOverviewCollect basic cluster informationCollect backup problem informationCollect backup cleanup problem informationCollect clog disk full problem informationCollect cluster downtime problem informationCollect merge problem informationCollect CPU high problem informationCollect information on delay issues in primary and standby databasesCollect I/O problem informationCollect log archiving problem informationCollect long transaction problem informationCollect memory problem informationCollect SQL performance problem informationCollect PX error reporting informationCollect recovery problem informationCollect observer restart information without reasonCollect owner-cutting problem informationCollect information about hanging transaction issuesCollect copy imbalance problem informationCollect SQL error reporting informationCollect cluster TopSQL informationCollect application error informationCollect obproxy restart problem information for no reasonCollect ODP parameter informationCollect unspecified scenario problem informationOne-click diagnostic analysis logOne-click full-link diagnostic log analysisParameter analysis (compared with default values)Parameter analysis (parameter differences on different observers)Analyze variablesInstructions for using index space analysisOne-click diagnostic analysis of memoryOne-click diagnosis and analysis of queue backlogOne-click root cause analysisRoot cause analysis scenario: disconnectionRoot cause analysis scenario: card merging major_holdRoot cause analysis scenario: lock conflict lock_conflictRoot cause analysis scenario: executing DDL and reporting disk full error ddl_disk_fullRoot cause analysis scenario: clog disk is full clog_disk_fullRoot cause analysis scenario: log error log_errorRoot cause analysis scenario: DDL failure ddl_failureRoot cause analysis scenario: Troubleshooting index build execution error index_ddl_errorRoot cause analysis scenario: transaction disconnection scenario transaction_disconnectionRoot cause analysis scenario: transaction execution times out and error transaction_execute_timeoutRoot cause analysis scenario: transaction does not end and error transaction_not_ending is reportedRoot cause analysis scenario: transaction other errors transaction_other_errorRoot cause analysis scenario: transaction rollback error transaction_rollbackRoot cause analysis scenario: transaction wait timeout error transaction_wait_timeoutRoot cause analysis scenario: OMS full migration exception oms_full_transRoot cause analysis scenario: OMS obcdc component analysis oms_obcdcRoot cause analysis scenario: suspended transaction suspend_transactionRoot cause analysis scenario: Unit GC exception unit_gcRoot cause analysis scenario: OceanBase cluster playback cardRoot cause analysis scenario: OceanBase cluster memory explosionRoot cause analysis scenario: Abnormal deletion of OBServer nodeRoot cause analysis scenario: GC troubleshooting gc_troubleshootingRoot cause analysis scenario: Schema leak schema_leakRoot cause analysis scenario: partition split scheduling error split_schedule_errorRoot cause analysis scenario: weak read problem troubleshooting weak_read_troubleshootingRoot cause analysis scenario: SQL execution memory is too high execute_memory_highOverviewCluster overview information insightsCluster node information insightCluster unit information insightCluster Zone Information InsightsCluster RS Information InsightsCluster tenant information insightCluster event information insightCluster lock information insightCluster topsql information insightCluster slowsql information insightCluster table information insightCluster processlist information insightSQL execution plan information insightsInsights into database disk usage informationInsight on the disk usage of the specified table in the databaseInsights into the full tenant information of the clusterCluster node CPU usage information insights
OceanBase logo

The Unified Distributed Database for the AI Era.

Follow Us
Products
OceanBase CloudOceanBase EnterpriseOceanBase Community EditionOceanBase seekdb
Resources
DocsBlogWhite PaperLive DemosTraining & CertificationTicket
Company
About OceanBaseTrust CenterLegalPartnerContact Us
Follow Us

© OceanBase 2026. All rights reserved

Cloud Service AgreementPrivacy PolicySecurity
Contact Us
Document Feedback
  1. Documentation Center
  2. OceanBase Diagnostic Tool
  3. V4.3.0
iconOceanBase Diagnostic Tool
V 4.3.0
Databases
  • OceanBase Database
  • OceanBase Cloud
  • OceanBase Tugraph
  • Interactive Tutorials
  • OceanBase Best Practices
Tools
  • OceanBase Cloud Platform
  • OceanBase Migration Service
  • OceanBase Developer Center
  • OceanBase Migration Assessment
  • OceanBase Admin Tool
  • OceanBase Loader and Dumper
  • OceanBase Deployer
  • Kubernetes operator for OceanBase
  • OceanBase Diagnostic Tool
  • OceanBase Binlog Service
Connectors and Middleware
  • OceanBase Database Proxy
  • Embedded SQL in C for OceanBase
  • OceanBase Call Interface
  • OceanBase Connector/C
  • OceanBase Connector/J
  • OceanBase Connector/ODBC
  • OceanBase Connector/NET
  • V 4.3.0
  • V 4.2.0
  • V 3.3.0
  • V 3.2.0
  • V 3.1.0
  • V 3.0.0
  • V 2.6.0
  • V 2.5.0
  • V 2.4.0
  • V 2.3.0
  • V 1.5.0
  • V 1.4.0

One-click cluster inspection

Last Updated:2026-06-30 15:09:40  Updated
Share
What is on this page
check command group
Overview
grammar
Usage example
Method 1: Use without configuration file (out of the box)
Method 2: Use with configuration file
task writing tutorial
Before starting to write
Write task script
Write package script
About manual update of task

folded

Share

This article is applicable to the scenario of independent deployment of obdiag. Using the obdiag check run command can help inspect the relevant status of the OceanBase database cluster. Currently, it supports the analysis of the OceanBase cluster from the system kernel parameters, internal tables, etc., and analyzes the causes of existing or possible abnormal problems in the cluster and provides operation and maintenance suggestions.

check command group

Overview

# List all inspection packages
obdiag check list

# Full cluster inspection (most common)
obdiag check run

# Column-store POC checks
obdiag check run --cases=column_storage_poc

# OBProxy version checks
obdiag check run --obproxy_cases=proxy

# Deployment env checks (includes docker0 since V4.2.0)
obdiag check run --cases=build_before

# Inspection tasks while running sysbench
obdiag check run --cases=sysbench_run

# Inspection tasks before sysbench
obdiag check run --cases=sysbench_free

# Run a single task
obdiag check run --observer_tasks="ls.paxo_members"

grammar

obdiag check run [options]

options description:

Option name
Is it required
Data type
Default value
Description
--cases No string Default is empty The name of the OceanBase inspection package that needs to be executed (package name). If not specified, all tasks under the default package will be executed.
--obproxy_cases No string Default is empty The name of the OBProxy inspection package that needs to be executed. If not specified, all tasks under the default package will be executed.
--observer_tasks No string Default is empty Specify the OceanBase database inspection task to be executed. Multiple tasks are separated by English semicolons (;). When specified, the OceanBase database partial inspection in --cases is ignored.
--obproxy_tasks No string Default is empty Specify the OBProxy inspection tasks to be executed. Multiple tasks are separated by English semicolons (;). The --obproxy_cases option is ignored when specified.
--store_dir No string ./check_report/ Inspection report output directory.
--report_type No string table Inspection report output format, currently supports specifying table, json, xml, yaml, html.
--env No string Default is empty Scene environment variable, format: --env key=value, can be specified multiple times. Will be used in some inspection scenarios.
-c No string ~/.obdiag/config.yml Configuration file path.
--inner_config No string Default is empty obdiag Self-configuration, format: --inner_config key=value.
--config No string Default is empty Configuration of the cluster to be diagnosed by obdiag, format: --config key1=value1 --config key2=value2. Parameters that support configuration through this option can be found in obdiag configuration.
--config_password No string Default is empty obdiag When using an encrypted configuration file, you need to pass in the corresponding password through this option. For details, see Configuration File Encryption.

Description

  • Since V3.3.0, obdiag check supports inspection tasks in the form of Python scripts, and inspection scenarios with complex logic can be written. Inspection tasks and packages are stored in ~/.obdiag/check/tasks/ (can be modified by the system configuration check.tasks_base_path).

  • Since V4.2.0, the check framework has introduced SSH connection management. You can configure max_connections_per_node (maximum number of connections per node) and idle_timeout (idle timeout seconds) through check.ssh_manager in inner_config.yml to achieve multi-tasking sharing of SSH connections per node and improve efficiency.

Usage example

Method 1: Use without configuration file (out of the box)

  • Full inspection (most commonly used)
  obdiag check run \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy
  ```* List POC check

```shell
  obdiag check run --cases=column_storage_poc \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy
  ```* OBProxy version check

```shell
  obdiag check run --obproxy_cases=proxy \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy
  ```* Deployment environment check

```shell
  obdiag check run --cases=build_before \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy
  ```* Collection of inspection tasks when executing sysbench

```shell
  obdiag check run --cases=sysbench_run \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy
  ```* Collection of inspection tasks before executing sysbench

```shell
  obdiag check run --cases=sysbench_free \
      --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.ssh_username=test \
      --config obcluster.servers.global.ssh_password=****** \
      --config obcluster.servers.global.home_path=/home/admin/oceanbase \
      --config obcluster.servers.nodes[0].data_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].redo_dir=/home/admin/oceanbase/store \
      --config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
      --config obproxy.servers.global.ssh_username=test \
      --config obproxy.servers.global.ssh_password=****** \
      --config obproxy.servers.global.home_path=/home/admin/obproxy

Method 2: Use with configuration file

Description

You need to ensure that the login information of the node to be collected has been configured in the obdiag configuration file config.yml. For related detailed configuration introduction, see obdiag configuration.

Examples are as follows:

obdiag check run

'cat ./check_report/check_report_2023-10-30-16:15:52.table', export type is table
For more details, please run cmd 'cat ./check_report/check_report_2023-10-30-16:15:52.table'
If you want to view detailed obdiag logs, please run:'obdiag display-trace --trace_id a7674ecb-0d99-36fe-b584-3b707b4647bc'

Specify configuration file:

obdiag check run -c /path/xxx_config.yml

task writing tutorial

Task is an independent inspection scenario, which can be understood as a professional script file written in yaml and recognized by obdiag.

The task will contain some pre-declarations for inspection to implement more professional inspection of OceanBase.

Before starting to write

Before writing the test.yaml file, you need to confirm the storage location of the test.yaml file.

The test.yaml file must be stored in the directory identified by CHECK.tasks_base_path set in the config.yml file. In this directory, analyze whether the written inspection scenario belongs to an existing category. If not, create a folder to declare this category.

example:

# cd ${CHECK.tasks_base_path}/observer, mkdir test, create test.yaml
cd ~/.obdiag/check/tasks/observer
mkdir test
cd test
touch test.yaml

Write task script

The function of task is to declare the steps for inspection execution. Its basic structure is a list, which is used to be compatible with different versions that may cause discrepancies in steps or the inspection project being unusable.

An example of a task file is as follows:

info: testinfo
task:
  - version: "[3.1.0,3.2.4]"
    steps:
      {steps_object}
  - version: "[4.2.0.0,4.3.0.0]"
    steps:
      {steps_object}

Parameter description:

Parameter name
Is it required
Description
info Yes Declares the usage scenario of this yaml to facilitate maintenance.
version No Indicates the applicable version, using the form of Str to represent the range, and a complete numeric version number is required.
The version of OceanBase database V3.x is three digits, for example [3.1.1,3.2.0].
OceanBase database V4.x version is four digits, for example: [4.1.0.0,4.2.0.0].
steps Yes The steps executed, which are list structures.

steps introduction

steps is also a list, used to represent multiple specific execution processes.

The structure of an element of steps is a single process, as follows:

Parameter name
Is it required
type Yes Indicates the applicable execution type, currently supports get_system_parameter/ssh/sql.
{parameter_name/ssh/sql} Yes Parameters provided based on the selected type. This depends more on the logical description of the execution type in the code.
result No The structure is a separate object, used to analyze the operations that need to be performed after this step, such as verifying the result logic, explaining the text information that needs to be reported when the logic fails, etc. For details, please refer to the result & verify function.

Examples of various types are as follows. step: is just a mark and has no practical effect.

  • get_system_parameter
  steps:
  - type: get_system_parameter
    parameter: parameter
    result:
      set_value: servervm.max_map_count
  ```*ssh
  
  Execute instructions remotely and obtain the corresponding return value.

```yaml
  steps:
  - type: ssh
    ssh: wc -l /proc/${task_OBServer_pid}/maps | awk '{print $1}'
    result:
      set_value: observerMaps
  ```*SQL

  Execute SQL and get the corresponding value.

```yaml
  steps:
  - type: sql
    sql: select tenant_name from oceanbase.table_name from where tenant_id=${taskTenantId};
    result:
      set_value: tenant_name
result & verify function

This field is also the main dependent field of the verify function, which is used to verify the results obtained by the task.

Its format is as follows:

result:
      set_value: {set_value}
      verify_type: {verify_type}
      report_type: {report_type}
      verify: {verify}
      err_msg: {err_msg}
```**Parameter description:**

| Parameter name | Is it required | Description |
|-------------|------|--------------------------------------------------------------------------------------------------|
| set_value | No | Assign the value after execution as a variable that applies to the entire task, such as `set_value: max_map_count`.                                                   |
| verify_type | No | Used to set the verification method, the default is base, generally needs to be linked with `verify`, base is to verify through the expression of `verify`, the output result is `true` or `false`, and the following common judgment types are provided to reduce the amount of writing. |
| verify | No | Serves verify_type, used to verify whether the execution result meets expectations. If not, the information in the `err_msg` part will be output.                                                    |
| report_type | No | Used to set the alarm level that needs to be executed if `verify` is `false` in this step. The default alarm level is `critical`.                                                  |
| err_msg | No | Used for logs allowed during abnormal execution. It supports configuring global variables. The msg output when `verify` is `false`. It is recommended that `verify` be configured, and `err_msg` must be configured.                      |

**`verify_type` supported types**

Types currently supported by verify_type, except base, are only applicable to int types.

* `between`: Determine whether the value of `set_value` is within the range provided by `verify`.

* `max`: Determine whether the value of `set_value` is less than the value provided by `verify`.

* `min`: Determine whether the value of `set_value` is greater than the value provided by `verify`.

* `equal`: Determine whether the value of `set_value` is equal to the value provided by `verify`.

**Notes on base**

The `verify` expression will be used to replace `new_expr` in the following shell formula for execution verification. When writing verify, you can manually perform logical verification locally.

```shell
if ${new_expr}; then
    echo "true"
else
    echo "false"
fi

Write package script

The package script currently contains observer_check_pakage.yaml and obproxy_check_package.yaml, which correspond to the inspection packages of observer and proxy respectively.

The structure of the package itself is a large dict with the following structure:

{case_name}:
  info_en: "" # English description of this package
  info_cn: "" # Chinese description of this package
  tasks:
    {tasks_names} # List of one or more task names

After the package script is written, you can view the currently available case list through the obdiag check list command.

About manual update of task

In order to better provide more effective detection tasks, we will update the quantity and quality of tasks from time to time. You can obtain the latest inspection tasks and packages from the plugins/check/ directory of obdiag code repository, copy them to the local ~/.obdiag/check/tasks (or the directory specified by the system configuration check.tasks_base_path), and update *check_package.yaml synchronously (such as ~/.obdiag/check/*check_package.yaml) to update the inspection package. Hot updates can also be performed via obdiag update.

Previous topic

obdiag configuration
Last

Next topic

Detailed explanation of cluster inspection indicators
Next
What is on this page
check command group
Overview
grammar
Usage example
Method 1: Use without configuration file (out of the box)
Method 2: Use with configuration file
task writing tutorial
Before starting to write
Write task script
Write package script
About manual update of task