暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过 PEM 监控 PGD

新智锦绣 2024-06-13
64

点击蓝字关注我们


Postgres Enterprise Manager 或 PEM 是 EnterpriseDB 的 PostgreSQL 和 EDB Postgres Advanced Server (EPAS) 的全面监控和管理解决方案。同时通过PEM也可以实现对PGD的监控和管理。

在 PEM 术语中,托管服务器是指 PEM 通过 PEM Agent监控和管理的数据库服务器。非托管服务器是 PEM 的用户界面可以用于连接和管理的服务器,但还未通过PEM Agent注册到PEM的服务器。

本篇不作为PEM的安装和配置指导,主要展示PEM对PGD部分的监控功能。关于PEM Server及PEM Agent的安装配置,我们可以在后续的文章中介绍。


一、 PEM Agent 代理


PEM 代理通常安装在每台被托管数据库服务器的主机上。它用于收集数据库服务器及其底层主机的监控指标,并在需要时执行任务(例如,更新数据库服务器配置并重新启动)。收集指标的探针以及代理可能在主机或数据库服务器上执行的所有其他任务都是按计划进行的;从本质上讲,PEM 代理是计划作业的执行引擎。

在理想情况下,每台运行数据库服务器的主机(物理或虚拟主机)上都会运行一个代理,但代理也可以远程监控数据库服务器,只是在这种情况下是无法监控底层主机或无法执行需要访问底层主机操作系统的任务。

代理通过连接Postgres数据库组件与 PEM 服务器通信,端口通常为 5432 或 5444。首次安装代理时,会使用一个合适的用户账户连接 PEM 服务器,以执行注册流程。在 PEM 服务器的数据库中为代理创建一个角色,同时创建一个用于身份验证的证书。启动代理服务时,它将使用该角色和证书进行身份验证。代理会连接到 PEM 服务器,因此可以在 NAT 防火墙内部的主机上运行。


二、 PEM Server 服务器


PEM 服务器是一系列组件的集合,这些组件协同工作以托管 PEM 安装:

  • 带有SSL Utils扩展的PostgreSQL或EPAS数据库服务器;

  • 一个 PEM Agent实例;

  • Apache HTTPD Web服务器;

从技术上讲,这三个组件可以托管在不同的服务器上,但典型的安装方式是这三个组件运行在同一台服务器上,或者 PEM 代理和 Apache HTTPD 服务器在一台主机上,数据库在另一台主机上。


2.1 PEM 的数据库服务器


数据库服务器用于存储所有监控数据、大部分系统配置以及用于执行探测和其他任务的调度信息。它是 PEM 的中心枢纽。

代理使用数据库服务器中定义的角色连接PEM。终端用户也是如此,他们也是数据库中的角色。这就允许使用Postgres支持的大多数身份验证机制来验证终端用户,还允许使用Postgres的行级安全功能自动保护来自不同数据库服务器的监控数据。基于角色的访问控制(RBAC)也与Postgres角色系统结合在一起;在允许用户执行特定操作或使用特定工具之前,PEM 会检查用户是否属于适当的角色。

数据存储在PEM服务器数据库的多个不同schemas中。pem schema用于存储系统配置数据,如代理和数据库服务器注册、探针和警报定义与配置以及系统参数。pemdata schema用于存储系统中每个探针最近收集到的度量数据,数据库信息存储在每个探针的一个表中。这些数据会自动复制到pemhistory schema中,该模式包含每个探针的类似表格。在pemdata schema中保存一份最近记录的度量值副本,当只需要最近的值来绘制图表或图形时,可以更快地访问数据。某些探针还可以配置为只存储最新数据,而不存储历史数据。


2.2 PEM 的 Agent 代理


作为 PEM 服务器一部分的 PEM 代理执行与任何托管主机上相同的所有功能(即运行探测器和执行任务),为 PEM 提供自我监控。此外,它通常还执行许多其他附加功能,这些功能在代理的配置文件中自动启用:

  • 警报处理:检查收集的指标数据,看看它是否符合任何定义的警报条件,如果符合,则采取适当的措施;

  • 假脱机程序spooler管理通知队列,通常是警报条件的队列。这些可能是 SMTP 电子邮件、SNMP 陷阱或 Nagios 被动服务检查;

  • 垃圾收集清理并删除 PEM 数据库中不再需要的旧数据;

作为 PEM 服务器一部分运行的 PEM 代理的 ID 始终为 1。


2.3 PEM 的 Apache HTTPD 服务器


