OceanBase logo

OceanBase

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

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

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

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

V3.3.0

  • Overview
  • Install obdiag
  • Configure obdiag
  • One-click Cluster Inspection
    • Use obdiag to inspect an OceanBase cluster
    • Inspection metrics
  • One-click Information Collection
    • One-click General Information Collection
      • obdiag gather log
      • obdiag gather sysstat
      • obdiag gather plan_monitor
      • obdiag gather stack
      • obdiag gather perf
      • obdiag gather ash
      • obdiag gather tabledump
      • obdiag gather parameter
      • obdiag gather variable
      • obdiag gather clog/obdiag gather slog
      • obdiag gather obproxy_log
      • obdiag gather all
    • One-click Scenario-based Information Collection
      • Overview
      • observer.base
      • observer.backup
      • observer.backup_clean
      • observer.clog_disk_full
      • observer.cluster_down
      • observer.compaction
      • observer.cpu_high
      • observer.delay_of_primary_and_backup
      • observer.io
      • observer.log_archive
      • observer.long_transaction
      • observer.memory
      • observer.perf_sql
      • observer.px_collect_log
      • observer.recovery
      • observer.restart
      • observer.rootservice_switch
      • observer.suspend_transaction
      • observer.unit_data_imbalance
      • observer.perf_sql
      • observer.topsql
      • other.application_error
      • obproxy.restart
      • observer.unknown
  • One-click Diagnostic Analysis
    • obdiag analyze log
    • obdiag analyze flt_trace
    • obdiag analyze parameter default
    • obdiag analyze parameter diff
    • obdiag analyze variable diff
    • obdiag analyze index_space
    • obdiag analyze memory
    • obdiag analyze queue
  • One-click Root Cause Analysis
    • Use obdiag for root cause analysis
    • disconnection
    • major_hold
    • lock_conflict
    • ddl_disk_full
    • clog_disk_full
    • log_error
    • ddl_failure
    • index_ddl_error
    • transaction_disconnection
    • transaction_execute_timeout
    • transaction_not_ending
    • transaction_other_error
    • transaction_rollback
    • transaction_wait_timeout
    • oms_full_trans
    • oms_obcdc
    • suspend_transaction
  • One-click Cluster Display
    • Overview
    • Basic information of a cluster
    • Information about nodes in a cluster
    • Information about units in a cluster
    • Information about zones in a cluster
    • RootService information of a cluster
    • Information about tenants in a cluster
    • Information about events in a cluster
    • Information about locks in a cluster
    • Information about top SQL statements in a cluster
    • Information about slow SQL statements in a cluster
    • Information about tables in a cluster
    • Information about the process list in a tenant
    • Information about the execution plan of an SQL statement
    • Disk usage of a database
    • Disk usage of the specified table in a database
    • Information about all tenants in a cluster
    • Information about CPU utilization of nodes in a cluster
    • Internal table names fuzzy matched with the specified keyword
    • Information about leaders in a cluster
    • Information about locks on a table
    • Information about long-running transactions in a cluster
    • Information about operators in the actually executed plan
    • Information about the memory of all tenants
    • Information about statistics on real-time sessions of the process list
    • Information about the storage method of tables and indexes
    • Information about column NDVs of a table
    • Information about table indexes
  • Upgrade obdiag by using add-on files
  • Upgrade and uninstall obdiag
  • Telemetry Mode
  • FAQ
  • Release Notes
    • 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

