利用 DataWorks 数据推送定期推播 Hologres Query 诊断信息

本文涉及的产品
大数据开发治理平台 DataWorks,不限时长
简介: DataWorks 近期上线了数据推送功能,能够将数据库查询的数据组织后推送到各渠道 (如钉钉、飞书、企业微信及 Teams),除了能将业务数据组织后推送,也能将数据库自身提供的监控数据组织后推送,这边我们就以 Hologres 为例,定期推播 Hologres 的慢 Query、数据访问量变化等信息,帮助用户掌握 Hologres 状态。

前言

DataWorks 近期上线了数据推送功能,能够将数据库查询的数据组织后推送到各渠道 (如钉钉、飞书、企业微信及 Teams),除了能将业务数据组织后推送,也能将数据库自身提供的监控数据组织后推送,这边我们就以 Hologres 为例,定期推播 Hologres 的慢 Query、数据访问量变化等信息,帮助用户掌握 Hologres 状态。


效果图


以下为一段时间内慢 Query 的信息整理,并推送到钉群、飞书、企业微信或 Teams



以下就列出几个 Hologres 诊断 Query推送的例子供参考:

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


查询制造最多慢 Query 的使用者,也可以更改 SQL 查询前十名最多慢 Query 数的用户。


以下为 SQL 内容

-- 查出慢 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
;


以下为推送内容设定


修改耗时的颜色条件判断


推送设置

image.png


推送结果


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


查询最近某个时间段(如近12小时内)消耗比较高的 Query,也可以根据业务需求修改具体时间,查询目标时间段消耗比较高的Query。(Query ID 可以用来定位,并在 HoloWeb 上查询)


以下为 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;


以下为推送内容设定


推送结果


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

查看最近 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;


以下为推送内容设定



推送结果



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

查看昨日新增的 Query 数量,时间区段可以更改 SQL,如改为上周、上个月等。


以下为 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;


以下为推送内容设定



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


查看与昨天同一时间对比过去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;



以下为推送内容设定


推送结果



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


查询最近时间段(如最近 30 分钟)Query 各阶段耗时比较高的 Query。您也可以根据业务需求修改具体时间,查询目标时间段 Query 各阶段耗时比较高的 Query。


以下为 SQL 内容

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;


以下为推送内容设定


推送结果


实践:查询最先失败的 Query


查询一段时间内最先失败的 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;


以下为推送内容设定

image.png


推送结果




小结

Hologres 提供 Query Logs 查询运行的状态,能利用此数据加工后,透过 DataWorks 数据推送推至渠道。相同地,许多数据库也提供了 Logs 信息供查询,如 MySQLPostgreSQL 等,皆能利用引擎储存的 Logs 再透过 DataWorks 数据推送推至渠道方便监控,提升引擎运行态的质量。



相关文章

数据推送功能详细介绍 https://help.aliyun.com/zh/dataworks/user-guide/push-data

数据开发工作流 + 数据推送介绍 https://help.aliyun.com/zh/dataworks/user-guide/best-practice-combining-data-push-with-data-development-workflow

使用 DataWorks 建立每日天气预报推送 https://developer.aliyun.com/article/1566970

语雀+通义千问+DataWorks,让AI定期推送每周总结 https://developer.aliyun.com/article/1566971

利用 DataWorks 数据推送定期推播 ClickHouse Query 诊断信息 https://developer.aliyun.com/article/1567458

Hologres 查看 Query Logs https://help.aliyun.com/zh/hologres/user-guide/query-and-analyze-slow-query-logs#section-4g5-hg4-dhj








相关实践学习
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标 &nbsp;通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群 &nbsp;企业数据仓库开发人员 &nbsp;大数据平台开发人员 &nbsp;数据分析师 &nbsp;大数据运维人员 &nbsp;对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
3天前
|
人工智能 运维 DataWorks
语雀+通义千问+DataWorks,让AI定期推送每周总结
DataWorks 数据开发提供强大的工作流及调度能力,且近期上线了数据推送节点,这篇文章简单利用 Shell + AI + 数据推送节点来完成每周工作内容总结。
44 7
语雀+通义千问+DataWorks,让AI定期推送每周总结
|
1天前
|
存储 DataWorks 监控
利用 DataWorks 数据推送定期推播 ClickHouse Query 诊断信息
DataWorks 近期上线了数据推送功能,能够将数据库查询的数据组织后推送到各渠道 (如钉钉、飞书、企业微信及 Teams),除了能将业务数据组织后推送,也能将数据库自身提供的监控数据组织后推送,这边我们就以 ClickHouse 为例,定期推播 ClickHouse 的慢 Query、数据量变化等信息,帮助用户掌握 ClickHouse 状态。
154 5
利用 DataWorks 数据推送定期推播 ClickHouse Query 诊断信息
|
16天前
|
DataWorks 监控 安全
DataWorks产品使用合集之如何实现导出数据到Hudi
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
69 8
|
16天前
|
消息中间件 DataWorks 安全
DataWorks产品使用合集之如何下载数据并提供接口
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
68 1
|
16天前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之将按日分区的表同步数据到OSS数据源,该如何配置
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
95 1
|
21小时前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之从OceanBase(OB)数据库调度数据到MySQL数据库时遇到连接报错,该怎么办?
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
13天前
|
SQL 人工智能 自然语言处理
DataWorks Copilot:大模型时代数据开发的新范式
阿里云DataWorks是一站式数据开发治理平台,支持多种大数据引擎,助力企业构建数据仓库、湖仓一体架构。DataWorks现推出Copilot,致力于打造智能SQL助手和AI Agent,通过生成SQL、优化SQL、提供查询帮助、注释生成、错误修正等功能,帮助数据开发工程师和数据分析师提升SQL 开发和分析的效率和体验。目前,DataWorks Copilot正开放邀测,欢迎大家体验。
15832 0
|
17天前
|
消息中间件 数据采集 DataWorks
DataWorks产品使用合集之如何使用数据地图中的标签
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
59 0
|
17天前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之如何查看数据源里面某个表格的数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
48 0
|
17天前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之报脏数据该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 0

热门文章

最新文章

相关产品

  • 大数据开发治理平台 DataWorks