暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

人大金仓 KingbaseES 监控利器 KMonitor:部署策略与实战应用

原创 jiayou 2024-06-25
1242

人大金仓 KingbaseES 监控利器 KMonitor:部署策略与实战应用

一、人大金仓KMonitor工具简述

KMonitor(金仓数据库监控工具)是一款KES数据库的全访问监控平台,可对服务器状态、数据库资源和数据库性能、集群情况进行全天候监控和告警,使用户全面掌握KES运行情况、健康状况,及时获取异常信息并快速做出合理应对,保障数据库及业务应用安全。此外,DBA用户也可通过直观丰富的数据库性能报表,快速排查故障问题以及进行容量规划。

核心功能

  • 全方位监控:KMonitor支持对服务器状态、数据库资源和数据库性能、集群情况等多维度多指标的监控,确保用户能够全面掌握数据库的运行情况和健康状况。
  • 告警功能:该系统提供邮件、短信等多种告警方式,以便在检测到异常或潜在故障时,能够及时向用户发出告警信息,帮助用户快速响应和处理。
  • 可视化展示:KMonitor通过直观的可视化界面,展示数据库的各项指标和监控状况,包括CPU、内存、磁盘使用率、磁盘读写的吞吐量、TCP连接状态等,使用户能够更直观地了解数据库的运行状态。

核心优势

  • 多维度性能指标分析:KMonitor支持对服务器、数据库资源、性能、集群等多维度多指标的监控、管理、可视化展示和综合分析,帮助用户全面了解数据库的运行状况。
  • 故障预警与定位:通过专业的指标监控规则设计和问题分析与定位功能,KMonitor能够提前预知故障风险,并及时发出告警信息。同时,它还提供故障发生时的各项指标数据,辅助用户进行故障分析和定位。
  • 灵活个性化配置:KMonitor支持自定义监控展现样式和监控指标,告警指标和告警方式也可灵活配置,满足不同用户的个性化需求。

二、部署概要

本文通过虚拟机部署KMonitor工具演示监控KingbaseESV9R1集群。

最新版安装介质,联系工具研发中心项目经理获取下载地址 tar -zxzf KMonitor_*_ 数据库版本_ 服务器架构.tar.gz && cd monitor

三、拓扑规划

官方监控系统建议部署架构图:

  • 建议将监控服务kmonitor、prometheus、consul、alertmanager单独部署于监控服务器。
  • 连接集群时,主节点部署kingbase_exporter以及node_exporter,备节点仅部署node_exporter。
  • 单机部署时同时部署kingbase_exporter和node_exporter。

本次实验环境

节点名称

数据库版本

操作系统版本

IP

配置

appnode1

KingbaseESV9R1

Redhat7.8

192.168.126.10

主节点、Kmonitor监控节点

dbnode1

KingbaseESV9R1

Redhat7.8

192.168.126.11

备节点、node_exporter节点

adminnode

KingbaseESV9R1

Redhat7.8

192.168.126.110

Yum&&NTP&&witness点

四、环境准备

1、KMonitor监控系统安装包结构

1.工具目录

脚本工具除init_sql外都存放于monitor/scripts目录

init_sql

数据库初始化SQL脚本目录,位于monitor/kingbase_exporter目录下,包括以下脚本:

  • kmonitor_user.sql:创建监控用户语句
  • kmonitor_r3_pg.sql:创建监控用户语句,R3版本qps、tps函数创建语句
  • kmonitor_r6_oracle.sql:创建监控用户语句,R6版本oracle模式qps、tps函数创建 语句
  • kmonitor_r6_mysql.sql:创建监控用户语句,R6版本mysql模式qps、tps函数创建语 句
  • kmonitor_r6_pg.sql:创建监控用户语句,R6版本pg模式qps、tps函数创建语句 注意:当前R6版本中已自带qps、tps函数,仅部分老版本需要手动创建

# 使用方法: ksql test system -f monitor/kingbase_exporter/init_sql/filename.sql

jasypt.sh

明文加密脚本(仅支持kmonitor.properties中 KINGBASE_PASSWD 参数以及 kingbase_exporter/application.yaml 中加密参数):

# 使用方法: cd monitor/scripts bash jasypt.sh passwd # OUTPUT下为加密文本,生成多次直至仅包含大小字母和数字时可用

systemctl.sh

配置系统服务脚本,将 KMONITOR_SERVER 参数中服务添加至系统服务中,包括开机 自启和宕机拉起功能,需要root权限执行:

