ApsaraDB RDS for PostgreSQLインスタンスでのセッションモニタリングは、RDSインスタンスのステータスを把握し、パフォーマンスの問題をトラブルシューティングするのに役立ちます。 このトピックでは、pg_stat_activityシステムビュー、Simple Log Service、およびCloudMonitorを使用してRDSインスタンスのセッションをモニタリングする方法について説明します。 モニタリング結果を使用して、特定の期間におけるRDSインスタンスのステータスとパフォーマンスを把握できます。
背景情報
ほとんどの場合、データベースシステムは比較的大きなアプリケーションです。 データベースシステムの負荷が大きいと、メモリ、CPU、I/O、ネットワークのリソースが大量に消費されます。 ApsaraDB RDS for PostgreSQLはプロセスモデルを使用し、各セッションはバックグラウンドプロセスに対応します。 セッションモニタリングは、RDSインスタンスのステータスを把握し、RDSインスタンスのパフォーマンスボトルネックをトラブルシューティングするのに役立ちます。
pg_stat_アクティビティ
pg_stat_activityビューは、データベースシステムで実行されているすべてのセッションに関する情報を提供します。 データベースシステム内のセッションを定期的にクエリして、セッション情報を保持できます。 このプロセスは、データベースシステムの通常のスナップショット作成と同等です。 これにより、データベースシステムのステータスを把握し、データベースシステムのパフォーマンスの問題をトラブルシューティングできます。
セッション関連のパラメータ
次の表に、pg_stat_activityビューのパラメーターを示します。
パラメーター | データ型 | 説明 |
datid | oid | プロセスが接続されているデータベースのオブジェクト識別子 (OID) 。 |
datname | name | プロセスが接続されているデータベースの名前。 |
pid | integer | プロセスID (PID) 。 |
リーダー_pid | integer | 並列処理またはアプリケーションジョブのリーダープロセス。 リーダープロセスまたはワーカープロセスが存在しない場合、このパラメーターの値はNULLです。 |
usesysid | oid | プロセスとやり取りするユーザーのOID。 |
usename | name | プロセスとやり取りするユーザーのユーザー名。 |
application_name | text | プロセスが接続されているアプリケーションの名前。 |
client_addr | inet | プロセスが接続されているクライアントのIPアドレス。 |
client_hostname | text | クライアントのホスト名。 client_addrの逆ドメインネームシステム (DNS) ルックアップを実行して、このパラメーターの値を取得できます。 |
client_port | integer | クライアントによって使用されるTCPポート。 UNIXソケットを使用する場合、このパラメーターの値は-1です。 |
backend_start | タイムゾーンのタイムスタンプ | プロセスの開始時間。 |
xact_start | タイムゾーンのタイムスタンプ | プロセスの現在のトランザクションの開始時刻。 アクティブなトランザクションが存在しない場合、このパラメーターの値はNULLです。 |
query_start | タイムゾーンのタイムスタンプ | 進行中のクエリの開始時刻。 |
state_change | タイムゾーンのタイムスタンプ | ステータスが変更された最新の時刻。 |
wait_event_タイプ | text | プロセスで待機しているイベントのタイプ。 |
wait_event | text | プロセスで待機しているイベントの名前。 待機中のイベントがない場合、このパラメーターの値はNULLです。 |
state | text | 現在のプロセスのステータス。 |
backend_xid | xid | 現在のプロセスの最上位トランザクションID。 |
backend_xmin | xid | 現在のプロセスの最小トランザクションID。 |
query_id | bigint | プロセスの最新のクエリID。 |
query | text | プロセスの最新のクエリのテキスト。 |
backend_type | text | プロセスタイプ。 |
セッション収集のSQL文
このセクションでは、セッション収集のサンプルSQL文を示します。 leader_idパラメーターは、PostgreSQL13以降を実行するRDSインスタンスでのみ使用できます。 RDSインスタンスのデータベースエンジンバージョンに基づいて、セッション収集用のSQL文を調整できます。
前提条件
RAMユーザーが作成され、次の権限がRAMユーザーに付与されます。 詳細については、「RAMユーザーの作成とRAMユーザーへの権限付与」をご参照ください。
AliyunRDSFullAccess: すべてのApsaraDB RDSリソースを管理するための権限。
AliyunLogFullAccess: すべてのSimple Log Serviceリソースを管理するための権限。
AliyunCloudMonitorFullAccess: CloudMonitorリソースを管理するための権限。
プロジェクトと Logstore が作成済みである必要があります。 詳細については、「Simple Log Serviceの有効化」をご参照ください。
RDSインスタンスに必要なデータベースのユーザー名とパスワードが取得されます。 詳細については、「アカウントと権限」をご参照ください。
手順
pg_stat_activityシステムビューでセッション情報を収集し、収集した情報を定期的にSimple Log ServiceのLogstoreに送信します。このセクションでは、Simple Log Service SDK for Javaを使用して定期的にデータを収集および送信する方法の例を示します。
Simple Log Service SDK for Javaをインストールします。 詳細については、「Simple Log Service SDK For Javaのインストール」をご参照ください。
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数を設定します。 詳細については、「環境変数の設定」をご参照ください。
必要な依存関係をpom.xmlファイルにインポートします。 この例では、Mavenプロジェクトが使用され、Mavenの依存関係が必要です。
次のサンプルプログラムを実行して、RDSインスタンスに関するセッション情報を収集し、収集した情報をSimple Log ServiceのLogstoreに送信します。
特定のパラメーターを次の表に示します。 ビジネス要件に基づいてパラメーターを変更できます。
パラメーター
説明
例
PG_URL
RDSインスタンスへの接続に使用されるURL。 値には、監視するデータベースの名前を含める必要があります。
jdbc:postgresql:// pgm-bp1c82mky1avip **** .pg.rds.aliyuncs.com:5432/testdb01
PG_ユーザー
データベースへのログインに使用されるアカウントのユーザー名。
testdbuser
PG_パスワード
データベースへのログインに使用されるアカウントのパスワード。
****
LOG_ENDPOINT
Simple Log Serviceのエンドポイント。 詳細については、「エンドポイント」をご参照ください。
cn-hangzhou.log.aliyuncs.com
LOG_プロジェクト
Simple Log Serviceのプロジェクトの名前。
rdspg-test
LOG_STORE
Simple Log ServiceのLogstoreの名前。
rdspg-sls
上記の操作が完了したら、Simple Log ServiceのLogstoreでRDSインスタンスのセッションログを照会できます。 詳細については、「ログの照会と分析」をご参照ください。
重要Simple Log ServiceのLogstoreでインデックスを作成した後にのみ、セッションログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。
Simple Log ServiceのセッションログをCloudMonitorにインポートします。
CloudMonitorコンソールにログインし、メトリックを作成し、Simple Log ServiceからCloudMonitorにログをインポートします。 Simple Log ServiceからCloudMonitorにログをインポートした後、ダッシュボードを作成して測定値のモニタリングチャートを表示できます。 詳細については、「Simple Log Serviceからインポートされたログのメトリクスの管理」をご参照ください。
オプションです。 ApsaraDB RDS APIを使用して、スロークエリログとエラーログをSimple Log Serviceにインポートします。
RDSインスタンスのステータスとパフォーマンスを分析し、インスタンスセッション、スロークエリログ、およびエラーログに関するモニタリング情報に基づいてパフォーマンスの問題をトラブルシューティングできます。
このセクションでは、ApsaraDB RDSのDescribeSlowLogRecordsおよびDescribeErrorLogs操作とともにSimple Log Service SDK for Javaを使用して、RDSインスタンスのスロークエリログとエラーログを取得し、取得したログを定期的にSimple Log Serviceに送信する方法について説明します。 サンプルコードを次に示します。
説明操作のAPIドキュメントで [デバッグ] をクリックすると、OpenAPI Explorerの [デバッグ] ページに移動し、操作のインストール方法と使用方法を確認できます。
特定のパラメーターを次の表に示します。 ビジネス要件に基づいてパラメーターを変更できます。
パラメーター
説明
例
LOG_ENDPOINT
Simple Log Serviceのエンドポイント。 詳細については、「エンドポイント」をご参照ください。
cn-hangzhou.log.aliyuncs.com
LOG_プロジェクト
Simple Log Serviceのプロジェクトの名前。
rdspg-test
LOG_STORE
Simple Log ServiceのLogstoreの名前。
rdspg-sls
instanceId
インスタンス ID 。
pgm-bp1c82mky1av ****
作成したメトリックに基づいてCloudMonitorでアラートルールを作成します。 リソースのメトリック値がアラート条件を満たしている場合、CloudMonitorは自動的にアラート通知を送信します。 詳細については、「アラートルールの作成」をご参照ください。