利用pg_stat_get_wlm_instance_info函数,实时分析DWS集群资源使用情况

举报
林欣 发表于 2024/06/23 15:53:15 2024/06/23
【摘要】 前言在大数据和云计算的时代,分布式数据库系统(如DWS集群)已经成为企业处理和分析海量数据的核心工具。然而,随着业务量的不断增长,如何有效地管理和监控这些集群资源,确保它们能够高效、稳定地运行,成为了每个数据库管理员和运维人员必须面对的挑战。在DWS集群中,资源管理是一个至关重要的环节。当集群开启了资源管理功能时,它会定时收集各个实例的资源使用情况,为管理员提供宝贵的参考数据。华为Gaus...

前言

在大数据和云计算的时代,分布式数据库系统(如DWS集群)已经成为企业处理和分析海量数据的核心工具。然而,随着业务量的不断增长,如何有效地管理和监控这些集群资源,确保它们能够高效、稳定地运行,成为了每个数据库管理员和运维人员必须面对的挑战。

在DWS集群中,资源管理是一个至关重要的环节。当集群开启了资源管理功能时,它会定时收集各个实例的资源使用情况,为管理员提供宝贵的参考数据。华为GaussDB(DWS)等数据库管理系统提供了pg_stat_get_wlm_instance_info函数,该函数能够实时获取各个计算节点(CN)和数据节点(DN)的资源使用情况,包括CPU、内存、IO等信息。

下面,我们将详细介绍如何利用pg_stat_get_wlm_instance_info函数来构建一个SQL查询,以获取DWS集群中各个实例的资源使用情况。

SQL查询构建

首先,我们需要从pg_stat_get_wlm_instance_info()函数中获取每个实例的资源使用情况。由于这个函数会返回多条记录,并且我们只需要最新的记录,因此我们需要在查询中使用ORDER BY timestamp DESC LIMIT 1来对结果进行排序和限制。

同时,为了获取每个实例所在的物理节点信息(即节点主机名),我们需要查询pgxc_node表。这个表包含了集群中所有节点的相关信息,包括节点名(node_name)和节点主机名(node_host)。

下面是一个完整的SQL查询示例:

SELECT   
    t2.node_host,   
    t1.node_name,   
    t1.used_cpu,           -- CPU消耗信息  
    t1.free_mem,   
    t1.used_mem,   
    CAST((t1.used_mem / (t1.used_mem + t1.free_mem) * 100) AS NUMERIC(5,2)) AS mem_util,  -- 内存消耗信息  
    t1.io_util,            -- IO消耗信息  
    t1.disk_read,   
    t1.disk_write   
FROM   
    (   
        SELECT *   
        FROM pgxc_parallel_query(   
            'all',   
            '   
                SELECT    
                    instancename AS node_name,   
                    used_cpu,   
                    free_memory AS free_mem,   
                    used_memory AS used_mem,   
                    io_util::NUMERIC(5,2),   
                    disk_read::NUMERIC(20,2),   
                    disk_write::NUMERIC(20,2)     
                FROM pg_stat_get_wlm_instance_info()   
                ORDER BY timestamp DESC   
                LIMIT 1   
            '   
        ) tmp (node_name TEXT, used_cpu INT, free_mem INT, used_mem INT, io_util NUMERIC(5,2), disk_read NUMERIC(20,2), disk_write NUMERIC(20,2))   
    ) t1,   
    (   
        SELECT node_name, STRING_AGG(DISTINCT node_host, ',') AS node_host   
        FROM pgxc_parallel_query(   
            'cn',   
            '   
                SELECT node_name::TEXT,   
                    CAST((CASE WHEN node_host::TEXT=''localhost'' THEN NULL ELSE node_host END) AS TEXT) AS node_host   
                FROM pgxc_node;   
            '   
        ) tmp (node_name TEXT, node_host TEXT)   
        GROUP BY 1   
    ) t2   
WHERE   
    t1.node_name = t2.node_name;

查询结果解读

执行上述SQL查询后,你将获得一个结果集,其中包含了每个实例的节点主机名、节点名、CPU使用情况、内存使用情况、IO使用情况等信息。其中,mem_util字段表示内存的使用率(以百分比形式展示),它可以帮助你快速了解每个实例的内存使用状况。

注意事项

  • 请确保在执行查询前已经开启了DWS集群的资源管理功能,并且pg_stat_get_wlm_instance_info函数可用。
  • 由于pg_stat_get_wlm_instance_info函数返回的是实时数据,因此查询结果可能会随着时间的推移而发生变化。如果需要定期
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。