目录
KMonitor 通过在数据库服务中部署探针,实现各种指标检测,并提供邮件、短信告警功能,本章节主要介绍 KMonitor 的部署。
KMonitor仅支持常规的或国产的Linux操作系统部署,比如常规的CentOS、RedHat或者UOS、麒麟等国产系统。
KMonitor支持基于Linux的AMD64、ARM64、MIPS64LE、LOONG64、保密专用机等平台部署,在部署时,请根据相关平台选择安装介质。
在进行KMonitor监控系统部署时,请将各服务的部署路径固定为“/opt/kingbase/monitor/”目录下,以确保整体一致性(安装包请在/opt/kingbase下解压),在进行问题排查时,方便协查人员进行相关信息的检索,如有特殊原因切换至其他路径时,请在需求技术支持时,提前告知。
在进行KMonitor监控部署时,请确保各服务器之间网络通畅,防止出现网络问题导致的安装失败,使用以下命令检查端口号。
telnet $IP $PORT
报错Connection refused说明端口未被占用。
在进行KMonitor监控部署时,请确保安装包解压后的执行程序具有可执行权限,如果权限不足执行对应报错程序的授权命令(执行授权命令时,确保执行命令用户具有授权权限)。
chmod 755 /opt/Kingbase/monitor/prometheus/kingbase_prometheus chmod 755 /opt/Kingbase/monitor/prometheus/consul/kingbase_consul chmod 755 /opt/Kingbase/monitor/node_exporter/kingbase_node_exporter chmod 755 /opt/Kingbase/monitor/kmonitor/bin/kmonitor chmod 755 /opt/Kingbase/monitor/alertmanager/kingbase_alertmanager
支持常见的浏览器,比如火狐浏览器、360浏览器、IE浏览器以及Chrome(75版本及以上)浏览器。
在启动KMonitor监控系统前,请确保集群内部时间同步,以及客户端与服务端时间差小于5分钟。
监控系统建议部署架构:
本章节主要对KMonitor部署进行详细说明。
tar xzf KMonitor_v2.1.1_V8R*_*.tar.gz && cd monitor
3.3.3.1. 扩展管理
加载插件,在使用之前将sys_kwr、sys_stat_statements添加至kingbase.conf配置文件的shared_preload_libraries选项中,并重启KingbaseES 数据库,如果数据库不支持sys_kwr扩展仅开启sys_stat_statements以及配置common以及相关参数配置。
shared_preload_libraries = ' sys_kwr, sys_stat_statements'
参数配置,要想使用KWR的全部报告功能,建议在kingbase.conf中添加以下参数:
# common track_io_timing = on # 开启IO计时统计功能,默认为off track_functions = 'all' # 开启函数统计功能 # sys_kwr track_sql = on # 开启统计 sql 时间,等待事件,IO track_wait_timing = on # 开启累积式等待事件记录等待时间的功能,默认为off sys_kwr.enable = on # 自动对收集到的数据生成快照并保存到kwr库 # sys_stat_statements sys_stat_statements.track = 'top' # 跟踪统计SQL语句的访问,推荐用 'top',默认为'none'
创建插件,进入kingbase数据库中创建插件:
create extension sys_kwr; create extension sys_stat_statements
如果不启用插件(默认启用),需要修改插件对应参数KINGBASE_ENABLE_SYS_STAT_STATEMENTS或 KINGBASE_ENABLE_SYS_KWR为false,参考3.3.4.1小节。
KINGBASE_ENABLE_SYS_STAT_STATEMENTS=false KINGBASE_ENABLE_SYS_KWR=false
3.3.3.2. 用户管理
使用system用户登陆监控目标数据库,执行scripts/UserInit.sql中语句,创建kmonitor用户并进行授权。
-- 创建监控用户 CREATEUSER kmonitor with password 'kmonitor'; -- 添加用户标注 COMMENTON ROLE kmonitor IS'kingbase KMonitor user'; -- 授权监控用户 -- V8R3或其他版本提示权限不足问题,使用SYSTEM用户登录,或者赋予对应权限 GRANT pg_monitor TO kmonitor;-- V008R006 -- 授权监控用户使用kwr扩展 -- 未开启kwr插件或不支持kwr插件版本请执行scripts/FunctionInit.sql中对应版本创建语句 GRANT USAGE ON SCHEMA perf TO kmonitor;
进入monitor目录下对脚本中参数进行修改。
3.3.4.1. kmonitor.sh
kmonitor端口号:默认3000端口
# kmonitor config KMONITOR_PORT=3000
prometheus配置:默认9090端口、存储位置prometheus/data、存储日期15天、存储块最大为512MB。
# prometheus config PROMETHEUS_PORT=9090 STORAGE_TSDB_PATH="data" STORAGE_TSDB_RETENTION_TIME="15d" STORAGE_TSDB_RETENTION_SIZE="512MB"
kingabse_exporter端口号:默认1234端口。
# kingbase_exporter config KINGBASE_EXPORTER_PORT=1234
node_exporter端口号:默认9100端口。
# node_exporter config NODE_EXPORTER_PORT=9100
consul端口号:默认8501端口、其余为内部通信端口号无特殊情况无需修改。
# 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 CONSUL_DATA="consul_data"
数据库连接信息:默认端口54321、数据库test、用户kmonitor、密码kmonitor。
# kingbase config KINGBASE_ADDRESS=127.0.0.1 KINGBASE_PORT=54321 KINGBASE_DB="test" KINGBASE_USER=kmonitor KINGBASE_PASSWD=kmonitor
是否启用插件对应指标:默认启用,如果不启用修改为false。
KINGBASE_ENABLE_SYS_STAT_STATEMENTS=true KINGBASE_ENABLE_SYS_KWR=true
alertmanager端口号:默认9093端口。
# alertmanager config ALERTMANAGER_PORT=9093
是否在本地启动kingbase_exporter、node_exporter、alertmanager:默认不启动。
# local install enable(1) disable(0) KINGBASE_EXPORTER_LOCAL_INSTALL=0 NODE_EXPORTER_LOCAL_INSTALL=0 ALERTMANAGER_LOCAL_INSTALL=0
提示
默认kingbase_exporter和node_exporter选为不启动,将会生成对应服务tar压缩包,可以复制到数据库服务器解压运行,此操作不可逆如果已经生成tar包后又改为启动状态,需要手动解压tar包至当前目录下。
# 复制命令 scp ./kingabse_exporter.tar.gz $USER@$IP:/opt/kingbase/monitor scp ./node_exporter.tar.gz $USER@$IP:/opt/kingbase/monitor # 解压命令在数据库服务器执行 cd /opt/kingbase/monitor tar xzf ./kingabse_exporter.tar.gz tar xzf ./node_exporter.tar.gz # 启动命令(启动脚本在组件目录下) bash start.sh # 停止命令(停止脚本在组件目录下)仅为说明,使用监控系统保持运行状态 bash stop.sh
要想使用kmonitor.sh查看alertmanager状态,需要在配置好alertmanager服务后将此处启动状态改为1。
过滤进程关键字列表:默认为空,使用情况参考3.3.5.2提示3。
# excluded application EXCLUDED_PROCESS=("")
3.3.4.2. scripts/register.sh
提示
此注册服务脚本每次只能注册单个集群内信息,多套集群环境请重复编辑后多次执行,或复制为多个脚本执行。
数据库名称:数据库标识字段,可替换为数据库业务系统名称,单套数据库可不修改,多套数据库时必须修改,否则无法区分集群节点。
# register config CLUSTER="Kingbase数据库"
集群所属监控用户:区别于数据库用户,该用户为kmonitor登陆用户,无特殊情况禁止修改(默认用户为kingbase情况时,kmonitor仅kingbase用户登陆时可显示监控数据)。
USER="kingbase"
consul端口号:与kmonitor.sh中"CONSUL_HTTPS_PORT"变量一致。
CONSUL_HTTPS_PORT=8501
node_exporter注册列表:需要严格按照格式添加元素(必须使用IPv4地址),如果为一主一备需要两个节点都部署node_exporter并注册。
REGISTER_NODE_LIST=("127.0.0.1_9100" "127.0.0.1_9100")
kingbase_exporter注册列表:需要严格按照格式添加元素(必须使用IPv4地址),一套数据库只需部署一个kingbase_exporter连接master节点并注册。
REGISTER_KINGBASE_LIST=("127.0.0.1_1234")
注销列表:需要严格按照格式添加元素(必须使用IPv4地址),如果注册服务时填写错误,需要在此处填写错误服务进行注销。
# deregister config DEREGISTER_LIST=()
3.3.5.1. 初始化
在monitor目录下执行下面命令初始化KMonitor监控系统,此命令只配置监控系统不启动服务,如果直接执行启动命令会自动进行初始化。
bash kmonitor.sh init
3.3.5.2. 启动
在monitor目录下执行下面命令启动KMonitor监控系统(注意:启动命令仅为提交启动命令,应用程序真实启动状态需要查看stats参数或查看详细启动日志)。
bash kmonitor.sh start
提示
脚本中判断端口是否被占用依赖于netstat命令,如果服务器没有此命令请下载对应包进行安装。
alertmanager需要手动配置后才可以启动。
执行脚本时报错已有相关进程正在运行,为其他不相关同名进程时,在脚本中 EXCLUDED_PROCESS 列表变量中添加关键字进行过滤(可为进程名称或进程号),添加关键字后,使用 status 参数查看进程状态同样会过滤。
ps -ef
3.3.5.3. 状态
在monitor目录下执行下面命令查看KMonitor监控系统组件状态(注意:查看状态为本机应用程序的进程存活状态)。
bash kmonitor.sh status
3.3.5.4. 停止
在monitor目录下执行下面命令停止KMonitor监控系统组件状态(注意:停止服务依赖于各个应用程序下的pid文件)提示:此小节仅为说明,继续安装需要监控系统运行状态。 提示:此小节仅为说明,继续安装需要监控系统运行状态。
bash kmonitor.sh stop
3.3.5.5. 探针服务注册
在monitor目录下执行下面命令进行服务注册与注销,重复提交注册信息会覆盖历史信息,所以填写正确的全量信息即可,不用每次修改增量信息。 提示:探针服务必须注册正确,如果有错误信息会影响监控显示。
bash scripts/register.sh
3.3.5.6. 探针服务注销
访问https://$IP:$PROMETHEUS_PORT/targets(可忽略探针状态,仅查看是否注册正确)或者执行命令查看正在采集探针信息。
curl -k https://$IP:$PROMETHEUS_PORT/api/v1/targets|python -m json.tool|grep"__address__"
如果结果中有注册错误探针信息,将IP和端口号在register.sh文件中进行填写然后执行脚本进行注销。
3.3.5.7. 登录
浏览器访问https://$IP:$KMONITOR_PORT(默认3000)进行用户登陆,admin用户具有增删改查权限(默认密码K1ngb@se),kingbase用户仅查看权限(默认密码kingbase)。
3.3.6.1. 配置邮箱服务
修改monitor/alertmanager/alertmanager.yaml:
邮箱发送服务:smpt服务端口、发送名称、邮箱用户名、邮箱密码
smtp_smarthost: '' smtp_from: '******@mail.com' smtp_auth_username: '******@mail.com' smtp_auth_password: '******'
邮箱接收服务:第18行,告警邮件接收地址
to: '******@mail.com'
3.3.6.2. 启动alertmanager
cd monitor/alertmanager && bash start.sh
3.3.6.3. 停止alertmanager
cd monitor/alertmanager && bash stop.sh
3.3.7.1. 添加通知渠道
使用admin用户登陆或者其他有编辑权限的用户:
点击左侧导航栏“告警”按钮 > 通知渠道
点击“添加渠道”
选择“Kingbase Alertmanager”后,填写名称以及alertmanager服务地址,点击“保存”按钮
3.3.7.2. 添加面板
可视化告警配置可以在新建仪表板和已有仪表板中配置,仅支持指定查询不支持变量查询:
添加面板
输入想要配置的告警查询规则
点击告警选项⻚,点击创建告警
填写告警名称,评估规则,告警规则
选择告警渠道,可根据实际需求追加信息和标签
保存仪表板