Overview Install obdiag Configure obdiag Use obdiag to inspect an OceanBase cluster Inspection metrics obdiag gather log obdiag gather sysstat obdiag gather plan_monitor obdiag gather stack obdiag gather perf obdiag gather ash obdiag gather tabledump obdiag gather parameter obdiag gather variable obdiag gather clog/obdiag gather slog obdiag gather obproxy_log obdiag gather all Overview observer.base observer.backup observer.backup_clean observer.clog_disk_full observer.cluster_down observer.compaction observer.cpu_high observer.delay_of_primary_and_backup observer.io observer.log_archive observer.long_transaction observer.memory observer.perf_sql observer.px_collect_log observer.recovery observer.restart observer.rootservice_switch observer.suspend_transaction observer.unit_data_imbalance observer.perf_sql observer.topsql other.application_error obproxy.restart observer.unknown obdiag analyze log obdiag analyze flt_trace obdiag analyze parameter default obdiag analyze parameter diff obdiag analyze variable diff obdiag analyze index_space obdiag analyze memory obdiag analyze queue Use obdiag for root cause analysis disconnection major_hold lock_conflict ddl_disk_full clog_disk_full log_error ddl_failure index_ddl_error transaction_disconnection transaction_execute_timeout transaction_not_ending transaction_other_error transaction_rollback transaction_wait_timeout oms_full_trans oms_obcdc suspend_transaction Overview Basic information of a cluster Information about nodes in a cluster Information about units in a cluster Information about zones in a cluster RootService information of a cluster Information about tenants in a cluster Information about events in a cluster Information about locks in a cluster Information about top SQL statements in a cluster Information about slow SQL statements in a cluster Information about tables in a cluster Information about the process list in a tenant Information about the execution plan of an SQL statement Disk usage of a database Disk usage of the specified table in a database Information about all tenants in a cluster Information about CPU utilization of nodes in a cluster Internal table names fuzzy matched with the specified keyword Information about leaders in a cluster Information about locks on a table Information about long-running transactions in a cluster Information about operators in the actually executed plan Information about the memory of all tenants Information about statistics on real-time sessions of the process list Information about the storage method of tables and indexes Information about column NDVs of a table Information about table indexes Upgrade obdiag by using add-on files Upgrade and uninstall obdiag Telemetry Mode FAQ
OceanBase logo

The Unified Distributed Database for the AI Era.

Follow Us
Products
OceanBase CloudOceanBase EnterpriseOceanBase Community EditionOceanBase seekdb
Resources
DocsBlogLive DemosTraining & Certification
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. V3.3.0
iconOceanBase Diagnostic Tool
V 3.3.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

obdiag gather log

Last Updated:2026-04-13 09:12:30  Updated
share
What is on this page
Syntax
Examples
Method 1: Use the command out-of-the-box without a configuration file
Method 2: Use the command with a configuration file
Results
Define a data desensitization rule
Complete sample code

folded

share

If OceanBase Diagnostic Tool (obdiag) is independently deployed, you can run the obdiag gather log command to collect logs of the specified OceanBase cluster.

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 log [options]

The following table describes the options.

Option Required Data type Default value Description
--from No string Empty The start time of log collection in the yyyy-mm-dd hh:mm:ss format.

Note

If the obdiag version is earlier than V.2.0.0, do not enclose the parameter value in quotation marks. Otherwise, an error is returned. This limitation does not apply to V2.0.0 or later.

--to No string Empty The end time of log collection in the yyyy-mm-dd hh:mm:ss format.

Note

If the obdiag version is earlier than V.2.0.0, do not enclose the parameter value in quotation marks. Otherwise, an error is returned. This limitation does not apply to V2.0.0 or later.

--since No string Empty The most recent period of time for log collection, in the <n> <m|h|d> format, where n specifies the time value, m represents "minute", h represents "hour", and d represents "day". For example, 30m specifies to collect logs of the last 30 minutes.
--scope No string all The type of logs of the OceanBase cluster to be collected. Valid values: observer, election, rootservice, and all.
--grep No string Empty The search keyword.
--store_dir No string The current path where the command is executed The local path where the results are stored.
--temp_dir No string /tmp The directory where temporary files generated by the remote node during log collection are stored.
--redact No string Empty The data desensitization rule, such as all_sql. If multiple rules are specified, separate them with commas (,). For more information about how to define a data desensitization rule, see the Define a data desensitization rule section in this topic.

Note

The data desensitization results are stored in a .zip file, which is not encrypted. You can manually encrypt it.

-c No string ~/.obdiag/config.yml The path of the configuration file.
--inner_config No string Empty The configurations of obdiag, in the format of --inner_config key1=value1 --inner_config key2=value2.

Note

For information about the parameters supported by this option, see System configuration file.

--config No string Empty The configurations of the cluster diagnosed by obdiag, in the format of --config key1=value1 --config key2=value2.

Note

