最佳实践:数据推送定时推播Hologres Query诊断信息

通过DataWorks的数据推送功能,能够将数据库的数据组织查询后推送到各渠道,除了能推送业务数据,也能将数据库自身提供的监控数据进行推送。本实践将以Hologres为例,在每日9:00定时推送Hologres的监控数据,方便掌握Hologres的状态。

实践准备

  1. 创建DataWorks空间,本实践以标准模式空间为例。创建空间的详细信息请参见创建工作空间

  2. 创建Hologres数据源,新建Hologres数据源请参见创建Hologres数据源

  3. 准备DataWorks资源组,并绑定至已创建空间,详情可参见使用Serverless资源组

使用限制

  • 数据推送功能推送至不同对象时的数据大小限制:

    • 推送目标为钉钉,推送数据大小不超过20KB

    • 推送目标为飞书,推送数据大小不超过30KB,图片小于10MB

    • 推送目标为企业微信,每个机器人发送的消息不能超过20条/分钟

    • 推送目标为Teams,推送大小不大于28KB

    说明

    钉钉移动端和企业微信暂不支持Markdown中定义的表格的渲染,建议在推送内容中使用表格组件来展示数据内容。飞书与Teams移动版支持正常展示Markdown中定义的表格。

  • 地域限制华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、西南1(成都)、新加坡、美国(硅谷)、美国(弗吉尼亚)。

步骤一:新建数据推送目标

数据推送任务可以将查询信息推送至目标渠道中,创建推送任务前,需要先创建好需要推送的目标,以供后续推送使用。

  1. 进入数据服务页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据服务,在下拉框中选择对应工作空间后单击进入数据服务

  1. 服务开发页面的左下角单击image弹出设置页面,切换至推送目标管理页签,单击创建数据推送目标新建需要推送的对象。

    创建数据推送目标时,配置如下:

    • 类型:选择需要推送的渠道类型。

    • 对象名称:自定义需要新建的推送目标名称。

    • Webhook:所选推送渠道中的Webhook链接。

    说明

步骤二:新建数据推送任务

  1. 进入数据服务。

    登录DataWorks控制台,切换至数据源所在地域,单击左侧导航栏的数据开发与治理 > 数据服务,在下拉框中选择对应工作空间后单击进入数据服务

  2. 新建数据推送任务。

    数据服务的左侧导航栏中,单击服务开发 > 数据推送切换到数据推送页下,单击image选择新建数据推送,设置数据推送任务名称后,单击确定,进入数据推送任务配置页面。

步骤三:配置实践

本文为您提供了七个实践场景,您可按需求选择不同的实践进行操作。

实践内容

说明

实践一:查看制造最多与最慢Query的使用者

该推送任务中编写的SQL用来查询出如下信息:

  • 查出慢Query最多的User。

  • 统计前50笔慢Query。

实践二:查询近12小时消耗比较高的Query

该推送任务中编写的SQL用来查询最近12个小时内,消耗比较高的Query。可根据业务修改查询时间,查询某时间段内消耗较高的Query。

实践三:查看最近3小时内每小时的Query访问量和数据读取总量

该推送任务中编写的SQL用来查询最近3小时内每小时的Query访问量,可以用来对比判断每个小时是否有数据量的变化。

实践四:查看昨日新增的Query数量

该的推送任务中编写的SQL用来查询昨日新增的Query的数据量,可根据时间分区的调整来查询上周、上月等信息。

实践五:查看与昨天同一时间对比过去3小时的数据访问量情况

该推送任务中编写的SQL用来查询今天与昨天同一时间对比过去3小时的数据访问情况,可根据调整时间来查询更长时间的数据作为对比。

实践六:查询最近30分钟Query各阶段耗时比较高的Query

该推送任务中编写的SQL用来查询各阶段耗时比较高的Query,可根据业务修改时间,实现对目标时间段耗时比较高的Query的查询。

实践七:查询最先失败的Query

该推送任务中编写的SQL用来查询在一段时间内最先失败的Query,便于定位问题所在。

