Kingbase
Kingbase collector can collect the running status index from Kingbase instance.
Configuration¶
Preconditions¶
- Create user
-- Create monitor user
CREATE USER datakit with password 'datakit';
-- Grant
GRANT sys_monitor TO datakit;
- Enable sys_stat_statements extended logging
Edit the kingbase.conf
configuration file and change the value of sys_stat_statements.track
to top
.
# track statistics SQL statement access, recommended top, default none
sys_stat_statements.track = 'top'
Collector Configuration¶
Go to the conf.d/db
directory under the DataKit installation directory, copy kingbase.conf.sample
and name it kingbase.conf
. Examples are as follows:
[[inputs.kingbase]]
# host name
host = "localhost"
## port
port = 54321
## user name
user = "datakit"
## password
password = "datakit"
## database name
database = "test"
## Slow query threshold in milliseconds, default 1000
slow_query_threshold = 1000
## @param connect_timeout - number - optional - default: 10s
# connect_timeout = "10s"
interval = "10s"
## Set true to enable election
election = true
## Metric name in metric_exclude_list will not be collected.
#
metric_exclude_list = [""]
## Run a custom SQL query and collect corresponding metrics.
#
# [[inputs.kingbase.custom_queries]]
# sql = "SELECT datname AS db, numbackends AS backends FROM sys_catalog.sys_stat_database"
# metric = "kingbase_custom_query"
# tags = ["db"]
# fields = ["backends"]
# interval = "30s"
## Log collection
#
[inputs.kingbase.log]
# files = []
# pipeline = "kingbase.p"
## The pattern should be a regexp. Note the use of '''this regexp'''
## regexp link: https://golang.org/pkg/regexp/syntax/#hdr-Syntax
multiline_match = '''^\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}\\s+\\[.*?\\]'''
[inputs.kingbase.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
After configuration, restart DataKit.
The collector can now be turned on by ConfigMap Injection Collector Configuration.
Metric¶
For all of the following data collections, the global election tags will added automatically, we can add extra tags in [inputs.kingbase.tags]
if needed:
kingbase_connections
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
active_connections | Number of active connections to the database. Type: int Unit: count |
idle_connections | Number of idle connections in the database. Type: int Unit: count |
max_connections | Maximum number of connections allowed. Type: int Unit: count |
kingbase_transactions
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
commits | Number of transactions committed. Type: int Unit: count |
rollbacks | Number of transactions rolled back. Type: int Unit: count |
kingbase_query_performance
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
mean_exec_time | Mean query execution time Type: float Unit: time,ms |
kingbase_locks
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
waiting_locks | Number of waiting locks in the database. Type: int Unit: count |
kingbase_query_stats
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
queryid ( tag ) |
Unique identifier of the query |
calls | Number of times the query was executed. Type: int Unit: count |
rows | Number of rows returned by the query. Type: int Unit: count |
shared_blks_hit | Number of shared buffer blocks hit. Type: int Unit: count |
shared_blks_read | Number of shared buffer blocks read. Type: int Unit: count |
total_time | Total execution time of the query in milliseconds. Type: float Unit: time,ms |
kingbase_buffer_cache
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
buffer_hit_ratio | Buffer cache hit ratio as a percentage. Type: float Unit: percent,percent |
shared_blks_hit | Number of shared buffer blocks hit. Type: int Unit: count |
shared_blks_read | Number of shared buffer blocks read. Type: int Unit: count |
kingbase_database_status
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
blks_hit | Blocks hit Type: int Unit: count |
blks_read | Blocks read Type: int Unit: count |
conflicts | The number of conflicts occurred. Type: int Unit: count |
numbackends | Number of backends Type: int Unit: count |
tup_deleted | Tuples deleted Type: int Unit: count |
tup_inserted | Tuples inserted Type: int Unit: count |
tup_updated | Tuples updated Type: int Unit: count |
kingbase_tablespace
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
spcname ( tag ) |
Tablespace name |
size_bytes | Tablespace size in bytes Type: int Unit: digital,B |
kingbase_lock_details
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
lock_type ( tag ) |
Type of the lock (e.g., relation, tuple) |
lock_count | Number of locks of a specific type. Type: int Unit: count |
kingbase_index_usage
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
idx_scan | Number of index scans. Type: int Unit: count |
index_hit_ratio | Index hit ratio as a percentage. Type: float Unit: percent,percent |
seq_scan | Number of sequential scans. Type: int Unit: count |
kingbase_bgwriter
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
buffers_backend | Number of buffers written by backends. Type: int Unit: count |
buffers_clean | Number of buffers written by the background writer. Type: int Unit: count |
checkpoints_req | Number of requested checkpoints. Type: int Unit: count |
checkpoints_timed | Number of timed checkpoints. Type: int Unit: count |
kingbase_session_activity
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
state ( tag ) |
Session state (e.g., active, idle) |
wait_event ( tag ) |
Wait event (e.g., LWLock, IO) |
session_count | Number of sessions in a specific state or wait event. Type: int Unit: count |
kingbase_query_cancellation
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
deadlocks | Number of deadlocks detected in the database. Type: int Unit: count |
temp_files | Number of temporary files created by queries. Type: int Unit: count |
kingbase_function_stats
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
funcname ( tag ) |
The name of the function |
host ( tag ) |
The server address or the host name |
schemaname ( tag ) |
The schema name of the function |
calls | Number of times the function has been called. Type: int Unit: count |
self_time | Time spent in the function itself, excluding sub-functions (milliseconds). Type: float Unit: time,ms |
total_time | Total time spent in the function, including sub-functions (milliseconds). Type: float Unit: time,ms |
kingbase_slow_query
¶
Tags & Fields | Description |
---|---|
database ( tag ) |
The name of the database |
host ( tag ) |
The server address or the host name |
query ( tag ) |
Truncated SQL query text |
queryid ( tag ) |
Unique identifier of the query |
calls | Number of times the query has been executed. Type: int Unit: count |
mean_exec_time | Average execution time per query call (milliseconds). Type: float Unit: time,ms |
total_exec_time | Total execution time of the query (milliseconds). Type: float Unit: time,ms |
Custom Object¶
Log Collection¶
- To enable Kingbase runtime logging, configure the Kingbase configuration file
kingbase.conf
in the data directory as follows:
- The Kingbase collector does not have log collection enabled by default. You can open
files
inconf.d/db/kingbase.conf
and write to the absolute path of the Kingbase log file. For example:
When log collection is turned on, a log with a log source
of kingbase
is generated by default.
Notices:
- Log collection only supports logs on hosts where DataKit is installed.
Log Pipeline Cut¶
The original log is
2025-06-17 13:07:10.952 UTC [999] ERROR: relation "sys_stat_activity" does not exist at character 240
Description of the cut field:
Field name | Field Value | Description |
---|---|---|
msg |
relation "sys_stat_activity" does not exist at character 240 |
Log content |
db_name |
test |
Database accessed |
process_id |
999 |
The client process ID of the current connection |
status |
ERROR |
Current log level (LOG,ERROR,FATAL,PANIC,WARNING,NOTICE,INFO) |
time |
1750136961776000000 |
Log generation time |