KingbaseES 数据库可观测性最佳实践

本文介绍如何将 KES(KingbaseES)数据库接入观测云,围绕数据库运行全生命周期建立统一的可观测体系,提升数据库运行的稳定性与可控性。

最佳实践
banner.png

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执行情况进行持续跟踪,并与日志、链路数据进行关联分析。这样不仅能够清晰还原问题发生路径,还能显著缩短排查与恢复时间。

在实际落地中,该方案无需改造业务系统,即可提供可视化分析与智能告警能力,帮助运维团队从“被动处理问题”转向“主动发现风险”,从而提升数据库运行的稳定性与可控性,更好支撑信创环境下核心业务的长期稳定运行。

Get a tailored plan

Contact us

Join the community

Scan with WeChat
to join the community

Try Guance

Start online and pay only for what you use.

Get started

Choose a Guance plan

Code hosting