Greenplum中的gpperfmon数据库

0    104    2

Tags:

👉 本文共约22378个字,系统预计阅读时间或需85分钟。

简介

gpperfmon 数据库是一个专用数据库,包含查询状态和系统指标的可选的性能管理数据库,Greenplum segment 主机上的数据收集代理程序将查询和系统统计信息保存在这个数据库中。

gpperfmon_install管理工具创建名为gpperfmon的数据库, 并启用运行在Greenplum数据库Master和Segment节点上的数据收集代理。 运行在节点上的数据收集代理会从节点上收集查询状态,还包括诸如CPU和内存使用量等系统指标。 Master节点上的代理周期性的(通常15秒)从节点代理上收集数据并更新gpperfmon数据库。 用户可以查询gpperfmon数据库来查看查询和系统指标。

gpperfmon 数据库通过 gpperfmon_install 命令行工具创建。 这个工具然后创建 gpmon 数据库角色并启用 master 和 segment 主机上的数据收集代理 程序。更多关于该工具使用和数据收集代理配置的信息,请参考 Greenplum 数据库工具指南 中的 gpperfmon_install 参考手册。

gpperfmon 数据库由三组表组成。它们分别用于在不同阶段捕捉查询和系统状态信息。

  • _now 系列表存储当前系统指标,例如活动查询等。
  • _tail 系列表用于在数据保存到 _history 系列表之前暂存数据。 _tail 系列表仅供内部使用,不提供用户查询。
  • _history 系列表用于存储历史数据。

_now 和 _tail 表的数据存储为文本文件,保存在 master 主机 文件系统中,通过外部表在 gpperfmon 数据库中访问。history 系列表 是 gpperfmon 数据库的常规内存表。只有运行超过一定时间(默认是 20 秒)的查询才会 保存到历史数据表中。你可以通过设置 $MASTER_DATA_DIRECTORY/gpperfmon/conf/gpperfmon.conf 中的 min_query_time 参数来修改这个门限值。设置为 0 将会保存所有查询历史信息。

Note: gpperfmon 不支持 ALTER SQL 命令。 ALTER 查询不会被记录在 gpperfmon 历史查询表中。

历史查询表按月进行分区。关于移除老分区的信息,请参见 历史查询表分区保留

该数据库包含以下几类表:

  • database_* 系列表存储一个 Greenplum 数据库实例的查询负载信息。
  • diskspace_* 系列表存储磁盘 空间指标。
  • logalert* 系列表存储 pg_log 中的错误和警告消息。
  • queries_* 系列表存储高级查询 状态信息。
  • segment_* 系列表存储 Greenplum 数据库 segment 实例的内存分配和统计信息。
  • socketstats* 系列表存储一个 Greenplum 数据库实例中 socket 使用统计指标信息。 注意: 这些表为将来使用保留,当前没有填充信息。
  • system_* 系列表存储系统工具程序指标。

gpperfmon 数据库还包含下列视图:

  • dynamic_memory_info 视图展示每个主机中所有 segments 的汇总, 以及每个主机中 动态内存使用量。
  • memory_info 视图展示来自 system_history 和 segment_history 表的每个主机的内存信息.

历史查询表分区保留

gpperfmon 数据库中的 历史查询 表按月进行分区。分区 在需要时会以两个月为增量自动添加。

$MASTER_DATA_DIRECTORY/gpperfmon/conf/gpperfmon.conf 配置文件中的 partition_age 参数可以设置为要保留的每月最大分区数。添加新分区时,将自动 删除早于指定值的分区。

partition_age 的默认值是 0, 这意味着管理员必须手动删除 不需要的分区。

警报日志处理和日志轮换

当 gp_gperfmon_enable 服务期配置参数设置为 true 时, Greenplum 数据库 syslogger 会把警报消息写到一个 .csv 文件中。该文件位于 $MASTER_DATA_DIRECTORY/gpperfmon/logs 目录。

通过修改 postgresql.conf 文件中的 gpperfmon_log_alert_level 服务期配置参数,可以将写入日志消息级别设置为 none, warning, error, fatal, 或者 panic。默认的消息基本是 warning。

