PostgreSQL のモニター

「 Instana 」センサー( PostgreSQL )を使用することで、 PostgreSQL のインスタンスを監視できます。 「 Instana 」エージェントをインストールすると、「 PostgreSQL 」センサーが自動的に展開およびインストールされます。 「 Instana 」のUIでは、 PostgreSQL インスタンスに関連するメトリクスを確認できます。

サポート情報

PostgreSQL センサーが現在の環境と互換性があるかどうかを確認するには、以下のサポート情報セクションをご確認ください:

サポート対象のオペレーティング・システム

PostgreSQL センサーの対応OSは、ホストエージェントの要件と一致しています。これについては、各ホストエージェントの「対応OS」セクションで確認できます。例: Unix の対応OS

対応バージョンとサポート方針

このセンサーは、以下のバージョンの PostgreSQL: に対応しています

  • PostgreSQL 8.0.x 8.4.x 宛てに
  • PostgreSQL 9.0.x 9.6.x 宛てに
  • PostgreSQL 10.x
  • PostgreSQL 11.x
  • PostgreSQL 12.x
  • PostgreSQL 13.x
  • PostgreSQL 14.x
  • PostgreSQL 15.x
  • PostgreSQL 16.6
  • PostgreSQL 17.2

以下の表は、最新のサポート対象バージョンとサポート方針を示しています:

テクノロジー サポート・ポリシー 最新技術バージョン サポートされる最新バージョン
PostgreSQL 45 日間 18.4 18.4

サポートポリシーに関する詳細については、 「センサーのサポート戦略」 を参照してください。

構成

統計収集の有効化

統計の収集は、 postgresql.conf ファイルに設定されている構成パラメーターによって制御されます。このファイルは、postgresql の構成時に作成されます。 統計情報の収集を監視するには、以下のパラメータを設定してください onyes, true, および も 1 有効です)。

ファイル postgresql.conf の場所を確認するには、次のSQLクエリを実行してください:

SHOW config_file;

このクエリは、 PostgreSQLpostgresql.conf サーバー上のファイルへのフルパスを返します。

次の表に設定パラメータを一覧で示します:

パラメーター 説明
track_activities = on 任意のサーバー・プロセスによって実行される現在のコマンドをモニターします。
track_counts = on テーブルおよびインデックスへのアクセスに関して収集された累積統計情報を監視します。
track_io_timing = on ブロックの読み取りおよび書き込みの時間をモニターします。

統計情報の収集設定に関する詳細については、『 PostgreSQL 』のドキュメントを参照してください。

統計情報の収集を永続的に有効にする

環境によっては、 PostgreSQL の設定ファイルが再起動後も保持されないことがあります。 に直接行った変更は、システムの postgresql.conf 再起動後に失われる可能性があります。 再起動後も統計情報の収集設定が有効なままになるようにするには、コマンド ALTER SYSTEM を使用することをお勧めします。 このコマンドは、設定をファイル postgresql.auto.conf に保存します。このファイルは PostgreSQL のデータディレクトリの一部であり、永続ボリュームが使用されている場合、設定が永続化されます。

統計情報の収集を有効にするには、次のコマンドを実行してください:

  • ALTER SYSTEM SET track_activities = 'on';
  • ALTER SYSTEM SET track_counts = 'on';
  • ALTER SYSTEM SET track_io_timing = 'on';

設定を再読み込みするには、次の SELECT pg_reload_conf(); コマンドを実行してください。 以下のコマンドを実行して、設定を確認してください:

  • SHOW track_activities;
  • SHOW track_counts;
  • SHOW track_io_timing;

また、コマンド ALTER SYSTEM を使用して適用された設定の変更を確認するには、ファイルを確認 postgresql.auto.conf することもできます。 このファイルには、更新された設定が含まれています。

注: ファイルを手動 postgresql.auto.conf で編集しないでください。 PostgreSQL がこのファイルを自動的に管理し、手動での変更を上書きしてしまうため、必ずこの ALTER SYSTEM コマンドを使用してください。

設定用のコマンド ALTER SYSTEM の使用方法の詳細については、『 PostgreSQL 』のドキュメントを参照してください。

クラスタ名の設定

PostgreSQL クラスタの監視を行うには、ファイル postgresql.conf 内の cluster_name パラメータを設定してください。 クラスタの識別と監視を適切に行うためには、マスターノードとレプリカノードの両方でこの設定が必要です。

