DBMind作为openGauss数据库的一部分,为openGauss数据库提供了主动驾驶才能,是一款抢先的开源数据库自治运维平台。经过DBMind, 您能够很容易地发现数据库的问题,同时能够完结秒级的数据库问题根因剖析

openGauss DBMind自治运维系统的安装和部署

本文将详细描述怎么装置布置openGauss DBMind自治运维平台。

1装置准备

1.1 环境信息

假设在主控节点192.168.100.4上布置DBMind,有一套端口号为19999的集群环境,环境信息如下:

node node_ip state
主节点 192.168.100.1 Primary
备节点1 192.168.100.2 Standby
备节点2 192.168.100.3 Standby

假设需求在test_user用户下装置,需求在这4个节点上创立好用户,能够运用如下指令,创立用户并指定登入目录。

useradd -m test_user -d home/test_user

装置之前需求修正相关文件的权限,并运用su – test_user指令切换到方针用户空间下装置。test_user用户要能够运用cm_ctl指令,否则会导致cmd_exporter获取不到数据库节点的信息。

1.2 装置包

装置和布置进程中需求用到的装置包和下载地址如下,用户依据自己的服务器架构进行选择:

File Name Download Address OS/Arch
DBMind dbmind-installer-x86_64-python3.10.sh.tar.gz linux/x86_64
DBMind dbmind-installer-aarch64-python3.10.sh.tar.gz linux/arm64
Prometheus prometheus-2.43.0.linux-amd64.tar.gz linux/x86_64
Prometheus prometheus-2.43.0.linux-arm64.tar.gz linux/arm64
node_exporter node_exporter-1.5.0.linux-amd64.tar.gz linux/x86_64
node_exporter node_exporter-1.5.0.linux-arm64.tar.gz linux/arm64

假如需求其他版别或架构的装置包,用户能够到prometheus官网进行下载。能够运用uanme -m指令检查服务器架构。

1.3 数据库用户

本文以如下的用户和数据库信息作为示例。

  • username:dbmind_monitor
  • password:test_123
  • port:6789
  • metadatabase:metadatabase

omm登录主节点,并为数据库节点和DBMind服务器数据库创立dbmind_monitor用户:

gs_guc reload -D datanode -c 'password_encryption_type=1' 
gsql -p {port} -d postgres -c 'create user {username:dbmind_monitor} with password {password:test_123} ;' 
gsql -p {port} -d postgres -c 'alter user {username:dbmind_monitor} monadmin; ' 
gs_guc reload -D datanode -c 'password_encryption_type=2' # 可选,将该参数改回去 

阐明:

本文中为了杰出指令中的参数装备,运用了{key:value}的形式。实践情况下,应输入如下指令 :

gs_guc reload -D datanode -c 'password_encryption_type=1' 
gsql -p {port} -d postgres -c 'create user dbmind_monitor with password test_123;' 
gsql -p {port} -d postgres -c 'alter user dbmind_monitor monadmin;' 
gs_guc reload -D datanode -c 'password_encryption_type=2' # 可选,将该参数改回去 

DBMind服务器,创立元数据库:

grant all privileges to {username:dbmind_monitor}; 
\c postgres {username:dbmind_monitor};     
create database {metadatabase:metadatabase}; 

创立完结后,用户可经过指令gsql -d postgres -p 6789 -r -U dbmind_monitor -W test_123登录到数据库上,并输入\l指令检查元数据库metadatabase是否存在。

2 装置DBMind

DBMind会守时在openGauss-DBMind项目的release页面发布DBMind的装置包,能够经过下载该DBMind装置包进行装置布置。

将装置包dbmind-install-x86_64-python3.10.sh.tar.gz放到主控节点test_user用户空间下并切换到用户空间后,履行下述指令完结装置:

  1. 解压:
tar zxvf dbmind-install-x86_64-python3.10.sh.tar.gz 
  1. 装置:装置进程中会提示承认装置方位和添加环境变量,按照提示输入回车或yes就行了。
sh dbmind-install-x86_64-python3.10.sh
  1. 重新加载环境变量:
source ~/.bashrc
  1. 测验是否装置成功:
gs_dbmind --help

3 布置DBMind