For 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

  • Collect logs of the specified period

    obdiag gather log --from "2022-06-30 16:25:00" --to "2022-06-30 18:30:00" \
        --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.ssh_username=test \
        --config obcluster.servers.global.ssh_password=****** \
        --config obcluster.servers.global.home_path=/home/admin/oceanbase
    

    The output is as follows:

    ...
    ZipFileInfo:
    +-------------------+-----------+
    | Node              | LogSize   |
    +===================+===========+
    | xxx.xxx.xxx.xxx   | 36.184M   |
    +-------------------+-----------+
    ...
    
    ZipFileInfo:
    +-------------------+-----------+
    | Node              | LogSize   |
    +===================+===========+
    | xxx.xxx.xxx.xxx   | 44.176M   |
    +-------------------+-----------+
    ...
    
    Summary:
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    | Node              | Status    | Size     | Time   | PackPath                                                                      |
    +===================+===========+==========+========+===============================================================================+
    | xxx.xxx.xxx.xxx   | Completed | 36.762M  | 19 s   | obdiag_gather_pack_20220701183246/ob_log_xxx.xxx.xxx.xxx_20220701183247.zip   |
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    | xxx.xxx.xxx.xxx   | Completed | 638.200M | 718 s  | obdiag_gather_pack_20220701183246/ob_log_xxx.xxx.xxx.xxx_20220701183918.zip   |
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    

    Notice

    If encryption is enabled, collected logs are encrypted when being compressed. The value in the Password column indicates the password for decrypting the .zip package. Encryption is disabled by default.

  • Collect logs of a recent period

    # Collect logs of the last hour with the target nodes accessible to obdiag without a password.
    obdiag gather log --since 1h \
      --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
    
    # Collect logs of the last hour with the target nodes accessible to obdiag without a password, and specify to collect at most 300 MB of logs stored in at most five log files from a single node. Note that if a node contains more than 300 MB of logs or more than five log files, obdiag does not collect logs from the node.
    obdiag gather log --since 1h \
      --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 \
      --inner_config obdiag.basic.file_number_limit=5
      --inner_config obdiag.basic.file_size_limit=300M
    
    # Collect logs of the last hour with the target nodes accessible to obdiag without a password, and specify to collect at most 1 GB of logs stored in at most five log files from a single node. Note that if a node contains more than 1 GB of logs or more than five log files, obdiag does not collect logs from the node.
    obdiag gather log --since 1h \
      --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 \
      --inner_config obdiag.basic.file_number_limit=5
      --inner_config obdiag.basic.file_size_limit=1G
    
    # Collect logs of the last 30 minutes with the target nodes accessible to obdiag without a password.
    obdiag gather log --since 30m \
      --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
    
    # Collect logs of the last 30 minutes with the information on different OBServer nodes varying.
    obdiag gather log --since 30m \
      --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/test1/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/oceanbase
    
    # Collect logs of the last hour with the connection information of the sys tenant specified. In this case, obdiag automatically obtains the IP addresses of all nodes in the cluster.
    obdiag gather log --since 1h \
      --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
    
  • Collect logs filtered by keyword

    # Collect logs of the last 30 minutes with logs filtered by "TRACE_ID".
    obdiag gather log --grep "TRACE_ID"  \
      --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
    
    # Collect logs of the last 30 minutes with logs filtered by multiple keywords, such as "AAAAA" and "BBBBB".
    obdiag gather log --grep "AAAAA" --grep "BBBBB" \
      --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
    
    # Collect logs of the specified period with logs filtered by multiple keywords, such as "AAAAA" and "BBBBB".
    obdiag gather log --from "2022-06-30 16:25:00" --to "2022-06-30 18:30:00" --grep "AAAAA" --grep "BBBBB" \
      --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
    

    Notice

    If logs are filtered by multiple keywords, the keywords are evaluated by using the AND operator. In other words, only logs that contain all the specified keywords are collected.

Method 2: Use the command with a configuration file