PostgreSQL クラスタ内のすべてのノード(マスターおよびレプリカ)に、同じクラスタ名を設定します:

cluster_name = 'PostgreSQL_cluster'

この cluster_name パラメータは、 Instana が同じクラスタに属する PostgreSQL インスタンスを識別し、グループ化するのに役立ちます。 以下の要件が満たされていることを確認します。

  • クラスタ名は、すべてのマスターノードとレプリカノードで同一です。
  • クラスタ名は、 PostgreSQL インスタンスを起動する前に設定されます。
  • クラスタ名を変更した場合は、変更を反映させるために PostgreSQL サービスを再起動してください。

この cluster_name パラメータの詳細については、 PostgreSQL のドキュメントを参照してください。

rootlessの Podman コンテナで統計情報の収集を有効にする

PostgreSQL のrootless Podman コンテナで統計情報の収集を有効にするには、ファイル postgresql.conf 内のパラメータを有効にし、 PostgreSQL サーバーのリスンポートを、rootless Podman コンテナがホストされているホスト上の同じポートにマッピングする必要があります。 接続を確立し、必要なメトリクスを収集するには、ポートマッピングが必要です。 最後に、エージェントの設定ファイルで isRootlessPodman キーを true に設定してください。

モニター・ユーザーの作成

メトリック収集をモニターするための最小限の権限は、 pg_stat_database データベースに対する SELECT です。 以下の例は、エージェントのニーズに対応するユーザーを作成する方法を示しています。

create user <USERNAME> with password <PASSWORD>;
grant SELECT ON pg_stat_database to <USERNAME>;
 

センサー

センサーがPostgreSQL,以下のステップを実行します:

  1. エージェント構成ファイル <agent_install_dir>/etc/instana/configuration.yamlの構成セクションを有効にして、ユーザー資格情報を構成します。

  2. ユーザー名とパスワードを入力します。

    パスワードは平文のパスワードです。

パスワード・ベースの認証の場合、対応する PostgreSQL ユーザーの認証メカニズムは、 md5、 scram-sha-256 (バージョン 10 以降)、またはパスワードでなければなりません。 詳細については、『 PostgreSQL 』のドキュメントにある「 パスワード認証 」および「クライアント認証」のセクションを参照してください。

センサーとPostgreSQL,の間で接続を確立するためには、PostgreSQLにユーザー名と同じ名前のデータベースが含まれていなければなりません:

com.instana.plugin.postgresql:
  user: '<USERNAME>'
  password: '<PASSWORD>'
  database: '' # by default PostgreSQL will use 'user' as database to connect to.
  poll_rate: 10 #Values are in seconds. Default Value 1 Sec.
  isRootlessPodman: true/false # Optional. Use this field only if you are running postgres inside a rootless podman container. Default value is false.
 
注: ポーリング間隔が指定されていない場合、デフォルトでは1秒になります。

database フィールドは認証目的でのみ使用されます。 エージェントは設定ファイルの変更内容を自動的に <agent_install_dir>/etc/instana/configuration.yaml読み取ります。 したがって、この構成ファイルに対する変更はホット・リロードされます (エージェントを再始動する必要はありません)。

データベース・メトリックを収集するには、指定した user に、 PostgreSQL インスタンス内に存在するすべてのデータベースに対する CONNECT 特権を割り当てる必要があります。 以下の例は、 CONNECT 特権をユーザーに付与する方法を示しています。

GRANT CONNECT ON DATABASE <DATABASE_NAME> TO <USERNAME>;
 

メトリック収集

メトリックを表示するには、以下のステップを実行します。

  1. Instana のユーザーインターフェースのサイドバーで 「インフラストラクチャ」 を選択します。
  2. 特定のモニター対象ホストをクリックすると、収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードが表示されます。

構成データ

実行中の Postgres インスタンスから収集された以下の構成データを参照してください。

  • プロセス ID
  • 開始時刻
  • ポート
  • バージョン
  • 役割
  • 最大接続数

パフォーマンス・メトリック

以下は、 Postgres インスタンスごとに収集されるパフォーマンス・メトリックです。

PostgreSQL サーバー

次の表は、 PostgreSQL サーバーから収集されるメトリクスの一覧です:

メトリック 説明 粒度
コミットされたトランザクションの合計数 すべてのデータベースにわたってコミットされたトランザクションの数。 1 秒
合計アクティブ接続数 すべてのデータベースでのアクティブな接続の数。 1 秒
接続使用率 許可される接続の最大数に対するアクティブな接続の数の割合。 1 秒
レプリケーション遅延 (レプリケーションでのみ使用可能) プライマリサーバーとレプリカサーバー間のレプリケーション遅延は、バイト単位と秒単位で表示されます。 1 秒

データベース

次の表は、データベースから収集されるメトリクスの一覧です:

メトリック 説明 粒度
コミットされたトランザクション このデータベースでコミットされたトランザクションの数。 1 秒
ロールバックされたトランザクション このデータベースでロールバックされたトランザクションの数。 1 秒
キャッシュ・ヒット率 読み取りが不要であるためにバッファー・キャッシュで検出されたディスク・ブロックのパーセンテージ。 1 秒
スタンバイ競合 このデータベース内のリカバリーとの競合のために取り消された照会の数。 1 秒
タプルが返されました 順次スキャンによってフェッチされたライブ行の数と、このデータベース内の索引スキャンによって返された索引項目の数の合計。 1 秒
フェッチされたタプル このデータベース内の索引スキャンによってフェッチされたライブ行の数。 1 秒
データベースのサイズ このデータベースによって使用されるディスク・スペース。 1 秒
アクティブな接続 このデータベースへのアクティブな接続の数。 1 秒

クラスター・レベル

以下の表は、 PostgreSQL クラスタから収集されるメトリクスの一覧です。

構成データ

次の表は、 PostgreSQL クラスタの構成の詳細を示しています:

パラメーター 説明
クラスター名 PostgreSQL クラスタの名前
監視対象ノード

クラスタダッシュボードには、そのクラスタに属するすべての PostgreSQL ノードの一覧が表示されます。 この表は、クラスタ内のすべてのノードの概要をすばやく表示し、クラスタのトポロジを簡単に識別し、個々の nodes.For の状態を監視できるようにします。各ノードについて、次の情報が表示されます。

パラメーター 説明
ノード名 PostgreSQL データベースインスタンスの名前
役割 ノードの役割(マスターまたはスレーブ)
バージョン PostgreSQL そのノードで実行されているバージョン
正常性 ノードの健康状態
パフォーマンス・メトリック

次の表は、 PostgreSQL クラスタから収集されるメトリクスの一覧です:

メトリック 説明 粒度
データベース数 PostgreSQL クラスタ内のデータベース数 1 秒
レプリカ数 PostgreSQL クラスタ内のレプリカノード数 1 秒
合計データベース・サイズ PostgreSQL クラスタ内のすべてのデータベースの合計サイズ 1 秒
トランザクション率 クラスタ内の全ノードにおける、1秒あたりのコミットおよびロールバックされたトランザクション数 1 秒
合計アクティブ接続数 クラスタ内の全ノードにおけるアクティブな接続の総数 1 秒

正常性シグニチャー

各センサーには、着信メトリックに対して継続的に評価され、ユーザーの影響に依存する問題またはインシデントを発生させるために使用される、キュレートされたヘルス・シグネチャーの知識ベースがあります。

組み込みイベントは、エンティティのヘルスシグネチャの異常に基づいて課題やインシデントをトリガーし、 カスタムイベントは、特定のエンティティの個々のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。

PostgreSQL センサーの組み込みイベントについて詳しくは、 組み込みイベントのリファレンスを参照してください。

トラブルシューティング

以下のトラブルシューティング項目を使用して、 PostgreSQLに関連する問題の解決に役立ててください。 Instana の PostgreSQL ダッシュボードおよびログに、問題の種類と、何が問題だったのかについての簡単な説明が記載されたエラーメッセージが表示されます。

PostgreSQL 統計が有効になっていない

監視対象の種類: postgresql_stats_not_enabled

PostgreSQL サーバーが検出されましたが、統計の収集が有効になっていません。 統計収集を有効にする必要があります。 詳しくは、「 統計収集の有効化 」セクションを参照してください。

PostgreSQL 認証が失敗する

監視対象の種類: postgresql_authentication_failed

PostgreSQL 認証が失敗しました。 モニター・ユーザーを作成してエージェントを構成するには、「 モニター・ユーザーの作成 」セクションを参照してください。

PostgreSQL 接続が失敗する

監視対象の種類: postgresql_connection_failed

エージェントが PostgreSQL サーバーへの接続に失敗します。 エージェントとセンサーの間の接続が確立されていることを確認する必要があります。