DBMind有两种布置方法,分别为手动布置和主动布置,引荐运用主动布置的方法,其会主动将prometheus、node_exporter、opengauss_exporter、cmd_expoter和reprocessingexporter组件装置到指定的节点。

3.1 主动布置–引荐

主动布置会依据装备文件中的信息主动履行布置,所以需求先将装备文件openGauss-DBMind/dbmind/components/deployment/deploy.conf装备好。能够手动将文件装备好,也能够运用交互式装备。引荐运用手动装备的方法。

需求提早将prometheus和node_exporter两个装置包放置在用户根目录的downloads文件夹下,并修正属主为testuser用户。

手动装备–引荐

运用手动装备的方法,需求提早将实例信息和参数填入openGauss-DBMind/dbmind/components/deployment/deploy.conf装备文件。

假设在test_user用户空间下进行装置,即host_username=test_user,deploy.conf装备文件信息如下:

[DOWNLAODING]
host = https://github.com/prometheus
node_exporter = node_exporter-1.5.0.linux-amd64
prometheus = prometheus-2.42.0.linux-amd64node_exporter_sha256 = af999fd31ab54ed3a34b9f0b10c28e9acee9ef5ac5a5d5edfdde85437db7acdb
prometheus_sha256 = 422dab055ed9c7bcaff52b71805f9192c6fac0de6b7e78dd278e70ee2663dcc
[PROMETHEUS]
host = 192.168.100.4
ssh_port = 22
host_username = test_userpath = home/test_user/prometheus # 用户能够指定其他的装置路径
listen_address = 192.168.100.4
prometheus_port = 9090
reprocessing_exporter_port = 8181
[EXPORTERS]
targets = 192.168.100.1:19999/postgres,192.168.100.2:19999/postgres,192.168.100.3:19999/postgres
ssh_port = 22host_username = test_userpath = home/test_user/node_exporter # 用户能够指定其他的装置路径
database_username = dbmind_monitor
listen_address = 192.168.100.4
opengauss_ports_range = 9187-9197
node_exporter_port = 9100
cmd_exporter_port = 9180
[SSL]
enable_ssl = False# 
该模块其他内容不必修正,内容略

能够运用sha256sum指令生成文件的sha256校验码,如下所示:

sha256sum prometheus-2.43.0.linux-amd64.tar.gz

然后切换到openGauss-DBMind目录下,履行如下指令:

gs_dbmind component deployment --offline -c dbmind/components/deployment/deploy.conf

该指令会提示用户输入用户密码,然后将主控节点downloads目录下的装置包解压并复制到数据库节点。

最后履行如下指令,会主动发动DBMind的各exporter组件和prometheus。假如各组件都正常发动,则能够履行发动DBMind过程。

gs_dbmind component deployment --run

注意:

  • 需求提早将prometheus和node_exporter两个装置包放置在用户根目录的downloads文件夹下,并修正属主为test_user用户。
  • 装备文件中[DOWNLOADING]模块的装置包姓名不带.tar.gz后缀。

交互式装备

经过下述指令,用户能够在交互式界面中,依据提示信息输入需求监控的openGauss实例信息和参数。

gs_dbmind component deployment --offline

3.2 手动布置

规划装备

运用手动布置的方法,需求用户手动装置prometheus和相关的exporter组件,先做如下的规划装备:

组件 地址 补白
node_exporter 192.168.100.1: 9100
192.168.100.2: 9100
192.168.100.3: 9100
每个数据库节点上都需求装置
cmd_exporter 192.168.100.2: 9180 只需求在一个备节点上装置
opengauss_exporter 192.168.100.4: 9187 -> 192.168.100.1: 19999
192.168.100.4: 9188 -> 192.168.100.2: 19999
192.168.100.4: 9189 -> 192.168.100.3: 19999
每个数据库节点上都需求装置,
在主控节点长途装置
prometheus 192.168.100.4: 9090 只需在主控节点装置
reprocessing_exporter 192.168.100.4: 8181 和prometheus一同布置到主控节点

node_exporter

用户需求在数据库的各个节点布置node_exporter,将node_exporter装置包放入数据库节点并切换到test_user用户空间后,履行如下指令:

  1. 解压装置包:
tar zxvf node_exporter-1.5.0.linux-amd64.tar.gz
cd node_exporter-1.5.0.linux-amd64