# 使用方法: bash monitor/scripts/systemctl.sh

KMonitorTool.jar

监控服务工具包,支持prom导出excel、操作KRDS下发实例等功能

2.服务说明

集成脚本

kmonitor.sh为集成脚本,负责一键启停本地所有服务,包括start、stop、restart、 status、register参数

服务脚本

服务目录/*_ctl,sh为服务脚本,配置系统服务和集成脚本都依赖此脚本,负责启动当前目 录服务,包括start、stop、restart、status参数

数据库采集器

monitor/kingbase_exporter为数据库采集器工作目录,使用服务脚本启动时,会根据 properties配置文件中信息进行初始化后启动,默认HTTP服务地址为 http://localhost:1234/kingbase

application.yaml中包含所有指标单独开关

服务器采集器

monitor/node_exporter为服务器采集器工作目录,使用服务脚本启动时,会根据 properties配置文件中信息进行初始化后启动,默认HTTP服务地址为 http://localhost:9200/metrics

2、创建服务器监控用户

建议部署在kingbase用户家目录,或单独部署在kmonitor用户家目录。

useradd -m -s /bin/bash -d /home/kmonitor kmonitor

建议:所有安装节点使用相同用户

3、JAVA环境配置

java --version

注意:kingbase_exporter运行依赖JAVA环境,至少1.8版本

4、上传相关安装包

监控服务部署节点使用KMonitor*.tar.gz安装包,其余被监控节点使用 KMonitor_Exporter*.tar.gz安装包

5、时间同步

在启动KMonitor监控系统前,请确保集群内部时间同步,以及客户端与服务端时间差小于5分钟。

6、执行权限

在进行KMonitor监控部署时,请确保安装包解压后的执行程序具有可执行权限,如果权限不足执行对应报错程序的授权命令(执行授权命令时,确保执行命令用户具有授权权限)。

7、网络权限

在进行KMonitor监控部署时,请确保各服务器之间网络通畅,防止出现网络问题导致的安装失败,使用以下命令检查端口号。

telnet $IP $PORT

8、当前集群信息

确认主库和备库(图中显示:node1是主库、node2是备库、node5是仲裁库)

repmgr cluster show

repmgr service status

确认同步备库、异步备库(图中显示:node2是同步备库)

ksql -h 192.168.126.10 -U system -d test

SELECT application_name,client_addr,state,sync_priority,sync_state FROM sys_stat_replication;

五、安装与配置

1、解压相关文件(主节点)

主节点上传并解压

$ tar -zxf KMonitor_V003R001C001B20240528R6_x86_64.tar.gz

$ cd monitor/

2、创建数据库监控用户

创建监控kmonitor用户并授权。

$ ksql test system -f kingbase_exporter/init_sql/kmonitor_user.sql

-- 创建监控用户 CREATE USER kmonitor with password 'kmonitor';

-- 添加用户标注 COMMENTON ROLE kmonitor IS'kingbase KMonitor user'; -- 授权监控用户 GRANT pg_monitor TO kmonitor;

-- 授权监控用户使用 kwr 扩展

-- 未开启 kwr 插件或不支持 kwr 插件版本请执行 scripts/FunctionInit_ 数据库版本_ 模式.sql 中对应版本创建语句 GRANT USAGE ON SCHEMA perf TO kmonitor;

3、修改配置文件kmonitor.properties(主节点)

$ monitor.properties kmonitor.properties.bak

$ vi kmonitor.properties

# kmonitor server ("kmonitor" "prometheus" "consul" "kingbase_exporter" "node_exporter")

KMONITOR_SERVER=("kmonitor" "prometheus" "consul" "kingbase_exporter" "node_exporter")

KMONITOR_SERVER_ADDRESS="192.168.126.10"

# start as TLS, enable(1) disable(0)

ENABLE_TLS=0

# kmonitor config

KMONITOR_PORT=3000

# prometheus config

PROMETHEUS_PORT=9091

# kingbase_exporter config

KINGBASE_EXPORTER_PORT=1234

# node_exporter config

NODE_EXPORTER_PORT=9200

# consul config

CONSUL_SERVER_PORT=8300

CONSUL_SERF_LAN_PORT=8301

CONSUL_SERF_WAN_PORT=8202

CONSUL_HTTP_PORT=8500

CONSUL_HTTPS_PORT=8501

CONSUL_DNS_PORT=8600

# kingbase config

KINGBASE_ADDRESS="192.168.126.10"

KINGBASE_PORT=54321

KINGBASE_DB="test"

KINGBASE_USER="kmonitor"

KINGBASE_PASSWD="kmonitor"

# alertmanager config

ALERTMANAGER_PORT=9093

ALERTMANAGER_CLUSTER_PORT=9094

# register config, clusterName_instanceIp

REGISTER_KINGBASE_LIST=("KingbaseCluster_192.168.126.10" "KingbaseCluster_192.168.126.11")

REGISTER_NODE_LIST=("KingbaseCluster_192.168.126.10" "KingbaseCluster_192.168.126.11")

# deregister config, clusterName_instanceIp

DEREGISTER_LIST=()

4、解压相关文件

$ tar -zxvf KMonitor_Exporter_V003R001C001B20240528R6_x86_64.tar.gz

$ cd monitor/

5、修改配置文件kmonitor.properties(备节点)

$ monitor.properties kmonitor.properties.bak

$ vi kmonitor.properties

# kmonitor server ("kmonitor" "prometheus" "consul" "kingbase_exporter" "node_exporter")

KMONITOR_SERVER=(kingbase_exporter node_exporter)

KMONITOR_SERVER_ADDRESS="192.168.126.10”

# start as TLS, enable(1) disable(0)

ENABLE_TLS=0

# kmonitor config

KMONITOR_PORT=3000

# prometheus config

PROMETHEUS_PORT=9091

# kingbase_exporter config

KINGBASE_EXPORTER_PORT=1234

# node_exporter config

NODE_EXPORTER_PORT=9200

# consul config

CONSUL_SERVER_PORT=8300

CONSUL_SERF_LAN_PORT=8301

CONSUL_SERF_WAN_PORT=8202

CONSUL_HTTP_PORT=8500

CONSUL_HTTPS_PORT=8501

CONSUL_DNS_PORT=8600

# kingbase config

KINGBASE_ADDRESS="192.168.126.11"

KINGBASE_PORT=54321

KINGBASE_DB="test"

KINGBASE_USER="kmonitor"

KINGBASE_PASSWD="kmonitor"

# alertmanager config

ALERTMANAGER_PORT=9093

ALERTMANAGER_CLUSTER_PORT=9094

# register config, clusterName_instanceIp

REGISTER_KINGBASE_LIST=("KingbaseCluster_0.0.0.0")

REGISTER_NODE_LIST=("KingbaseCluster_0.0.0.0")

# deregister config, clusterName_instanceIp

DEREGISTER_LIST=()

6、部署过程

在monitor目录下执行下面命令初始化KMonitor监控系统,此命令只配置监控系统不启动服务,如果直接执行启动命令会自动进行初始化。

bash kmonitor.sh init

# 执行部署脚本(192.168.126.10)

bash kmonitor.sh start

bash kmonitor.sh register

# 执行部署脚本(192.168.126.11)

bash kmonitor.sh start

# 查看监控工具状态(192.168.126.10)

bash kmonitor.sh status

# 查看监控工具状态(192.168.126.11)

bash kmonitor.sh status

7、登录测试

浏览器访问http://IP:KMONITOR_PORT(默认3000)进行用户登陆,admin用户具有增删改查权限(默认密码K1ngb@se),kingbase用户仅查看权限(默认密码kingbase)。

http://192.168.126.10:3000/login

数据库性能展示

数据库性能展示

数据库资源展示

8、配置监控kmonitor 用户环境变量

使用kmonitor用户请配置数据库环境变量

$ vi .bash_profile

#使该环境变量生效

source .bash_profile

9、可视化监控系统配置相关规则

可以配置监控告警并邮件等形式推送。

monitor/alertmanager/kingbase_alarm服务采集prometheus中告警信息并推送通知,此 服务仅负责推送功能,实际告警规则配置以及触发由prometheus完成,告警规则配置文件位 于prometheus/rules下

启动alertmanager

cd monitor/alertmanager && bash start.sh

停止alertmanager 

cd monitor/alertmanager && bash stop.sh

10、监控服务启停

bash kmonitor.sh 'start | stop | restart | status | register'

六、问题总结

问题:

启动监控脚本报失败,重新停止,等待相关进程完全之后再次启动。

总结:

有条件建议单独部署监控服务器系统。

由于KMonitor工具不对外开放,想深入研究请沟通相关厂家技术人员指导,此外官方论坛也提供了更多交流渠道

https://bbs.kingbase.com.cn/forum

最后修改时间:2024-06-26 10:13:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论