メインコンテンツへスキップ
ClickHouse OpenAPI を使用すると、 ClickHouse サービスと同様に Managed Postgres サービスをプログラムから 操作できます。同じ API では、サービスのメトリクスをスクレイピングするための [Prometheus エンドポイント] も公開されています。 すでに OpenAPI に慣れている場合は、[API キー] を取得して Managed Postgres API リファレンス に直接進んでください。 そうでない場合は、このまま簡単な概要をご確認ください。

API キー

ClickHouse OpenAPI を使用するには認証が必要です。作成方法については API keys を参照してください。次に、以下のように Basic 認証の認証情報として使用します。
KEY_ID=mykeyid
KEY_SECRET=mykeysecret

curl -s --user "$KEY_ID:$KEY_SECRET" https://api.clickhouse.cloud/v1/organizations | jq

Organization ID

次に、Organization ID が必要になります。
  1. コンソールの左下で組織名を選択します。
  2. Organization details を選択します。
  3. Organization ID の右側にあるコピーアイコンをクリックして、 直接クリップボードにコピーします。

CRUD

Postgres サービス のライフサイクルを見ていきましょう。

作成

まず、create API を使って新しく作成します。このリクエストでは、JSONボディに次のプロパティを含める必要があります。
  • name: 新しいPostgres サービスの名前
  • provider: クラウドプロバイダーの名前
  • region: serviceをデプロイするproviderのネットワーク内のRegion
  • size: VMのサイズ
  • storageSize: VMのストレージサイズ
これらのプロパティの設定可能な値については、create API のドキュメントを参照してください。さらに、デフォルトの17ではなく、Postgres 18を指定します。
create_data='{
  "name": "my postgres",
  "provider": "aws",
  "region": "us-west-2",
  "postgresVersion": "18",
  "size": "r8gd.large",
  "storageSize": 118
}'
次に、このデータを使用して新しいインスタンスを作成します。なお、そのためにはContent-Typeヘッダーの内容が必要です:
curl -s --user "$KEY_ID:$KEY_SECRET" -H 'Content-Type: application/json' \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres" \
    -d "$create_data" | jq
成功すると、新しいインスタンスが作成され、その情報 (接続情報を含む) が返されます:
{
  "result": {
    "id": "pg7myrd1j06p3gx4zrm2ze8qz6",
    "name": "my postgres",
    "provider": "aws",
    "region": "us-west-2",
    "postgresVersion": "18",
    "size": "r8gd.large",
    "storageSize": 118,
    "haType": "none",
    "tags": [],
    "connectionString": "postgres://postgres:vV6cfEr2p_-TzkCDrZOx@my-postgres-6d8d2e3e.pg7myrd1j06p3gx4zrm2ze8qz6.c0.us-west-2.aws.pg.clickhouse-dev.com:5432/postgres?channel_binding=require",
    "username": "postgres",
    "password": "vV6cfEr2p_-TzkCDrZOx",
    "hostname": "my-postgres-6d8d2e3e.pg7myrd1j06p3gx4zrm2ze8qz6.c0.us-west-2.aws.pg.clickhouse-dev.com",
    "isPrimary": true,
    "state": "creating"
  },
  "requestId": "a5957990-dbe5-46fd-b5ce-a7f8f79e50fe",
  "status": 200
}

取得

レスポンスのidを使って、サービスを再度取得します:
PG_ID=pg7myrd1j06p3gx4zrm2ze8qz6
curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq
出力は作成時に返されるJSONと似ていますが、state を確認して ください。これが running に変わったら、サーバーの準備完了です。
curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq .result.state
"running"
これで、connectionString プロパティを使って、たとえば psql 経由で接続できます:
$ psql "$(
    curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq -r .result.connectionString
)"

psql (18.3)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql)
Type "help" for help.

postgres=# 
psql を終了するには、\q と入力します。

更新

patch API は、RFC 7396 の JSON Merge Patch を使用して、Managed Postgresサービスのプロパティの一部を更新できます。複雑なデプロイメントでは、タグが特に重要になることがあります。その場合は、リクエストでタグだけを送信してください:
curl -sX PATCH --user "$KEY_ID:$KEY_SECRET" -H 'Content-Type: application/json' \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    -d '{"tags": [{"key": "Environment", "value": "production"}]}' \
    | jq .result
返却されるデータには、新しいタグが含まれているはずです:
{
  "id": "$PG_ID",
  "name": "my postgres",
  "provider": "aws",
  "region": "us-west-2",
  "postgresVersion": "18",
  "size": "r8gd.large",
  "storageSize": 118,
  "haType": "none",
  "tags": [
    {
      "key": "Environment",
      "value": "production"
    }
  ],
  "connectionString": "postgres://postgres:vV6cfEr2p_-TzkCDrZOx@my-postgres-6d8d2e3e.$PG_ID.c0.us-west-2.aws.pg.clickhouse-dev.com:5432/postgres?channel_binding=require",
  "username": "postgres",
  "password": "vV6cfEr2p_-TzkCDrZOx",
  "hostname": "my-postgres-6d8d2e3e.$PG_ID.c0.us-west-2.aws.pg.clickhouse-dev.com",
  "isPrimary": true,
  "state": "running"
}

削除