Before you use obdiag, make sure that you have configured the login information of the target nodes in the config.yml file in the ~/.obdiag directory. For more information, see Configure obdiag.

  • Collect logs of the specified period

    obdiag gather log --from "2022-06-30 16:25:00" --to "2022-06-30 18:30:00"
    

    The output is as follows:

    ...
    ZipFileInfo:
    +-------------------+-----------+
    | Node              | LogSize   |
    +===================+===========+
    | xxx.xxx.xxx.xxx   | 36.184M   |
    +-------------------+-----------+
    ...
    
    ZipFileInfo:
    +-------------------+-----------+
    | Node              | LogSize   |
    +===================+===========+
    | xxx.xxx.xxx.xxx   | 44.176M   |
    +-------------------+-----------+
    ...
    
    Summary:
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    | Node              | Status    | Size     | Time   | PackPath                                                                      |
    +===================+===========+==========+========+===============================================================================+
    | xxx.xxx.xxx.xxx   | Completed | 36.762M  | 19 s   | obdiag_gather_pack_20220701183246/ob_log_xxx.xxx.xxx.xxx_20220701183247.zip   |
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    | xxx.xxx.xxx.xxx   | Completed | 638.200M | 718 s  | obdiag_gather_pack_20220701183246/ob_log_xxx.xxx.xxx.xxx_20220701183918.zip   |
    +-------------------+-----------+----------+--------+-------------------------------------------------------------------------------+
    
    

    Notice

    If encryption is enabled, collected logs are encrypted when being compressed. The value in the Password column indicates the password for decrypting the .zip package. Encryption is disabled by default.

  • Collect logs of a recent period

    # Collect logs of the last hour.
    obdiag gather log --since 1h
    
    # Collect logs of the last 30 minutes.
    obdiag gather log --since 30m
    
    # Collect logs of the last 30 minutes with the configuration file of the target cluster specified.
    obdiag gather log --since 30m -c /root/config.yml
    
  • Collect logs filtered by keyword

    # Collect logs of the last 30 minutes with logs filtered by "TRACE_ID".
    obdiag gather log --grep "TRACE_ID"
    
    # Collect logs of the last 30 minutes with logs filtered by multiple keywords, such as "AAAAA" and "BBBBB".
    obdiag gather log --grep "AAAAA" --grep "BBBBB"
    
    # Collect logs of the specified period with logs filtered by multiple keywords, such as "AAAAA" and "BBBBB".
    obdiag gather log --from "2022-06-30 16:25:00" --to "2022-06-30 18:30:00" --grep "AAAAA" --grep "BBBBB"
    

    Notice

    If logs are filtered by multiple keywords, the keywords are evaluated by using the AND operator. In other words, only logs that contain all the specified keywords are collected.

Results

The command generates a folder in the specified directory. A sample folder name is obdiag_gather_pack_20240808105846.

Define a data desensitization rule

In most cases, data desensitization rules are defined on the business side. In other words, sensitive data is defined by users. obdiag supports custom data desensitization rules in V2.5.0 and later. Data desensitization rule files are stored in the ~/.obdiag/gather/redact/ directory. Each .py file corresponds to a data desensitization rule. The file name is the rule name.

This section describes how to define a data desensitization rule named a_test.

  1. Create a rule file.

    In the ~/.obdiag/gather/redact/ directory, create a rule file named a_test.py, which is also the rule name. In other words, a file with the absolute path ~/.obdiag/gather/redact/a_test.py is created.

  2. Create a rule class.

    To facilitate management, you need to create a rule class to inherit the RedactBase class. You can define the class name, which is usually the same as the file name. Here is an example:

    from handler.gather.plugins.redact import RedactBase
    class a_test(RedactBase):
    
  3. Create a rule method.

    The rule class needs to implement the redact method. text is the input file content, which is not split into lines. You can split the content as needed.

    text_lines = text.split('\n')
    
  4. Return the processed information as a string.

    If the file content is split into lines, the processing time increases greatly. We recommend that you do not split the file content unless necessary.

  5. Create a rule instance.

    You need to set a variable named after the rule name for being called by the obdiag kernel. In this example, you need to set the a_test variable as follows:

    a_test = a_test()
    

Complete sample code

from handler.gather.plugins.redact import RedactBase
import re
class a_test(RedactBase):
    def redact(self, text):
        text_lines = text.split('\n')
        redacted_log = ''
        for line in text_lines:
            if 'test' in line:
                redacted_log = redacted_log + re.sub('test', '******', line)
        return redacted_log
a_test = a_test()

Previous topic

Inspection metrics
Last

Next topic

obdiag gather sysstat
Next
What is on this page
Syntax
Examples
Method 1: Use the command out-of-the-box without a configuration file
Method 2: Use the command with a configuration file
Results
Define a data desensitization rule
Complete sample code