VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

Prometheus Exporter组件

功能描述

Prometheus是业内非常流行的开源监控系统,同时本身也是一款时序数据库。Prometheus的采集端称为exporter,用来收集被监控模块的指标项。为了与Prometheus平台完成对接,AI工具分别实现了两款exporter,分别是用来采集数据库指标的opengauss_exporter,以及对采集到的指标进行二次加工的reprocessing-exporter。

Prometheus 和exporter是业内流行的监控和采集平台,部署在内网环境中,不对外部暴露接口,仅供内部监控平台使用。因此,为了增强该平台的安全性,一般需要用户或运维人员配置防火墙等,以便隔离外部访问,从而增强监控平台的安全性。 Prometheus平台在默认情况下,采用Http协议、并且没有任何安全访问限制。这是因为,该平台一般部署在内网环境中,攻击风险可控。如果用户希望提高安全性,可自行修改Prometheus的TLS配置选项,但仍不建议对外部直接暴露访问接口。

语法格式

reprocessing-exporter的使用帮助详情

gs_dbmind component reprocessing_exporter --help

显示如下帮助信息:

usage:  [-h] [--disable-https] [--ssl-keyfile SSL_KEYFILE]
        [--ssl-certfile SSL_CERTFILE]
        [--web.listen-address WEB.LISTEN_ADDRESS]
        [--web.listen-port WEB.LISTEN_PORT]
        [--collector.config COLLECTOR.CONFIG] [--log.filepath LOG.FILEPATH]
        [--log.level {debug,info,warn,error,fatal}] [--version]
        prometheus_host prometheus_port

Reprocessing Exporter: A re-processing module for metrics stored in the
Prometheus server.

positional arguments:
  prometheus_host       from which host to pull data
  prometheus_port       the port to connect to the Prometheus host

optional arguments:
  -h, --help            show this help message and exit
  --disable-https       disable Https schema
  --ssl-keyfile SSL_KEYFILE
                        set the path of ssl key file
  --ssl-certfile SSL_CERTFILE
                        set the path of ssl certificate file
  --web.listen-address WEB.LISTEN_ADDRESS
                        address on which to expose metrics and web interface
  --web.listen-port WEB.LISTEN_PORT
                        listen port to expose metrics and web interface
  --collector.config COLLECTOR.CONFIG
                        according to the content of the yaml file for metric
                        collection
  --log.filepath LOG.FILEPATH
                        the path to log
  --log.level {debug,info,warn,error,fatal}
                        only log messages with the given severity or above.
                        Valid levels: [debug, info, warn, error, fatal]
  --version             show program's version number and exit

参数说明

参数 参数说明 取值范围
prometheus_host Prometheus-server的IP地址 -
prometheus_port Prometheus-server的服务侦听端口号 1024-65535
-h, --help 帮助选项 -
--disable-https 禁用Https协议 -
--ssl-keyfile Https协议使用的证书私钥文件路径 -
--ssl-certfile Https协议使用的证书文件路径 -
--ssl-ca-file Https协议使用的CA证书文件路径
--web.listen-address 该exporter服务的绑定IP -
--web.listen-port 该exporter服务的侦听端口 1024-65535
--collector.config 显性指定的待采集指标配置文件路径 -
--log.filepath 日志文件保存路径,默认保存在当前目录下 -
--log.level 日志文件的打印级别,默认为INFO级别 debug, info, warn, error, fatal
--version 显示版本信息 -

opengauss-exporter的使用帮助详情

gs_dbmind component opengauss_exporter --help

显示如下帮助信息:

usage:  [-h] --url URL [--config CONFIG] [--constant-labels CONSTANT_LABELS]
        [--web.listen-address WEB.LISTEN_ADDRESS]
        [--web.listen-port WEB.LISTEN_PORT]
        [--web.telemetry-path WEB.TELEMETRY_PATH] [--disable-cache]
        [--disable-settings-metrics] [--disable-statement-history-metrics]
        [--disable-https] [--ssl-keyfile SSL_KEYFILE]
        [--ssl-certfile SSL_CERTFILE] [--parallel PARALLEL]
        [--log.filepath LOG.FILEPATH]
        [--log.level {debug,info,warn,error,fatal}] [--version]

vastbase Exporter (DBMind): Monitoring for vastbase.