2.发动 默许端口号为9100:

./node_exporter > node_exporter.log 2>&1 &
  1. 假如端口号被占用,能够指定端口号:
./node_exporter --web.listen-address=:9101 > node_exporter.log 2>&1 &

输入上述指令后,假如显现[1]+ Exit字符表明node_exporter装置失败,能够经过node_exporter.log日志检查原因。

cmd_exporter

cmd_exporter用来履行cmd指令并获取回来成果以及收集日志信息,当前首要用于收集集群状况,在一个备数据库节点上装置就能够了。

cmdexporter组件需求经过dbmind装置,所以需求先在一个备节点上装置dbmind,装置完之后,再经过gs_dbmind的component子指令装置cmd_exporter,如下所示。

gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9180 --disable-https

履行完上述指令,假如控制台显现The process is starting,阐明装置无反常。

**opengauss_exporter
**

opengauss_exporter是DBMind收集数据库的组件,从openGauss数据库中读取体系表(或体系视图)的数据,并经过Prometheus保存起来。支撑长途布置,需求在每个数据库节点上装置。

用户能够经过长途布置的方法在主控节点上履行下述指令,从而将opengauss_exporter装置到对应的数据库节点上,opengauss_exporter的默许端口号规模是9187-9197,假如被占用能够运用其他端口。

(1)方法一:URL格局

gs_dbmind component opengauss_exporter --url
postgresql://dbmind_monitor:test_123@192.168.100.1:19999/postgres --web.listen-address 0.0.0.0 --
web.listen-port 9187 --log.level info --disable-https

阐明:

关于采用URL格局的DSN,因为@等特别字符用来分割URL串中各个部分的内容,故需求URL编码。例如某个用户dbmind的密码为Test@123,则URL格局的DSN为psotgresql:dbmind:Test%40123@127.0.0.1:19999,行将@字符编码为%40。

(2)方法二:K-V格局

gs_dbmind component opengauss_exporter --url "dbname=postgres user=dbmind_monitor password=test_123 host=192.168.100.1 port=19999" --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https

履行完上述指令,假如控制台显现The process is starting,阐明装置无反常。也能够经过下述指令检查opengauss_exporter是否已发动。

# 端口号9187为用户指定的端口号, 假如失败会显现Connection refused 
curl -vv http://localhost:9187/metrics 

prometheus

prometheus是业内十分流行的开源监控体系,同时本身也是一款时序数据库。需求将其装置在主控节点,默许占用端口为9090,将prometheus装置包放入主控节点环境并切换到方针用户空间后,履行如下指令:

  1. 解压并切换到prometheus目录下:
tar zxvf prometheus-2.42.0.linux-amd64.tar.gz
cd prometheus-2.42.0.linux-amd64/
  1. 修正prometheus装备文件:
vi prometheus.yml

在该文件中找到 scrape_configs 部分,该部分包含了一切需求被抓取的targets的装备信息,用户需求依据自己的节点数量和端口占用情况进行修正。依据规划装备可做如下装备:

  - job_name: 'prometheus'
   static_configs:
   - targets: ['192.168.100.4:9090']
 - job_name: 'opengauss_exporter'
   static_configs:
   - targets: ['192.168.100.4:9187', '192.168.100.4:9188', '192.168.100.4:9189']
 - job_name: 'node_exporter'
   static_configs:
   - targets: ['192.168.100.1:9100', '192.168.100.2:9100', '192.168.100.3:9100']
 - job_name: 'reprocessing_exporter'
  static_configs:
   - targets: ['192.168.100.4:8181']
 - job_name: 'cmd_exporter'
  static_configs:
   - targets: ['192.168.100.2:9180']
  1. 发动prometheus并将日志输入到同目录下的prometheus.log里:
 ./prometheus --web.enable-admin-api --web.enable-lifecycle --
 storage.tsdb.retention.time=1w >./prometheus.log 2>&1 &

reprocessing_exporter

reprocessing_exporter是一个用于二次加工处理数据的exporter。因为node_exporter、opengauss_exporter保存到prometheus中的数据是即时的监控信息,而只经过这些信息是无法反响某些目标的瞬时增量信息的。因而,reprocessing_exporter能够用来计算增量信息或者聚合成果等。

