1、解压安装包
执⾏下⾯命令解压后得到monitor⽂件夹,并将脚本⽂件scripts/kmonitor.sh和 scripts/register.sh复制到monitor路径下,最终目录结构如下:
[root@node1 opt]# tar -xvf KMonitor_v2.0.0_linux_amd64.tar.gz
[root@node1 opt]# cd monitor/
[root@node1 monitor]# cp scripts/kmonitor.sh ./
[root@node1 monitor]# cp scripts/register.sh ./
2、用户管理
2.1 创建kmonitor用户
使⽤system⽤户登陆监控⽬标数据库,执⾏scripts/KmonitorUserInit.sql中语句,创建kmonitor⽤户并进⾏授权
-- 创建监控用户
CREATE USER kmonitor with password 'kmonitor';
-- 添加用户标注
COMMENT ON ROLE kmonitor IS 'kingbase KMonitor user';
-- 授权监控用户
GRANT pg_monitor TO kmonitor; -- V008R006
GRANT SYS_SIGNAL_BACKEND TO kmonitor; -- V008R003
-- 授权监控用户使用kwr扩展
GRANT USAGE ON SCHEMA perf TO kmonitor;
如未开启kwr插件或不支持kwr插件版本执行以下语句创建perf schema:
CREATE SCHEMA IF NOT EXISTS perf;
2.2 创建tps和qps函数
\set SQLTERM /
注:oracle模式执行
-- V008R006(oracle mode)
create or replace function perf.tps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(xact_commit + xact_rollback) from sys_stat_database into v1;
perform sys_sleep(1);
perform sys_stat_clear_snapshot();
select sum(xact_commit + xact_rollback) from sys_stat_database into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plpgsql;
create or replace function perf.qps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(calls) from sys_stat_msgaccum
where message = 'Simple Query' or message = 'Execute' into v1;
perform sys_sleep(1);
perform sys_stat_clear_snapshot();
select sum(calls) from sys_stat_msgaccum
where message = 'Simple Query' or message = 'Execute' into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plpgsql;
注:PG模式执行
-- V008R006(pg mode)
create or replace function perf.tps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(xact_commit + xact_rollback) from pg_stat_database into v1;
perform pg_sleep(1);
perform pg_stat_clear_snapshot();
select sum(xact_commit + xact_rollback) from pg_stat_database into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plpgsql;
create or replace function perf.qps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(calls) from pg_stat_msgaccum
where message = 'Simple Query' or message = 'Execute' into v1;
perform pg_sleep(1);
perform pg_stat_clear_snapshot();
select sum(calls) from pg_stat_msgaccum
where message = 'Simple Query' or message = 'Execute' into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plpgsql;
-- V008R003
create or replace function perf.tps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(xact_commit + xact_rollback) from sys_stat_database into v1;
perform sys_sleep(1);
perform sys_stat_clear_snapshot();
select sum(xact_commit + xact_rollback) from sys_stat_database into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plsql;
create or replace function perf.qps()
returns int as $$
declare
v1 int8;
v2 int8;
v3 int8;
begin
select sum(calls) from sys_stat_statements into v1;
perform sys_sleep(1);
perform sys_stat_clear_snapshot();
select sum(calls) from sys_stat_statements into v2;
select v2-v1 into v3;
return v3;
end;
$$ language plsql;
-- 授权kmonitor用户对sys_stat_msgaccum视图的查看权限
grant SELECT ON sys_stat_msgaccum to kmonitor ;
2.3 修改kingbase.conf文件
追加以下内容:
shared_preload_libraries = 'sys_stat_statements' --已经有的无需添加
sys_stat_statements.track='all'
重启集群生效
3、脚本配置
进⼊monitor⽬录下对脚本中参数进⾏修改
3.1 kmonitor.sh
kmonitor端⼝号:默认3000端⼝
prometheus配置:默认9090端口、存储位置prometheus/data、存储日期15天、存储块最大为512MB
kingabse_exporter端口号:默认1234端口
node_exporter端口号:默认9100端口
consul端口号:默认8501端口、其余为内部通信端口号无特殊情况无需修改
数据库连接信息:默认端口54321、数据库test、用户kmonitor、密码kmonitor
alertmanager端口号:默认9093端口
3.2 register.sh
数据库名称:数据库标识字段,可替换为数据库业务系统名称,单套数据库可不修改,多套数据库时必须修改,否则无法区分集群节点
集群所属监控用户:区别于数据库用户,该用户为kmonitor登陆用户,无特殊情报禁止修改(默认用户为kingbase情况时,kmonitor仅kingbase用户登陆时可显示监控数据)
consul端口号:与kmonitor.sh中"CONSUL_HTTP_PORT"变量一致
node_exporter注册列表:需要严格按照格式添加元素(必须使用IPv4地址),如果为一主一备需要两个节点都部署node_exporter并注册,将ip替换成自己集群ip
kingbase_exporter注册列表:需要严格按照格式添加元素(必须使用IPv4地址),一套数据库只需部署一个kingbase_exporter连接master节点并注册,将ip替换为主节点ip
注销列表:需要严格按照格式添加元素(必须使用IPv4地址),如果注册服务时填写错误,需要在此处填写错误服务进行注销
- 使用监控系统
4.1 启动
在monitor目录下执行下面命令启动KMonitor监控系统(注意:启动命令仅为提交启动命令,应许程序真实启动状态需要查看status参数或查看详细启动日志)
提示:1. 脚本中判断端口是否被占用依赖于netstat命令,如果服务器没有此命令请下载rpm包进行安装
- alertmanager需要手动配置后才可以启动
- netstat -anp|grep 端口号 #查看端口占用
[root@node1 monitor]# ./kmonitor.sh start
4.2 备节点配置
将monitor/node_exporter目录和monitor/kmonitor/certs目录拷贝至备节点,保持目录结构不变(注:先启服务,再拷贝文件)
进入备节点node_exporter目录执行./start.sh 启动服务
4.3 状态
在monitor⽬录下执⾏下⾯命令查看KMonitor监控系统组件状态(注意:查看状态为应⽤程序的进程存活状态)
[root@node1 monitor]# ./kmonitor.sh status
4.4 停止
在monitor目录下执行下面命令停止KMonitor监控系统组件状态(注意:停止服务依赖于各个应用程序下的pid文件)
[root@node1 monitor]# ./kmonitor.sh stop
4.5 注册
在monitor目录下执行下面命令进行服务注册与注销,重复提交注册信息会覆盖历史信息,所以填写正确的全量信息即可,不用每次修改增量信息
提示:探针服务必须注册正确,如果有错误信息会影响监控显示
[root@node1 monitor]# ./register.sh
4.6 登陆
浏览器访问kmonitor配置端口(默认3000)进行用户登陆,admin具有增删改查权限(默认密码K1ngb@se),kingbase用户仅查看权限(默认密码kingbase)