GaussDB-使用指导

GaussDB-使用指导

用户可通过gs_dbmind命令启动对应的exporter。下面为用户演示一个完整的Prometheus监控平台的搭建过程。

  1. 部署Prometheus主进程,运行如下命令:

     

    prometheus --config.file=prometheus.yml
     

     

  2. 部署openGauss-exporter:启动openGauss-exporter,采用默认侦听端口号9187,侦听地址为192.168.1.100,采用HTTPS协议,则命令可以为:

     

    gs_dbmind component opengauss_exporter --url postgresql://user:password@ip:port/dbname --web.listen-address 192.168.1.100 --ssl-keyfile server.key --ssl-certfile server.crt --ssl-ca-file server.crt
     

     

  3. 部署reprocessing-exporter:启动reprocessing-exporter,采用默认侦听端口号8181,侦听地址为192.168.1.101,Prometheus-server IP与端口号为192.168.1.100:9090,采用HTTPS协议,则命令可以为:

     

    gs_dbmind component reprocessing_exporter 192.168.1.100 9090 --web.listen-address 192.168.1.101 --ssl-keyfile server.key --ssl-certfile server.crt --ssl-ca-file server.crt
     

     

  4. 部署cmd-exporter: 启动cmd-exporter,使用默认参数,设置采集的数据库日志目录路径,并给定证书信息:

     

    gs_dbmind component cmd_exporter --ssl-keyfile server.key --ssl-certfile server.crt --ssl-ca-file server.crt --pg-log-dir /path/to/pglog
     

     

  5. 部署node-exporter:一般而言,Prometheus监控平台都需要部署node-exporter用于监控Linux操作系统,后文提到的部分AI功能也需要依赖node-exporter采集Linux系统指标,故也需要用户来部署;使用方法详见:https://prometheus.io/docs/guides/node-exporter/#installing-and-running-the-node-exporter。用户可直接运行该node-exporter进程,其默认端口号为9100,启动命令行为:

     

    node_exporter
     

     

DBMind高可用功能需要在未纳管实例的情况下实现,因此接口不需要token认证。应当使用默认的HTTPS协议以进行SSL双向认证,使用HTTP协议则可能引入攻击者直接发起未授权请求的安全风险。

为保证DBMind云上使用时高可靠,exporter组件提供了组件状态查询和部分异常修复接口,详细请参见表1

  • 组件状态查询接口示例:
    curl -X 'POST'"http://127.0.0.1:8080/v1/api/check-status" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"cmd": "./gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9181 --log.filepath /xxx/dbmind_cmd_exporter.log --disable-https"}'
     

    如果使用HTTPS协议,则查询示例为:

    curl -X 'POST'"https://127.0.0.1:8080/v1/api/check-status" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"cmd": "./gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9181 --log.filepath /xxx/dbmind_cmd_exporter.log --ssl-keyfile xx.key --ssl-certfile xx.crt --ssl-ca-file xx.crt"}' --cacert xx.crt --key xx.key --cert xx.crt
     

    返回结果示例:

    {"data":{"error_msg":"","result":{},"state":"NORMAL"},"success":true}
     
  • 组件异常修复接口示例:
    curl -X 'POST'"http://127.0.0.1:8080/v1/api/repair" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"cmd": "./gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9181 --log.filepath /xxx/dbmind_cmd_exporter.log --disable-https"}'
     

    如果使用HTTPS协议,则修复示例为:

    curl -X 'POST'"https://127.0.0.1:8080/v1/api/repair" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"cmd": "./gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9181 --log.filepath /xxx/dbmind_cmd_exporter.log --ssl-keyfile xx.key --ssl-certfile xx.crt --ssl-ca-file xx.crt"}' --cacert xx.crt --key xx.key --cert xx.crt
     

    返回结果示例:

    {"data":{"error_msg":"","result":{},"state":"SUCCESS"},"success":true}
     

exporter启动后,会根据yamls目录下的配置文件信息采集特定的指标。指标的配置信息如下例所示:

indicator_name:
  name: indicator_name
  desc: xxx
  query:
    - name: indicator_name
	  sql: xxx
	  version: xxx
	  timeout: 10
	  status: enable
  metrics:
    ...
  status: enable
  ttl: 0
  timeout: 10
 

当status值为enable时,会在指定的超时时间内对该指标进行采集。用户可以对默认开启状态status和超时时间timeout进行修改,修改后需重新启动exporter才能生效。

组件状态查询和修复接口只针对DBMind自研exporter,包括opengauss_exporter、cmd_exporter、reprocessing_exporter,对于开源的node_exporter则不支持。

当前Exporter组件支持查询的异常场景如下:

  • PID文件丢失或文件内容异常:当用户启动服务/组件后,会自动生成*.pid文件来记录进程对应的进程标识符,也就是PID。PID文件用于云管控来判断进程状态,发现进程级别的异常并进行修复。为防止PID文件的误删除与内容的误修改,需要定期判断PID文件是否存在以及其内容是否正确。
  • 日志文件丢失:当用户启动服务/组件后,会自动生成*.log文件来记录进程运行的日志。此日志文件用于快速定位问题的根源、追踪程序执行的过程等。为防止日志文件的误删除,需要定期判断日志文件是否存在。
  • 资源占用异常:DBMind服务会执行索引推荐、指标分析、智能巡检等功能,需要占用系统资源;同样的,exporter组件会采集服务器上的指标,用于后续分析,也会占用系统资源;当服务/组件的CPU或内存占用超过阈值时,说明资源占用过高,服务/组件出现异常。因此需要监控服务和组件的资源占用情况。
  • 数据库异常:opengauss_exporter需要从数据库中获取数据,用于生成采集结果,所以需要判断数据库是否能够正常连接。