因为reprocessing_exporter是从prometheus中获取目标数据,进行二次加工处理后再回来给prometheus。因而,它与prometheus是一一对应的,即假如只要一个prometheus服务,则只需求一个reprocessing_exporter即可。prometheus和reprocessing_exproter一同布置在主控节点上,reprocessing_exproter依靠prometheus,所以需求先发动prometheus再发动reprocessing_exporter。能够经过下述指令发动reprocessing_exporter:

# host_ip为主控节点的ip地址,9090为prometheus占用的端口号,8181为reprocessing_exporter占用的端口号,用户能够按需修正
gs_dbmind component reprocessing_exporter host_ip 9090 --web.listen-address 0.0.0.0 --web.listen-port 8181 --disable-https 

发动完结之后,访问prometheus网页:http://{主控节点ip}:9090/,打开Status/Targets,检查一切exporter的发动状况。

4 发动DBMind

在主控节点,切换到openGauss-DBMind目录下,输入如下指令发动DBMind:

  1. 发动装备,会在openGauss-DBMind目录下创立dbmindconf/dbmind.conf装备文件:
gs_dbmind service setup -c dbmindconf 
  1. 切换到openGauss-DBMind目录,并修正装备文件:
vi dbmindconf/dbmind.conf 

其中必填的装备项如下:

  • TSDB

TDSB为时序数据库装备,即prometheus相关信息。

[TSDB]
name = prometheus # The type of time-series database. Options: prometheus.  
host = {主控节点ip:192.168.100.4} # Address of time-series database.  
port = 9090 # Port to connect to time-series database.
  • METADATABASE

DBMind服务器所创立的metadatabase数据库相关信息,注意用户需求有数据库创立的权限。在发动DBMind之前,需求把metadatabase创立好。

[METADATABASE] 
dbtype = opengauss # Database type. Options: sqlite, opengauss, postgresql.  
host = {数据库主节点ip:192.168.100.1} # Address of meta-data database.  
port = {数据库占用的端口号:6789} # Port to connect to meta-data database.  
username = dbmind_monitor # User name to connect to meta-data database.  
password = test_123 # Password to connect to meta-data database.  
database = metadatabase # Database name to connect to meta-data database.
  • WORKER

该模块用于指定DBMind能够运用的worker子进程数量,假如写0则会进行自适应,尽可能多地运用CPU资源。

用户能够运用cat /proc/cpuinfo | grep “physical id” | fort | uniq | wc -l指令检查逻辑CPU的个数,依据服务器情况装备worker子进程数量。

[WORKER]  
process_num = 2 # Number of worker processes on a local node. Less than or equal to zero means adaptive. 
  • AGENT

该模块用于指定DBMind连接到openGauss Agent的信息。运用该Agent,能够让DBMind获取到被监控实例的即时状况,从而进步剖析准确性。同时,也能够向数据库实例下发一些变更动作。

masterurl为http://{DBMind服务器IP}:{opengaussexporter监听端口},置空会主动识别。usename为数据库实例的dbmind_minotor用户。

[AGENT]  
master_url =   
username = dbmind_monitor # Username to login the monitoring database. Credential for agent.  
password = test_123 # Password to login the monitoring database. Credential for agent. 
  • TIMED_TASK

设置守时任务:

Discard_expired_results: 删除过期成果

self_monitoring:目标反常监控

daily_inspection:日检

weekly_inspection:周检

monthly_inspection: 月检

slow_sql_diagnosis:慢SQL诊断

knob_recommend:参数调优

slow_query_killer:慢SQL查杀

[TIMED_TASK] 
task=discard_expired_results,self_monitoring,daily_inspection, weekly_inspection,slow_sql_diagnosis,knob_recommend,slow_query_killer# select the scheduled task to start,separated by ','. 
  • WEB-SERVICE
[WEB-SERVICE]  
host = 192.168.100.4 # Which host to bind for web service. '0.0.0.0' means to bind all.  
port = 8080 # Port to listen for web serivce. 
  1. 装备项初始化:
gs_dbmind service setup --initialize -c dbmindconf 
  1. 发动DBMind服务:
gs_dbmind service start -c dbmindconf 

上述过程履行完之后,就能够经过http://{DBMind服务器IP}:8080访问DBMind前台页面。