optional arguments:
  -h, --help            show this help message and exit
  --url URL             vastbase database target url.
  --config CONFIG       path to config dir or file.
  --constant-labels CONSTANT_LABELS
                        a list of label=value separated by comma(,).
  --web.listen-address WEB.LISTEN_ADDRESS
                        address on which to expose metrics and web interface
  --web.listen-port WEB.LISTEN_PORT
                        listen port to expose metrics and web interface
  --web.telemetry-path WEB.TELEMETRY_PATH
                        path under which to expose metrics.
  --disable-cache       force not using cache.
  --disable-settings-metrics
                        not collect pg_settings.yml metrics.
  --disable-statement-history-metrics
                        not collect statement-history metrics (including slow
                        queries).
  --disable-https       disable Https schema
  --ssl-keyfile SSL_KEYFILE
                        set the path of ssl key file
  --ssl-certfile SSL_CERTFILE
                        set the path of ssl certificate file
  --parallel PARALLEL   not collect pg_settings.yml metrics.
  --log.filepath LOG.FILEPATH
                        the path to log
  --log.level {debug,info,warn,error,fatal}
                        only log messages with the given severity or above.
                        Valid levels: [debug, info, warn, error, fatal]
  --version             show program's version number and exitusage:  [-h] --url URL [--config-file CONFIG_FILE] [--include-databases INCLUDE_DATABASES] [--exclude-databases EXCLUDE_DATABASES] [--constant-labels CONSTANT_LABELS]
        [--web.listen-address WEB.LISTEN_ADDRESS] [--web.listen-port WEB.LISTEN_PORT] [--disable-cache] [--disable-settings-metrics]
        [--disable-statement-history-metrics] [--disable-https] [--disable-agent] [--ssl-keyfile SSL_KEYFILE] [--ssl-certfile SSL_CERTFILE] [--ssl-ca-file SSL_CA_FILE] [--parallel PARALLEL]
        [--log.filepath LOG.FILEPATH] [--log.level {debug,info,warn,error,fatal}] [-v]

openGauss Exporter (DBMind): Monitoring or controlling for openGauss.

optional arguments:
  -h, --help            show this help message and exit
  --url URL             openGauss database target url. It is recommended to connect to the postgres database through this URL, so that the exporter can actively discover and monitor other databases.
  --config-file CONFIG_FILE, --config CONFIG_FILE
                        path to config file.
  --include-databases INCLUDE_DATABASES
                        only scrape metrics from the given database list. a list of label=value separated by comma(,).
  --exclude-databases EXCLUDE_DATABASES
                        scrape metrics from the all auto-discovered databases excluding the list of database. a list of label=value separated by comma(,).
  --constant-labels CONSTANT_LABELS
                        a list of label=value separated by comma(,).
  --web.listen-address WEB.LISTEN_ADDRESS
                        address on which to expose metrics and web interface
  --web.listen-port WEB.LISTEN_PORT
                        listen port to expose metrics and web interface
  --disable-cache       force not using cache.
  --disable-settings-metrics
                        not collect pg_settings.yml metrics.
  --disable-statement-history-metrics
                        not collect statement-history metrics (including slow queries).
  --disable-https       disable Https scheme
  --disable-agent       by default, this exporter also assumes the role of DBMind-Agent, that is, executing database operation and maintenance actions issued by the DBMind service. With this argument,
                        users can disable the agent functionality, thereby prohibiting the DBMind service from making changes to the database.
  --ssl-keyfile SSL_KEYFILE
                        set the path of ssl key file
  --ssl-certfile SSL_CERTFILE
                        set the path of ssl certificate file
  --ssl-ca-file SSL_CA_FILE
                        set the path of ssl ca file
  --parallel PARALLEL   not collect pg_settings.yml metrics.
  --log.filepath LOG.FILEPATH
                        the path to log
  --log.level {debug,info,warn,error,fatal}
                        only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal]
  -v, --version         show program's version number and exit

参数说明

参数 参数说明 取值范围
--url 数据库server的连接地址,例如 postgres://user:pwd@host:port/dbname 如果该url涉及到的各字段URL包含特殊字符(如@, /等),则需要通过URL编码进行转义,例如密码中的”@“应转义为%40, “/“应转义为%2F. 否则各字段的含义会被错误识别和切分,具体转义规则可以参考URL编码的转义规则, 该URL地址规则遵循 RFC-1738 标准。
--constant-labels 常量列表,k=v格式,用逗号隔开,表明该exporter自带的常量标签 格式如cluster_name=demo,cluster_id=1
-h, --help 帮助选项 -
--disable-https 禁用Https协议 -
--ssl-keyfile Https协议使用的证书私钥文件路径 -
--ssl-certfile Https协议使用的证书文件路径 -
--ssl-ca-file Https协议使用的CA证书文件路径 -
--web.listen-address 该exporter服务的绑定IP -
--web.listen-port 该exporter服务的侦听端口 1024-65535
--config, --config-file 显性指定的待采集指标配置文件路径 -
--log.filepath 日志文件保存路径,默认保存在当前目录下 -
--log.level 日志文件的打印级别,默认为INFO级别 debug, info, warn, error, fatal
--version 显示版本信息 -
--disable-cache 禁止使用缓存 -
--disable-settings-metrics 禁止采集pg_settings表的值 -
--disable-statement-history-metrics 禁止收集statement_history表中的慢SQL信息 -
--disable-agent 禁止agent行为 -
--include-databases 显性表明仅采集的数据库名,指定多个数据库时用逗号(,)隔开 -
--exclude-databases 显性表明不监控的数据库名,指定多个数据库时用逗号(,)隔开 -
--parallel 连接到Vastbase的数据库连接池的大小 正整数

