このトピックでは、サービスを安定的かつ効率的に維持するために Hologres サーバーレスコンピューティングをモニタリングする方法について説明します。
モニタリングメトリックの表示
Hologres コンソールにログインして、インスタンスのサーバーレスコンピューティングに関連するメトリックを表示します。詳細については、「CloudMonitor」をご参照ください。
タスクステータスの表示
サーバーレスリソースで実行中の 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'サーバーレスリソースのキューに入っている 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'サーバーレスリソースで実行されている特定の 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 ビューのデータは 1 か月間保持されます。
Hologres V2.1.18 以降、hologres.hg_serverless_computing_query_log ビューを使用して、サーバーレスリソースで実行された履歴タスクをクエリできます。
スロークエリログと比較して、このビューには次のフィールドが追加されています:
queue_time_ms: SQL クエリがサーバーレスリソースを待機してキューで費やした時間 (ミリ秒)。serverless_allocated_cores: クエリに割り当てられた CU の数。serverless_allocated_workers: クエリに割り当てられたワーカーの数。serverless_resource_used_time_ms: クエリがサーバーレスリソースを使用した時間 (ミリ秒)。
extended_infoフィールドは追加情報を提供します:serverless_computing_source: サーバーレスリソースで実行される際のクエリの発生元を示します。有効な値:user_submit: ユーザーによってサーバーレス実行のために明示的に送信されたクエリ。query_queue: サーバーレス実行用に設定されたクエリキューから発生したクエリ。詳細については、「クエリキュー内のクエリを実行するためにサーバーレスコンピューティングリソースを使用する」をご参照ください。big_query_isolation_service: アダプティブサーバーレスコンピューティングを介してサーバーレスリソースを利用したクエリ。詳細については、「アダプティブサーバーレスコンピューティング」をご参照ください。query_queue_rerun: サーバーレスリソースで自動的に再実行された大規模クエリ。詳細については、「大規模クエリ管理」をご参照ください。
query_id_of_triggered_rerun:serverless_computing_sourceがquery_queue_rerunの場合にのみ存在します。再実行されたクエリの元の ID を示します。
Hologres V2.2.7 より前では、hologres.hg_serverless_computing_query_log ビューには、実行時間が 100 ms を超える成功したクエリと、すべての失敗したクエリのみが表示されていました。Hologres V2.2.7 以降、このビューにはサーバーレスコンピューティングで実行されているすべてのクエリが表示されます。
SELECT
*
FROM
hologres.hg_serverless_computing_query_log;COPY、CTAS、INSERT OVERWRITE などの特定のタスクは、スロークエリログに複数のレコードを生成します。これらのレコードには、元の SQL タスクと、その実行中に作成された後続の INSERT 文が含まれます。これらの INSERT 文が、実際にサーバーレスリソースを消費するものです。元のタスクのレコードの 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
;リソース使用量の表示
アクティブな 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: データベースおよび実行ステージで使用されるサーバーレスリソースの合計。query_qty: SQL クエリの数。