资源占用阈值及告警设置如下:

  • 内存占用阈值:max(总内存的1%, 200MB)。
  • CPU多核占用阈值:cmd_exporter 10%,opengauss_exporter 10%,reprocessing_exporter 10%, DBMind 80%。
  • CPU单核占用阈值:cmd_exporter 50%,opengauss_exporter 50%,reprocessing_exporter 50%,DBMind不做限制。
  • 调用高可用接口会检查资源占用,连续超过3次阈值才会触发资源占用告警。

风险:当占用资源连续超过阈值三次时,会触发告警,管控侧会重启服务,导致正在运行的任务中断。

当前Exporter针对组件异常的修复性说明如下:

  • PID文件丢失:可自动修复;
  • 日志文件丢失:可自动修复;
  • 组件资源占用异常:不可通过接口修复;
  • 数据库异常:不可通过接口修复;
  • 针对Exporter组件不可修复的异常,需要云侧进行处理,如重启进程。
  • openGauss-exporter中连接数据库的用户需要monitor admin或以上权限,否则会出现部分指标无法采集的情况。同时openGauss-exporter不支持使用数据库初始用户来进行数据采集。
  • openGauss-exporter中连接数据库的用户需要获取dbe_perf模式下的数据,因此需要保证其具有该模式的权限。
  • openGauss-exporter会从dbe_perf.statement_history中抽样慢SQL信息,dbe_perf.statement_history视图慢SQL记录与GUC参数log_min_duration_statement和track_stmt_stat_level相关,其中log_min_duration_statement是慢SQL阈值,单位毫秒,具体值由用户设置;track_stmt_stat_level是SQL记录级别,默认为'OFF,L0',即只记录慢SQL信息,级别为L0,建议用户在详细了解参数意义与作用的情况下谨慎修改。
  • openGauss-exporter采集数据库相关信息,主要包括部分系统表和视图中的数据(具体参见代码中opengauss_exporter中的配置文件)。node-exporter采集系统指标信息,主要与系统磁盘、CPU等相关。reprocessing_exporter基于prometheus-server中的某些指标(具体参见代码中reprocessing_exporter中的配置文件)进行二次加工,最终提供加工后的数据供用户使用。
  • 当数据库部署在多层网络上时(集中式:管理层-数据层),openGauss-exporter的启动命令中的url参数必须使用数据层的ip地址,否则会影响DBMind的其他功能。
  • prometheus-server在拉取exporter数据时有超时机制,超时时间由scrape_timeout(默认10s)控制,因此当exporter采集数据量较大时,用户可根据实际情况增大scrape_timeout以防止超时报错,另外需要注意的是scrape_interval(采集间隔,默认15s)不能比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启动后,一般情况下不会终止进程并退出(如连接的数据库地址不可用、连接的数据库用户被删除或禁用等),而是会在日志中记录报错信息,并在后台重新尝试。
  • cmd_exporter默认Linux系统定义了需要监控的gaussDB的日志路径:$GAUSSLOG,如果没有定义$GAUSSLOG则需要进行定义。
  • cmd_exporter默认匹配的是GUC参数“log_statement='none'”时的日志格式,当log_statement为其他参数时cmd_exporter会无法识别日志格式。
  • 由于cmd_exporter需要访问数据库日志和使用cm工具,所以需要由数据库用户部署cmd_exporter来获取相应的状态信息。
  • 实例升级过程中,opengauss_exporter无法正常采集数据,cmd_exporter无法采集数据库的cm相关信息。
  • cmd_exporter的日志采集功能对于内核日志的日志文件名和日志格式都有要求,在gaussdb.conf文件中,log_filename的格式要求为'gaussdb-%Y-%m-%d_%H%M%S.log',log_line_prefix的格式要求为'%m %n %u %d %h %p %S %x %a'。
  • cmd_exporter采集的日志指标为散点图形式,各个采集点之间标签不同,所以不能合并到同一个集合中,不适合用折线图的方式进行展示,请采用表格或者散点图的方式进行展示。
  • 当cmd_exporter在一个采集周期内没有采集到日志指标时(如gaussdb_log_ffic为空,则表示没有生成ffic文件),则该指标数据为空。
  • 在某些特殊情况下由于日志文件激增,考虑到cpu的处理能力和内存限制,cmd_exporter为日志的消息队列设置了长度上限以防止内存泄露。当队列满时将停止新的日志事件入列直到队列有空间为止。这一设计可能导致在日志负载高的时候丢失部分日志指标。
  • reprocessing_exporter中采集指标os_disk_usage时,只针对EXT和XFS文件系统,其他文件系统不会采集。
 
posted @ 2024-11-27 09:54  jerrywang1983  阅读(42)  评论(0)    收藏  举报