cmd_exporter的使用帮助详情

语法格式

gs_dbmind component cmd_exporter --help

显示如下帮助信息:

usage:  [-h] [--constant-labels CONSTANT_LABELS]
                   [--web.listen-address WEB.LISTEN_ADDRESS]
                   [--web.listen-port WEB.LISTEN_PORT]
                   [--disable-https]
                   [--config CONFIG] [--ssl-keyfile SSL_KEYFILE]
                   [--ssl-certfile SSL_CERTFILE] [--ssl-ca-file SSL_CA_FILE]
                   [--parallel PARALLEL] [--log.filepath LOG.FILEPATH]
                   [--log.level {debug,info,warn,error,fatal}] [-v]

Command Exporter (DBMind): scrape metrics by performing shell commands.

optional arguments:
  -h, --help            show this help message and exit
  --constant-labels CONSTANT_LABELS
                        a list of label=value separated by comma(,).
  --web.listen-address WEB.LISTEN_ADDRESS
                        address on which to expose metrics and web interface
  --web.listen-port WEB.LISTEN_PORT
                        listen port to expose metrics and web interface
  --disable-https       disable Https scheme
  --config CONFIG       path to config dir or file.
  --ssl-keyfile SSL_KEYFILE
                        set the path of ssl key file
  --ssl-certfile SSL_CERTFILE
                        set the path of ssl certificate file
  --ssl-ca-file SSL_CA_FILE
                        set the path of ssl ca file
  --parallel PARALLEL   performing shell command in parallel.
  --log.filepath LOG.FILEPATH
                        the path to log
  --log.level {debug,info,warn,error,fatal}
                        only log messages with the given severity or above.
                        Valid levels: [debug, info, warn, error, fatal]
  -v, --version         show program's version number and exit

参数说明

参数 参数说明 取值范围
-h, --help 帮助选项 -
--disable-https 禁用Https协议 -
--ssl-keyfile Https协议使用的证书私钥文件路径 -
--ssl-certfile Https协议使用的证书文件路径 -
--ssl-ca-file Https协议使用的CA证书文件路径
--web.listen-address 该exporter服务的绑定IP -
--web.listen-port 该exporter服务的侦听端口 1024-65535
--config 显性指定的待采集指标配置文件路径 默认是该功能yamls目录下的default.yml文件,可以参考该配置文件格式,错误配置会报错
--log.filepath 日志文件保存路径,默认保存在当前目录下 -
--log.level 日志文件的打印级别,默认为INFO级别 debug, info, warn, error, fatal
--parallel 并行执行shell命令的并发度 正整数
--constant-labels 常量列表,k=v格式,用逗号隔开,表明该exporter自带的常量标签 格式如cluster_name=demo,cluster_id=1
--version 显示版本信息 -

