Serverless Computing监控与运维

本文为您介绍在使用HologresServerless Computing功能时,如何通过特定方式进行监控与运维,以确保服务的稳定与高效运行。

查看监控指标

登录Hologres管理控制台,查看实例Serverless Query最长运行时长、Serverless Computing Query排队数量、Serverless Computing资源Quota使用率的监控指标。如有需要,可进一步配置监控告警,详见云监控

查看任务状态

  • 查看Serverless Computing资源中正在运行的SQL任务。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
        AND (running_info::json) -> 'current_stage'->>'stage_name' = 'EXECUTE'
  • 查看Serverless Computing资源中排队的SQL任务。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
        AND (running_info::json) -> 'current_stage'->>'stage_name' = 'QUEUE'
  • 查看Serverless Computing资源中SQL任务的运行状态。

    SELECT
        *,
        (running_info::json) ->> 'computing_resource' AS computing_resource,
        (running_info::json) ->> 'current_stage' AS current_stage
    FROM
        hg_stat_activity
    WHERE 
        query_id = '<query_id>';

查询历史任务

说明

hologres.hg_query_loghologres.hg_serverless_computing_query_log均保留一个月的数据。

HologresV2.1.18版本起,支持hologres.hg_serverless_computing_query_log视图,可以直接查看在Serverless Computing资源中执行的历史任务。

  • 相比慢Query日志,增加以下字段:

    • queue_time_ms:Serverless Computing资源中SQL等待排队时长,单位毫秒(ms)。

    • serverless_allocated_cores:Serverless Computing资源实际分配给当前SQLCU数。

    • serverless_allocated_workers:Serverless Computing资源实际分配给当前SQLWorker数。

    • serverless_resource_used_time_ms:当前SQL实际占用Serverless Computing资源的时长,单位毫秒(ms)。

  • extended_info字段中,额外记录以下信息:

    • serverless_computing_source:Query来源,含以下值:

      • user_submit:用户自行指定使用Serverless资源执行的Query。

      • query_queue:通过指定查询队列的Query全部由Serverless资源执行的Query,详情请参见使用Serverless Computing资源执行查询队列的查询

      • big_query_isolation_service:通过自适应Serverless功能而使用Serverless资源运行的Query,详情请参见自适应Serverless计算

      • query_queue_rerun:通过Query Queue的大查询控制功能,自动使用Serverless资源重运行的Query,详情请参见大查询控制

    • query_id_of_triggered_rerun:仅serverless_computing_sourcequery_queue_rerun时有该字段,表示重运行Query的原始Query ID。

HologresV2.2.7版本前,hologres.hg_serverless_computing_query_log视图仅支持查看执行时长大于100 ms的成功Query和全部失败Query。HologresV2.2.7版本起,支持查看全部Serverless Computing Query。

SELECT
    *
FROM
    hologres.hg_serverless_computing_query_log;

针对部分特殊任务,如COPY、CTAS、INSERT OVERWRITE等,在慢Query日志中会产生多条记录,包括任务SQL本身及其执行过程中产生的INSERT记录,其中的INSERT会实际使用Serverless资源执行。可以通过任务SQL本身的trans_id字段关联到INSERT记录,关联示例如下。

SELECT
    query_id,
    query,
    extended_info
FROM
    hologres.hg_query_log
WHERE
    extended_info ->> 'source_trx' = '<transaction_id>' -- 通过COPY/CTAS/RESHARDING等本身记录的trans_id字段可以取到transaction_id
    -- extended_info ->> 'src_query_id' = 'query_id'	-- 存储过程不是一个事务,因此需要通过query_id字段关联
    -- query like '%<transaction_id>%'	-- RESHARDING任务无法通过extended_info字段关联,需要通过query字段
ORDER BY
    query_start
;

查看资源占用

查看Serverless Computing资源中正在运行的SQL任务占用的总资源。

SELECT
    datname::text as db_name,
    (running_info::json) -> 'current_stage' ->> 'stage_name' AS current_stage,
    SUM(((running_info::json) -> 'current_stage' ->> 'serverless_allocated_cores')::int) AS total_computing_resource,
    count(1) as query_qty
FROM
    hg_stat_activity
WHERE (running_info::json) ->> 'computing_resource' = 'Serverless'
GROUP BY
    1,
    2;

返回结果中,列含义介绍:

  • db_name:数据库名称。

  • current_stage:执行阶段,例如EXECUTE(执行中)、QUEUE(排队中)等。

  • total_computing_resource:当前DB和执行阶段下,总的使用的Serverless Computing的资源。

  • query_qty:SQL数量。