实践一:查看制造最多与最慢Query的使用者

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    查询慢Query最多的User和统计前50慢的Query。

    -- 查出慢 query 最多的 user
    SELECT usename AS topuser, count(1) AS topuser_counts
    FROM hologres.hg_query_log
    WHERE query_start >= '${date_start}'
    	AND query_start < '${date_end}'
    GROUP BY usename
    ORDER BY topuser_counts DESC
    LIMIT 1;
    
    
    
    -- 统计前 50 笔慢 query
    SELECT usename, datname, duration, application_name
    FROM hologres.hg_query_log
    WHERE query_start >= '${date_start}'
    	AND query_start < '${date_end}'
    ORDER BY duration DESC
    LIMIT 50;
  4. 配置赋值参数。

    • SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

    • 您还可以通过${变量名}的方式在SQL中配置自定义变量,该变量为赋值参数赋值参数可赋值时间表达式及常量),从而实现代码动态入参,可参见配置推送内容

      在示例中需要配置的赋值参数为${date_start}${date_end}两个时间参数。

  5. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  6. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  7. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  8. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践二:查询近12小时消耗比较高的Query

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    近12小时消耗较高的Query的查询SQL。

    SELECT status AS "状态",
           duration AS "耗时(ms)",
           query_start AS "开始时间",
           (read_bytes/1048576)::text || ' MB' AS "读取量",
           (memory_bytes/1048576)::text || ' MB' AS "内存",
           (shuffle_bytes/1048576)::text || ' MB' AS "Shuffle",
           (cpu_time_ms/1000)::text || ' s' AS "CPU时间",
           physical_reads AS "读盘",
           query_id AS "QueryID",
           query::char(30)
     FROM hologres.hg_query_log
     WHERE query_start >= now() - interval '12 hour'
     AND duration > 1000
     ORDER BY duration DESC,
              read_bytes DESC,
              shuffle_bytes DESC,
              memory_bytes DESC,
              cpu_time_ms DESC,
              physical_reads DESC
    LIMIT 100;
  4. 配置参数。

  5. SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  6. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  7. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  8. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  9. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践三:查看最近3小时内每小时的Query访问量和数据读取总量

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    最近 3 小时内每小时的Query访问量和数据读取总量的查询SQL。

    SELECT
        date_trunc('hour', query_start) AS query_start,
        count(1) AS query_count,
        sum(read_bytes/1048576)::text || ' MB' AS read_MB,
        sum(cpu_time_ms/1000)::text || ' s' AS cpu_time_s
    FROM
        hologres.hg_query_log
    WHERE
        query_start >= now() - interval '3 h'
    GROUP BY 1;
  4. 配置参数。

    SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  5. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  6. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  7. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  8. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践四:查看昨日新增的Query数量

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    昨日新增的Query数量的查询SQL。

    SELECT
        COUNT(1) AS "increse_queries"
    FROM ( SELECT DISTINCT
            t1.digest
        FROM
            hologres.hg_query_log t1
        WHERE
            t1.query_start >= CURRENT_DATE - INTERVAL '1 day'
            AND t1.query_start < CURRENT_DATE
            AND NOT EXISTS (
                SELECT
                    1
                FROM
                    hologres.hg_query_log t2
                WHERE
                    t2.digest = t1.digest
                    AND t2.query_start < CURRENT_DATE - INTERVAL '1 day')
            AND digest IS NOT NULL
     ) AS a;
  4. 配置参数。

  5. SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  6. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  7. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  8. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  9. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践五:查看与昨天同一时间对比过去3小时的数据访问量情况

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    过去3小时的数据访问量情况与昨天同一时间对比查询SQL。

    SELECT
        query_date,
        count(1) AS query_count,
        sum(read_bytes) AS read_bytes,
        sum(cpu_time_ms) AS cpu_time_ms
    FROM
        hologres.hg_query_log
    WHERE
        query_start >= now() - interval '180min'
    GROUP BY
        query_date
    UNION ALL
    SELECT
        query_date,
        count(1) AS query_count,
        sum(read_bytes) AS read_bytes,
        sum(cpu_time_ms) AS cpu_time_ms
    FROM
        hologres.hg_query_log
    WHERE
        query_start >= now() - interval '1d 180min'
        AND query_start <= now() - interval '1d'
    GROUP BY
        query_date;
  4. 配置参数。

  5. SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  6. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  7. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  8. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  9. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践六:查询最近30分钟Query各阶段耗时比较高的Query

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    最近30分钟中各阶段耗时比较高的Query。

    SELECT
        status AS "状态",
        duration AS "耗时(ms)",
        optimization_cost AS "优化耗时(ms)",
        start_query_cost AS "启动耗时(ms)",
        get_next_cost AS "执行耗时(ms)",
        duration - optimization_cost - start_query_cost - get_next_cost AS "其他耗时(ms)",
        query_id AS "QueryID"
    FROM
        hologres.hg_query_log
    WHERE
        query_start >= now() - interval '30 min'
    ORDER BY
        duration DESC,
        start_query_cost DESC,
        optimization_cost,
        get_next_cost DESC,
        duration - optimization_cost - start_query_cost - get_next_cost DESC
    LIMIT 100;
  4. 配置参数。

  5. SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  6. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  7. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  8. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  9. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

实践七:查询最先失败的Query

  1. 双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。

  2. 配置选择表模块。

    • 数据源类型:选择Hologres

    • 数据源名称:选择实践准备中创建的Hologres数据源。

    • 数据源环境:选择开发环境

  3. 编写查询SQL

    最先失败的Query查询SQL。

    SELECT
        status AS "状态",
        regexp_replace(message, '\n', ' ')::char(150) AS "报错信息",
        duration AS "耗时(ms)",
        query_start AS "开始时间",
        query_id AS "QueryID",
        query::char(100) AS "Query"
    FROM
        hologres.hg_query_log
    WHERE
        query_start BETWEEN '2024-07-10 17:00:00'::timestamptz AND '2024-07-10 17:42:00'::timestamptz + interval '2 min'
        AND status = 'FAILED'
    ORDER BY
        query_start ASC
    LIMIT 100;
  4. 配置参数。

  5. SQL自定义完成后,SQL返回结果字段将自动填入参数 > 输出参数。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数

  6. 配置推送内容。

    推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容

    image

  7. 数据推送设置。

    • 调度周期:下拉选择

    • 调度时间:选择09:00

    • 超时定义系统默认

    • 生效日期永久生效

    • 调度资源组:选择在实践准备中准备的通用型资源组。

    • 数据推送目标:选择步骤一:新建数据推送目标中创建的推送目标。

      说明

      配置项可按业务需求进行配置,详情请参见推送设置

  8. 测试数据推送任务。

    创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。

  9. 完成数据推送测试后,即可对数据推送任务进行后续发布等操作。

后续步骤

创建完成数据推送任务后,可以对推送任务进行管理,详情请参见发布推送任务