注意事项

  • 提供的exporter组件默认采用Https通信协议,因此需要用户默认提供ssl证书和秘钥文件,并通过--ssl-keyfile以及--ssl-certfile提供。若用户不希望使用Https协议,则可以通过--disable-https选项禁用该模式。

  • openGauss-exporter中连接数据库的用户需要monitor admin或以上权限,否则会出现部分指标无法采集的情况。

    • openGauss-exporter会从dbe_perf.statement_history中抽样慢SQL信息,dbe_perf.statement_history视图慢SQL记录与GUC参数log_min_duration_statementtrack_stmt_stat_level相关,其中log_min_duration_statement是慢SQL阈值,单位毫秒,具体值由用户设置;track_stmt_stat_level是SQL记录级别,默认为'OFF,L0',即只记录慢SQL信息,级别为L0,用户应在详细了解参数意义与作用的情况下谨慎修改。
  • openGauss-exporter采集数据库相关信息,主要包括部分系统表和视图中的数据(具体参见代码中vastbase_exporter中的配置文件),node-exporter采集系统指标信息,主要与系统磁盘、CPU等相关,reprocessing_exporter基于prometheus-server中的某些指标(具体参见代码中reprocessing_exporter中的配置文件)进行二次加工,最终提供加工后的数据供用户使用。

  • prometheus-server在拉取exporter数据时有超时机制,超时时间由scrape_timeout(默认10s)控制,因此当exporter采集数据量较大时,用户可根据实际情况增大scrape_timeout以防止超时报错,另外需要注意的是scrape_interval(采集间隔)不能比scrape_timeout小,否则会出现异常。

  • 如果数据库时区设置和系统不相同,可能会出现时间相关指标时间与系统时间不一致的情况,因此需要将用户时区与系统保持同步。

  • 当使用https通信时,工具会检测证书与密钥文件权限以及证书有效期,如果文件权限大于600则会出现报警,证书有效期小于90天会出现报警。

  • 当存在指标重复采集时,openGauss-exporter会出现异常,异常信息会打印到日志中。

  • openGauss-exporter的--config、--disable-settings-metrics、--disable-statement-history-metrics三个参数需要注意,其存在以下几种情况:

    • 用户不指定其中任何参数,则工具会同时对yamls目录下的三个配置文件中的指标进行采集。

    • 用户显式指定--config,则工具不会采集yamls目录下default.yml中的指标,而会采集用户指定配置文件中的指标,同时pg_settings.yml和statements.yml正常采集,此时用户需要注意指定的配置文件中的指标和pg_settings.yml、statements.yml中的指标不能存在重复采集的现象。

    • 用户显式指定--disable-settings-metrics,则工具不会采集yamls目录下pg_settings.yml中的指标,用户显式指定--disable-statement-history-metrics,则工具不会采集yamls目录下statements.yml(慢SQL相关)中的指标。

  • exporter启动后,一般情况下不会终止进程并退出(如连接的数据库地址不可用、连接的数据库用户被删除或禁用等),而是会在日志中记录报错信息,并在后台重新尝试。

环境部署

1、部署opengauss-exporter:启动openGauss-exporter(下述命令中各参数以实际为准)。

gs_dbmind component opengauss_exporter --url postgresql://user:password@ip:port/dbname --web.listen-address 192.168.1.100 --disable-https

(1)若提示需要用户提供--ssl-keyfile与--ssl-certfile选项:

exporter默认采用Https模式通信,因此需要用户指定证书及其私钥文件的路径。相反,如果用户只想采用Http模式,则需要显式指定--disable-https选项,从而禁用Https协议。

(2)若提示用户需要输入PEM密码(Enter PEM pass phrase):

用户采用Https模式,并给定了证书及其秘钥文件的路径,且该秘钥文件是经过加密的,则需要用户输入该加密私钥证书文件的密码。

例如:

gs_dbmind component opengauss_exporter --url postgresql://vastbase_ai:Gauss_1234@127.0.0.1:5632/vastbase --web.listen-address 172.16.105.53 --disable-https

上述命令中use和password填写连接vastbase的用户和密码(密码中不要包含@),ip和port是vastbase的ip和端口号,listen-address 也是vastbase的ip。

2、部署reprocessing-exporter:启动reprocessing-exporter(IP和端口号以配置的 Prometheus Ip 信息和端口为准)。

gs_dbmind component reprocessing_exporter 172.16.105.53 9090 --web.listen-address 172.16.105.53 --disable-https

3、部署node-exporter,对于Prometheus监控平台都需要部署node-exporter用于监控Linux操作系统,后文提到的部分AI功能也需要依赖node-exporter采集Linux系统指标,故也需要用户进行部署。

node-exporter部署请参考AI环境部署章节中的安装prometheus和node-exporter

使用方法详见:https://prometheus.io/docs/guides/node-exporter/#installing-and-running-the-node-exporter

4、在root用户下修改prometheus.yml文件。

vi /etc/prometheus/prometheus.yml

内容如下图所示:

scrape_configs:
 ...
   - job_name: 'opengauss_exporter'
     static_configs:
     - targets: ['172.16.105.53:9187']
   - job_name: 'reprocessing_exporter'
     scheme: https
     tls_config:
         ca_file: xxx.crt
     static_configs:
     - targets: ['127.0.0.1:8181']
   - job_name: 'node_exporter'
     static_configs:
     - targets: ['127.0.0.1:9100']
 ...

5、在root用户下重启prometheus服务。

systemctl restart prometheus

6、启动DBMind后台服务。例如配置目录为confpath,则启动命令如下:

gs_dbmind service start -c confpath