Postgres サービスを削除するには、delete API を使用します。
Postgres サービスを削除すると、サービス自体とその中のすべての データが完全に削除されます。サービスを削除する前に、必ずバックアップを 取得するか、レプリカをプライマリに昇格させてください。
curl -sX DELETE --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID" \
    | jq
成功した場合、レスポンスではステータスコード 200 が返されます。例:
{
  "requestId": "ac9bbffa-e370-410c-8bdd-bd24bf3d7f82",
  "status": 200
}

監視

Prometheus 互換のエンドポイントが 2 つあり、Managed Postgres サービスの CPU、メモリ、I/O、接続、 およびトランザクションのメトリクスを公開しています。1 つは組織内のすべてのサービスの メトリクスを返し、もう 1 つは単一のサービスのメトリクスを返します。設定については [Prometheus エンドポイント] ページを、メトリクスの一覧については [メトリクス リファレンス] を参照してください。

クエリインサイト

Cloud Console の [クエリインサイト] タブの各ステートメントのテレメトリーは、プログラムからも利用できます。2 つのエンドポイントにより、サービス上の最も遅い クエリパターンを取得できます。1 つは影響度順にすべてのパターンを一覧表示し、もう 1 つは単一のパターンとその最近の実行結果を返します。

低速クエリパターンの一覧

[スローパターン API] は、一定の時間範囲内で観測された最も遅いクエリ パターンの集約メトリクスを返します。時間範囲の指定は必須です。 RFC 3339 形式のタイムスタンプとして from_dateto_date を渡してください:
FROM=2026-05-25T00:00:00Z
TO=2026-05-26T00:00:00Z

curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID/slowQueryPatterns?from_date=$FROM&to_date=$TO" \
    | jq
結果はデフォルトで、total_duration の 降順で、最もコストの高いパターンから返されます。sort_by を使うと別の指標 (たとえば p99_durationcall_count、または total_wal_bytes) でソートでき、sort_order で並び順を反転できます。db_namedb_userdb_operation、および app フィルターで対象を絞り込み、limitoffset でページ送りできます。 各結果は 1 つの正規化されたパターンで、リテラルは取り除かれ、 実行時間はマイクロ秒単位で示されます:
{
  "result": [
    {
      "queryId": "-4748036479882663975",
      "queryText": "SELECT * FROM orders WHERE customer_id = $1 ORDER BY created_at DESC LIMIT $2",
      "dbName": "sales",
      "dbUser": "orders_service",
      "dbOperation": "SELECT",
      "app": "orders-api",
      "callCount": 84213,
      "errorCount": 0,
      "totalDurationUs": 1012384556,
      "avgDurationUs": 12021,
      "maxDurationUs": 482915,
      "p50DurationUs": 9874,
      "p95DurationUs": 28431,
      "p99DurationUs": 41200,
      "totalRows": 842130,
      "totalSharedBlksRead": 19284,
      "totalSharedBlksHit": 48217734,
      "totalCpuTimeUs": 938472113,
      "totalWalBytes": 0
    }
  ],
  "requestId": "c128d830-5769-4c82-8235-f79aa69d1ebf",
  "status": 200
}
queryId は正規化されたステートメントの符号付き 64 ビットハッシュなので、しばしば 負の値になります。単一のパターンを取得するには、先頭の - も含めて その値をそのまま渡してください。

低速クエリパターンを取得する

リストレスポンスの queryId を [低速クエリパターン API] に渡すと、その パターンの集計メトリクスと、直近の個別実行結果を取得できます。 パターンの識別に必要な db_namedb_userdb_operation は 必須です。
QUERY_ID=-4748036479882663975

curl -s --user "$KEY_ID:$KEY_SECRET" \
    "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/postgres/$PG_ID/slowQueryPatterns/$QUERY_ID?db_name=sales&db_user=orders_service&db_operation=SELECT" \
    | jq
レスポンスには、aggregate の下にあるリストエンドポイントと同じ集計に加えて、 recentExecutions 配列が含まれます。各実行には、実行ごとの 完全なカウンター — shared および temp block の I/O、CPU の user および system time、並列 worker 数、JIT、WAL — が含まれます。これらは、 コンソールの detail flyout で内訳が表示されるものと同じカウンターです。
{
  "result": {
    "aggregate": {
      "queryId": "-4748036479882663975",
      "queryText": "SELECT * FROM orders WHERE customer_id = $1 ORDER BY created_at DESC LIMIT $2",
      "dbName": "sales",
      "dbUser": "orders_service",
      "dbOperation": "SELECT",
      "callCount": 84213,
      "avgDurationUs": 12021,
      "p99DurationUs": 41200
    },
    "recentExecutions": [
      {
        "timestamp": "2026-05-25T16:42:09Z",
        "durationUs": 41200,
        "rows": 10,
        "sharedBlksHit": 412,
        "sharedBlksRead": 3,
        "tempBlksWritten": 0,
        "cpuUserTimeUs": 38211,
        "cpuSysTimeUs": 1044,
        "parallelWorkersPlanned": 0,
        "parallelWorkersLaunched": 0,
        "walBytes": 0,
        "serverRole": "primary"
      }
    ]
  },
  "requestId": "a5957990-dbe5-46fd-b5ce-a7f8f79e50fe",
  "status": 200
}
この例では簡潔にするため、両方のオブジェクトを一部省略しています。API は per-execution counters で説明している完全なカウンター セットを返します。
最終更新日 2026年6月10日