KingbaseES 数据库可观测性最佳实践
Kingbase 介绍
KingbaseES(Kingbase Enterprise Server)是由人大金仓自主研发的企业级关系型数据库,基于 PostgreSQL 内核优化,具备高可靠、高安全和高性能特性。
其兼容 SQL 标准及主流数据库语法(如 Oracle),支持事务与分析混合负载,广泛应用于政务、金融等关键行业,满足信创环境下自主可控要求,并提供完善的高可用与容灾能力。
在生产环境中,引入可观测能力可及时发现慢查询、锁等待等隐性问题,实现快速定位与预警,降低故障影响,保障业务稳定运行。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,集成基础设施监控、应用性能监控(APM)与日志管理,能够为整个技术栈提供实时可观测能力。结合 KingbaseES 数据库使用时,可对数据库关键指标、慢查询、锁等待及调用链进行统一观测与关联分析,实现从应用到数据库的端到端问题定位。
通过这种一体化可观测能力,工程师不仅可以快速发现性能瓶颈与异常,还能提前预警潜在风险,提升故障处理效率与系统稳定性,进一步保障核心业务在信创环境下的安全与可靠运行。
安装 KingbaseES
参考文档:https://docs.kingbase.com.cn/cn/KES-V9R1C10/install/02-docker-install/
1、使用root用户执行创建数据库持久化存储路径,在宿主机执行如下命令:
mkdir -p /opt/kingbase
mkdir -p /opt/kingbase/data
chmod -R 755 /opt/kingbase/data
2、导入镜像
下载地址:https://www.kingbase.com.cn/download.html
docker load -i /opt/kingbase/kingbase.tar
3、运行容器
docker run -idt --privileged \
-p 5432:5432 \
-v /opt/kingbase/data:/home/kingbase/userdata \
--restart=always \
-e NEED_START=yes \
-e DB_USER=root \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle \
-e ENCODING=UTF8 \
--name kingbase \
kingbase_v009r001c010b0004_single_x86:v1 \
/usr/sbin/init
部署 DataKit
DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。
登录观测云控制台,在「集成」 - 「DataKit」 选择对应安装方式,当前采用 Linux 主机部署 DataKit。

采集器安装方法
前置条件
-- 创建监控用户
CREATE USER datakit with password 'datakit';
-- 授权(兼容不同版本)
DO $$
BEGIN
BEGIN
GRANT sys_monitor TO datakit;
RAISE NOTICE 'granted sys_monitor';
EXCEPTION WHEN undefined_object THEN
GRANT pg_monitor TO datakit;
RAISE NOTICE 'granted pg_monitor';
END;
END $$;
采集器配置
1、进入 DataKit 安装目录下的 conf.d/samples 目录,复制 kingbase.conf.sample 并命名为 kingbase.conf
2、提取名为 kingbase 的容器的 IP 信息,用于host
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kingbase

[[inputs.kingbase]]
# host name
host = "172.17.0.2"
## port
port = 54321
## user name
user = "datakit"
## password
password = "datakit"
## database name
database = "kingbase"
## 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"
场景视图
登录观测云控制台,点击「场景」-「新建仪表板」,在模板列表中选择 “Kingbase 监控视图”,即可快速创建 KES 数据库的监控仪表板。

监控器(告警)
观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。
登录 观测云控制台,点击「监控」 -「新建监控器」,输入 “Kingbase”, 选择对应的监控器,点击 “确定” 即可添加

总结
将 KES(KingbaseES)数据库接入观测云后,可以围绕数据库运行全生命周期建立统一的可观测体系,对连接、性能、资源消耗及SQL执行情况进行持续跟踪,并与日志、链路数据进行关联分析。这样不仅能够清晰还原问题发生路径,还能显著缩短排查与恢复时间。
在实际落地中,该方案无需改造业务系统,即可提供可视化分析与智能告警能力,帮助运维团队从“被动处理问题”转向“主动发现风险”,从而提升数据库运行的稳定性与可控性,更好支撑信创环境下核心业务的长期稳定运行。