Apache HTTPD服务器(用于托管 PEM 的用户界面和类REST的API(或 Web 应用程序)。两者都是使用Flask框架编写的Python应用程序中实现的,该框架使用mod_wsgi托管在Apache中。Web应用程序使用不同的方法与其他服务器和进程进行通信:

  • psycopg2 驱动程序利用 PostgreSQL wire协议与 PEM 数据库服务器和托管数据库服务器进行通信;

  • 类REST的API用于与EDB Ark进行通信;

用户界面以HTML5和Javascript实现,并由Web应用程序提供给客户端浏览器。Ajax 请求是利用Python中实现的类REST的API从用户界面发送到后端服务器。


2.4 SQL Profiler 插件


SQL Profiler 插件是 PEM 的一个可选组件,可以安装在向 PEM 服务器注册的任何托管或非托管数据库服务器上。PEM 中的 SQL Profiler 工具使用该插件来监视和记录数据库服务器执行的每个操作以进行分析。

SQL Profiler 插件的设计目的是在被监控的数据库服务器上产生尽可能少的开销,以最大限度地减少监控本身扭曲收集结果的机会。它通过将数据写入受监控服务器数据目录中的文件来实现这一点,每个服务器后端利用一个文件来消除文件锁定的需要。数据以 CSV 格式写入,以尽量减少在分析服务器时进行的任何处理。


三、 PEM 中对 PGD 的监控


PEM 版本8.1.0以上和EDB Postgres Distributed 版本 3.7.9及更高版本可以配合,实现在PEM中对EDB PGD的运行状态进行监控。有效补充了PGD运行状态的可视化监控和管理。

首先在PGD的每个节点安装agent程序,并通过pemworker –register-agent注册本地代理到PEM Server服务器。

    # Running as root
    /usr/edb/pem/agent/bin/pemworker --register-agent \
    --pem-server pemserver \
    --pem-user postgres \
    --pem-port 5432 \
    --display-name linuxhost-1\

    OUTPUT 输出

    Postgres Enterprise Manager Agent registered successfully!

    注册agent还有很多的参数可选,如:

    --allow_server_restart 启用该allow_server_restart参数以允许 PEM 重新启动受监控的服务器。默认值为 True。

    --allow-batch-probes  启用该allow-batch-probes参数以允许 PEM 在此代理上运行批处理探测。默认值为 False。

    --batch-script-user  用于执行批处理/shell 脚本的操作系统用户。默认值为 none。如果将此参数留空或指定的用户不存在,则不会执行脚本。

    --enable-heartbeat-connection  启用该enable-heartbeat-connection参数可在 PEM Agent 和服务器之间创建专用检测信号连接,以更新活动状态。默认值为 False。

    --enable-smtp  启用enable-smtp parameter以允许 PEM 代理代表 PEM 服务器发送电子邮件。默认值为 False。

    --enable-snmp  启用此选项以enable-snmp parameter允许 PEM 代理代表 PEM 服务器发送 SNMP 陷阱。默认值为 False。


    使用之前PGD的环境,分别在每个PGD节点注册代理到PEM服务器,如果成功则会在PEM管理界面的PEM Agents显示成功注册的代理。如下图linuxhost-1,linuxhost-2,linuxhost-3,linuxhost-4



    配置PEM以监控EDB PGD节点,通过PEM Web客户端创建服务器定义。在PEM仪表板使用“新建服务器”对话框中的选项卡指定EDB PGD节点的常规连接属性。



    在“connection”标签页输入连接信息PGD节点一linuxhost-1的连接信息。



    在PEM Agent选项中选择“linuxhost-1”agent,并输入主机连接选项。密码正确点“保存”就可以成功添加PGD数据节点1,同理可以分别选择各自主机的agent,添加其它linuxhost-2和linuxhost-3数据节点。数据节点分别命名为PGD-Node1,PGD-Node2,PGD-Node3。



    在主界面“monitoring”选项下,选择任意一个数据节点,PGD-Node1,再选择bdrdb数据库,这时在子级菜单“database”下面就有PGD Node Monitoring,PGD Group Monitoring和PGD Admin在个监控选择。



    选择“PGD Admin”,可以查看“PGD Node Summary”“Global Locks”“PGD Group Version Details”“PGD Workers”“PGD Camo details”及“PGD Raft Details”等信息。



    选择“PGD Group Monitoring”可以查看PGD组内的订阅延迟及复制延迟详细信息。



    在“PGD Node Monitoring”选项下显示节点相关的信息,“Node Slots Replay Lag”“PGD表统计及订阅统计”等信息。



    如果测试中没有显示相关信息,请检查是否启用的相对探测选项。要在 EDB Postgres Distributed (PGD) 仪表板上包含监视信息,必须为每个 EDB Postgres Distributed 组启用相对探测。若要启用探测,请右键单击节点名称,然后选择“管理”>“管理探测”选择要启用的探测选项。请参阅 EDB Postgres 分布式探测器的完整列表(如下图)。



    发现“分享”“赞”了吗,戳我看看吧


    文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论