日志存储的目录可以通过设置 $MASTER_DATA_DIRECTORY/gpperfmon/conf/gpperfmon.conf 配置文件中的 log_location 配置变量来改变。

syslogger 每 24 小时,或在当前日志文件达到或超过 1MB 时轮换警报日志。

如果单条错误消息包含一个长 SQL 语句或者长堆栈信息时,轮换日志文件可能超过 1MB。 此外,syslogger 会分批处理错误消息,每个日志记录过程分别对应一个单独的分块。日志块的 大小取决于操作系统; 例如,在 Red Hat Enterprise Linux 系统中, 它是 4096 字节。如果许多 Greenplum 数据库会话同时生成错误消息,则在检查文件大小并触发日志轮换之前, 日志文件可能会显着增长。

gpperfmon 数据收集过程

当 Greenplum 数据库启用 gpperfmon 支持下启动时, 它将创建一个 gpmmon 代理进程。 gpmmon 然后在 Greenplum 数据库集群的 master 主机和每个 segment 主机上启动一个 gpsmon 代理进程。Greenplum 数据库的 postmaster 进程监视 gpmmon 进程并在需要时重启该进程;gpmmon 进程监视和在需要时重启 gpsmon 进程。

gpmmon 进程以循环方式运行,并按一个可配置间隔检索 gpsmon 系列进程聚合的数据,并将其添加到 _now 和 _tail 外部数据库表 的数据文件, 然后存入 _history 常规内存数据库表中。

Note: gpperfmon 中的 log_alert 表流程不同于此,因为警报消息 由 Greenplum 数据库系统 logger 发送,而不是通过 gpsmon 发送。参见 警报日志处理和日志轮换 了解更多信息。

$MASTER_DATA_DIRECTORY/gpperfmon/conf/gpperfmon.conf 配置文件中的 两个配置参数控制着 gpmmon 被触发的频度:

  • quantum 参数是以秒为单位的频率, gpmmon 依此频率向 segment 节点的 gpsmon 代理进程请求数据,并将获取到的数据添加到 _now 和 _tail 外部表数据文件中。 quantum 参数的有效设定值是 10, 15, 20, 30, 以及 60. 默认值是 15.
  • harvest_interval 参数是以秒为单位的频率, 依此频率将 _tail 表中的数据移动到 _history 表中。 harvest_interval 至少是 30. 默认值为 120.

参见 Greenplum 数据库工具指南 中的 gpperfmon_install 管理工具 参考手册, 查阅 gpperfmon 配置参数完整列表。

以下步骤描述了,当 gpperfmon 支持启用时,数据从 Greenplum 数据库进入 gpperfmon 的流程。

  1. 在执行查询时, Greenplum 数据库查询调度程序和查询执行程序进程以 UDP 报文形式发送查询状态消息。 gp_gpperfmon_send_interval 服务器配置变量决定数据库发送这些消息的频率。 默认为每秒发送一次。
  2. 每个主机上的 gpsmon 进程接收 UDP 报文, 合并并汇总所包含的数据, 并添加其他主机指标,例如 CPU 和内存使用率。
  3. gpsmon 进程继续累积数据,直到它们从 gpmmon 接收到转储命令为止。
  4. gpsmon 进程通过发送其累积的状态数据和日志警报到一个 gpmmon 事件侦听线程来响应 dump 命令。
  5. gpmmon 事件处理程序将指标保存到 master 主机的 $MASTER_DATA_DIRECTORY/gpperfmon/data 目录下的 .txt 文件。

在每一个 quantum 间隔 (默认为 15 秒), gpmmon 执行以下步骤:

  1. 发送一个 dump 命令到 gpsmon 进程。

  2. 收集和转换 .txt 文件(保存在 the $MASTER_DATA_DIRECTORY/gpperfmon/data 目录中) 为 .dat 外部数据文件, 支持通过 gpperfmon 数据库中的 _now 和 _tail 外部表访问。

    例如, 磁盘空间指标被添加到 diskspace_now.dat 和 _diskspace_tail.dat 带分隔符的文本文件中. 这些文本文件经由 gpperfmon 数据库中的 diskspace_now 和 _diskspace_tail 表访问.

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
    Greenplum中的gpperfmon数据库后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
    验证码:
    请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部