本文为您介绍在使用Hologres的Serverless 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_log
和hologres.hg_serverless_computing_query_log
均保留一个月的数据。
Hologres自V2.1.18版本起,支持hologres.hg_serverless_computing_query_log
视图,可以直接查看在Serverless Computing资源中执行的历史任务。
相比慢Query日志,增加以下字段:
queue_time_ms:Serverless Computing资源中SQL等待排队时长,单位毫秒(ms)。
serverless_allocated_cores:Serverless Computing资源实际分配给当前SQL的CU数。
serverless_allocated_workers:Serverless Computing资源实际分配给当前SQL的Worker数。
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_source为query_queue_rerun时有该字段,表示重运行Query的原始Query ID。
Hologres自V2.2.7版本前,hologres.hg_serverless_computing_query_log
视图仅支持查看执行时长大于100 ms的成功Query和全部失败Query。Hologres自V2.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数量。