メインコンテンツへスキップ
PostgreSQL データベースを接続して、Tony(データベースエンジニア)がクエリを分析し、パフォーマンスを最適化し、データベースの健全性を監視できるようにします。

対応プラットフォーム

プラットフォームサポート
セルフホスト PostgreSQL12.x・13.x・14.x・15.x・16.x
AWS RDS PostgreSQL全バージョン
AWS Aurora PostgreSQL全バージョン
Google Cloud SQL全 PostgreSQL バージョン
Azure Database for PostgreSQLFlexible Server・Single Server

前提条件

  • CloudThinker からネットワーク経由で到達可能な PostgreSQL インスタンス。
  • 専用ユーザーの作成と権限付与に必要な管理者アクセス。
  • クエリレベルの分析が必要な場合は pg_stat_statements 拡張のインストール(低速クエリデータに必要)。

セットアップ

1

管理者として接続する

管理者アカウントで PostgreSQL インスタンスに接続します:
psql -h your-host -U postgres -d your-database
2

読み取り専用ユーザーを作成する

CloudThinker 専用のユーザーを作成します:
CREATE USER cloudthinker_readonly WITH PASSWORD 'your-secure-password';
3

接続とスキーマのアクセスを付与する

接続とスキーマの使用を許可します:
GRANT CONNECT ON DATABASE your_database TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA public TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA information_schema TO cloudthinker_readonly;
4

SELECT 権限を付与する

既存および今後作成されるすべてのテーブルとビューに SELECT を付与します:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cloudthinker_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA information_schema TO cloudthinker_readonly;

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO cloudthinker_readonly;
5

pg_stat_statements を有効化する

この拡張はクエリ分析に必要です:
-- 拡張を有効化(スーパーユーザーが必要)
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

-- ユーザーにアクセスを付与
GRANT SELECT ON pg_stat_statements TO cloudthinker_readonly;
RDS/Aurora の場合はパラメータグループに追加します:
shared_preload_libraries = 'pg_stat_statements'
6

ネットワークアクセスを設定する

CloudThinker がデータベースに到達できるよう設定します:
  • CloudThinker の IP をセキュリティグループまたはファイアウォールに追加
  • RDS の場合:パブリックアクセスを有効化するか VPC ピアリングを使用
7

CloudThinker に接続を追加する

Connections → PostgreSQL に移動し、以下を入力します:
  • Host:データベースのホスト名または IP
  • Port:データベースポート(デフォルト:5432
  • Database:データベース名
  • Usernamecloudthinker_readonly
  • Password:上記で設定したパスワード
  • SSL moderequire(推奨)
Connect をクリックします。成功すると CloudThinker は Connected ステータスを表示します。

接続詳細

フィールド説明デフォルト
Hostデータベースのホスト名または IP
PortPostgreSQL ポート5432
Databaseデータベース名
Username専用ユーザー(例:cloudthinker_readonly
Passwordユーザーパスワード
SSL modedisableallowpreferrequireverify-caverify-fullrequire
Connection timeout接続待機秒数10
Statement timeoutクエリ実行の最大時間(ミリ秒)30000
接続文字列の形式:
postgresql://cloudthinker_readonly:your-secure-password@your-host:5432/your-database

必要な権限

最小権限

GRANT CONNECT ON DATABASE dbname TO cloudthinker_readonly;
GRANT USAGE ON SCHEMA public TO cloudthinker_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO cloudthinker_readonly;

推奨(フル分析)

-- 上記すべてに加えて:
GRANT SELECT ON pg_stat_statements TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_activity TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_user_tables TO cloudthinker_readonly;
GRANT SELECT ON pg_stat_user_indexes TO cloudthinker_readonly;
GRANT SELECT ON pg_statio_user_tables TO cloudthinker_readonly;
GRANT pg_read_all_stats TO cloudthinker_readonly;  -- PostgreSQL 14+
まず最小権限から始め、クエリレベルの分析とキャッシュヒットレポートを解放するために推奨の統計情報権限を追加してください。

エージェントの機能

接続後、Tony は以下を実行できます:
機能説明
クエリ分析低速クエリの特定、実行計画の分析
インデックス推奨不足しているインデックスの発見、未使用インデックスの特定
パフォーマンスメトリクス接続数・I/O・キャッシュヒット率の監視
テーブル統計テーブルの膨張・デッドタプル・Vacuum 状態の分析
レプリケーション監視レプリカのラグとストリーミング状態の確認

接続を確認する

@tony #report check PostgreSQL connection health and list active database sessions

プロンプト例

@tony #report analyze slow queries on the production PostgreSQL instance
@tony #recommend find missing indexes on the orders table
@tony #dashboard show database performance metrics including cache hit rates

トラブルシューティング

  • ホストとポートが正しいか確認してください
  • セキュリティグループまたはファイアウォールが CloudThinker の IP を許可しているか確認してください
  • RDS の場合:「Publicly accessible」が有効になっているか、VPC ピアリングを使用しているか確認してください
  • PostgreSQL が正しいインターフェースでリッスンしているか確認してください
  • ユーザー名とパスワードが正しいか確認してください
  • pg_hba.conf が接続方式を許可しているか確認してください
  • ユーザーがデータベースに CONNECT 権限を持っているか確認してください
  • 拡張がインストールされているか確認:SELECT * FROM pg_extension WHERE extname = 'pg_stat_statements';
  • shared_preload_librariespg_stat_statements が含まれているか確認してください
  • shared_preload_libraries 変更後は PostgreSQL を再起動してください
  • RDS の場合:パラメータグループを変更してインスタンスを再起動してください
  • ユーザーが必要なテーブルに SELECT 権限を持っているか確認してください
  • PostgreSQL 14+ では pg_read_all_stats ロールを付与してください
  • psql で \dn+ を使ってスキーマ権限を確認してください

セキュリティ

  • 最小権限 — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
  • デフォルトで読み取り専用 — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
  • 認証情報のローテーション — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
  • オフボーディング時に失効 — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。
  • SSL 必須 — 転送中のデータを暗号化するために、常に SSL モード require 以上を使用してください。
  • 最小権限 — CloudThinker ユーザーには SELECT のみを付与し、書き込みアクセスは絶対に付与しないでください。

関連

Tony Agent

データベース特化の最適化エージェント
https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mysql.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=29b74ea2b3ffacd21682ca898f6a2e43

MySQL 接続

MySQL データベースの同様のセットアップ