New Relic PostgreSQL オンホスト統合 は、お使いの PostgreSQL インスタンスから New Relic プラットフォームにインベントリメトリクスを受信・送信し、主要なパフォーマンスメトリクスを集約・可視化することができます。インスタンス、データベース、クラスターからのデータは、問題の原因を見つけるのに役立ちます。
PostgreSQL監視統合をインストールするには、次の手順を実行する必要があります。
インテグレーションのインストールとアクティブ化 。インテグレーションの設定 。PostgreSQL のユーザと権限 .データの検索と使用 。必要に応じて、 PostgreSQLの構成設定 を参照してください。 互換性と要件 PostgreSQLのバージョン 私たちの統合は、バージョン 16 まで PostgreSQL と互換性があります。
サポートされているマネージド サービス 対応するオペレーティング・システム ウィンドウズ
Linux
特定のWindowsおよびLinuxバージョンの包括的なリストについては、 互換性のあるオペレーティングシステム の表を確認してください。
システム要求 インテグレーションのインストールとアクティブ化 PostgreSQLとの統合をインストールするには、お使いの環境に応じた手順で行ってください。
Linuxのインストール インフラストラクチャ エージェントをインストールし 、 INTEGRATION_FILE_NAME
変数をnri-postgresql
に置き換えます。
を実行して、integrationsのコンフィギュレーション・フォルダーにディレクトリを変更します。
$ cd /etc/newrelic-infra/integrations.d
必要な機能に対するREAD
権限を持つユーザーを作成します 。
以下を実行して、サンプルの設定ファイルをコピーします。
$ sudo cp postgresql-config.yml.sample postgresql-config.yml
お気に入りのエディタで postgresql-config.yml
構成ファイルを編集します。いくつかの 構成ファイルの例を確認してください。 。
Postgresqlの自動解析と転送を有効にするには、 postgresql-log.yml.example
ファイルをコピーするか、名前をpostgresql-log.yml
に変更します。エージェントを再起動する必要はありませんが、デフォルトの場所を使用していない場合は、postgresqlログファイルの場所でYMLファイルを更新する必要がある場合があります。
例えば:
$ sudo cp /etc/newrelic-infra/logging.d/postgresql-log.yml.example /etc/newrelic-infra/logging.d/postgresql-log.yml
その他の環境 Windowsへのインストレーション ' ' Amazon ECSへのインストレーション Kubernetesへのインストレーションその他の注意事項:
このドキュメントはインストールの役に立ちましたか? 統合を構成する 統合の設定方法は、インストールした方法によって、いくつかあります。
有効にした場合
Kubernetes、Kubernetesで実行されているサービスを監視するをご覧ください 。
有効にした場合
Amazon ECS 、 ECSで実行されているサービスを監視する 。
ホストにインストールされている場合は、統合のYAML構成ファイルpostgresql-config.yml
の構成を編集します。統合のYAML形式の構成では、必要なログインクレデンシャルを配置し、データの収集方法を構成できます。どのオプションを変更するかは、設定と設定によって異なります。構成ファイルには、 interval
、 timeout
、 inventory_source
など、すべての統合に適用できる共通の設定があります。これらの一般的な設定についてすべて読むには、 構成フォーマット のドキュメントを参照してください。
PostgreSQLに関連する特定の設定は、構成ファイルのenv
セクションを使用して定義されます。これらの設定は、PostgreSQLインスタンスへの接続、およびその他のセキュリティ設定と機能を制御します。有効な設定のリストについては、このドキュメントの次のセクションで説明します。
PostgreSQLのユーザーとパーミッション 以下にSELECT
権限を持つユーザーを作成します。
pg_stat_database
pg_stat_database_conflicts
pg_stat_bgwriter
PostgreSQL統合用のユーザーを作成するには:
CREATE USER new_relic WITH PASSWORD MY_PASSWORD ;
GRANT SELECT ON pg_stat_database TO new_relic ;
GRANT SELECT ON pg_stat_database_conflicts TO new_relic ;
GRANT SELECT ON pg_stat_bgwriter TO new_relic ;
これにより、PostgreSQLインスタンスに関連するグローバルメトリクスを収集することができます。
テーブルとインデックスに関連するメトリック(たとえば、テーブルサイズとインデックスサイズ)も取得する場合、統合で使用されるPostgreSQLロール( new_relic
)には、メトリックを収集するテーブルに対するSELECT
権限も必要です。から。たとえば、統合でデータベース(パブリックschema
内)に存在するすべてのテーブルとインデックスからメトリックを収集できるようにするには、次を使用します。
GRANT SELECT ON ALL TABLES IN SCHEMA public TO new_relic ;
PostgreSQLカスタムクエリ構成ファイルからクエリレベルのメトリックも取得する場合は、統合( new_relic
)で使用されるPostgreSQLロールを( pg_read_all_stats
)ロールに追加する必要があります。これは、ユーザーが( pg_stat_statements
)拡張子を利用しているためです。
GRANT pg_read_all_stats TO new_relic ;
pg_stat_statements
拡張機能を有効にするには、クエリプロンプトから手動で作成する必要がある場合があります。
CREATE EXTENSION pg_stat_statements ;
postgresql-config.yml サンプルファイル PostgreSQL設定収集ファイル JSONの配列。データベースに属するテーブルやインデックスを含む、関連するすべてのメトリクスを収集するためのデータベース名のリストと解釈されます。
例えば:
collection_list : '["postgres"]'
JSONオブジェクト:オブジェクトで指定されたエンティティのみが収集され、自動検出は実行されません。 JSONのレベルはdatabase name -> schema name -> table name -> index name
です。
例えば:
collection_list : '{"postgres":{"public":{"pg_table1":["pg_index1","pg_index2"],"pg_table2":[]}}}'
ALL
:検出されたすべてのデータベース、スキーマ、テーブル、およびインデックスのメトリックを収集します。
例えば:
HOSTNAME : psql - sample.localnet
COLLECT_DB_LOCK_METRICS : false
COLLECTION_LIST : '{"postgres":{"public":{"pg_table1":["pg_index1","pg_index2"],"pg_table2":[]}}}'
inventory_source : config/postgresql
PostgreSQL Azure Flexible および AWS RDS/Aurora 構成ファイル Azure/AWS SSL 対応オプション: Azure フレキシブル マネージド データベース オファリングでは、接続に SSL が必要です。MySQL のバージョンが 5.7 以降で、Aurora パラメータ グループで require_secure_transport が ON に設定されている場合、AWS RDS/Aurora は SSL を必要とする場合があります。SSL 要件に対応するには、postgresql-config.yml のこれらの設定をtrue
に設定する必要があります。
例えば:
TRUST_SERVER_CERTIFICATE : "true"
Azure/AWS SSL 無効化オプション: 上記の設定に加えて、次の SSL 設定をコメント アウトするか、構成から削除する必要があります。これは、上記のサーバー証明書を信頼する構成によるものです。
例えば:
概要: これらの設定が完了すると、完全な Azure/AWS 構成ファイルは次のようになります。注: インフラ エージェントと Postgresql の統合は、データベース インスタンスにネットワーク アクセスできるホストにインストールする必要があります。
例えば:
HOSTNAME : AWS - or - Azure - instance - name
COLLECT_DB_LOCK_METRICS : false
TRUST_SERVER_CERTIFICATE : "true"
inventory_source : config/postgresql
PostgreSQL SSL設定収集ファイル HOSTNAME : psql - sample.localnet
COLLECT_DB_LOCK_METRICS : false
COLLECTION_LIST : '["postgres"]'
TRUST_SERVER_CERTIFICATE : false
SSL_ROOT_CERT_LOCATION : /etc/newrelic - infra/root_cert.crt
SSL_CERT_LOCATION : /etc/newrelic - infra/postgresql.crt
SSL_KEY_LOCATION : /etc/newrelic - infra/postgresql.key
inventory_source : config/postgresql
PostgreSQLカスタムクエリ HOSTNAME : psql - sample.localnet
COLLECT_DB_LOCK_METRICS : false
'rows_inserted' as "metric_name" ,
'delta' as "metric_type" ,
sd.tup_inserted as "metric_value" ,
sd.datid as "database_id"
from pg_stat_database sd;
inventory_source : config/postgresql
PostgreSQLカスタムクエリ設定ファイル 1つまたは複数のカスタムSQLを含む追加のYAML構成ファイルを定義することができ、統合はCUSTOM_METRICS_CONFIGパラメータでファイルへのパスを必要とします。
オンホスト統合構成の一般的な構造の詳細については、「 構成 」を参照してください。
統合のための構成オプション データを検索して使用する方法の詳細については、 PostgreSQLの構成設定 を参照してください。
データを見つけて使用する このサービスからのデータは、 統合ダッシュボード に報告されます。
メトリックは、これらのイベントタイプ に関連付けられています。
トラブルシューティングの目的で、またはカスタムチャートとダッシュボードを作成するために、このデータをクエリ できます。
データを検索して使用する方法の詳細については、統合データを理解する 方法を参照してください。
統合によって収集されたメトリック PostgreSQL統合は、次のメトリックを収集します。一部のメトリック名には、 db.
やindex.
などのカテゴリインジケーターとピリオドが接頭辞として付けられます。
PostgresqlDatabaseSampleのメトリクス PostgreSQLDatabaseSampleの属性
説明
db.connections
このデータベースに現在接続されているバックエンドの数。
db.maxconnections
データベースサーバーへの最大同時接続数です。
db.commitsPerSecond
コミットされたトランザクション/秒。
db.rollbacksPerSecond
1秒間にロールバックされるトランザクション数
db.readsPerSecond
このデータベースで1秒間に読み込まれたディスクブロック数。
db.bufferHitsPerSecond
ディスクブロックがバッファキャッシュ内に既に存在し、読み取りが不要であった回数です。これは、オペレーティングシステムのファイルシステムキャッシュではなく、PostgreSQLのバッファキャッシュでのヒットのみを含みます。
db.rowsReturnedPerSecond
1秒あたりのクエリで返される行数。
db.rowsFetchedPerSecond
1秒間にクエリで取得された行数。
db.rowsInsertedPerSecond
1秒間に挿入される行数。
db.rowsUpdatedPerSecond
1秒間に更新される行数。
db.rowsDeletedPerSecond
1秒間に削除される行数。
db.conflicts.tablespacePerSecond
このデータベースで、ドロップされたテーブルスペースのためにキャンセルされたクエリの数。
db.conflicts.locksPerSecond
このデータベースで、ロックのタイムアウトによりキャンセルされたクエリの数。
db.conflicts.snapshotPerSecond
古いスナップショットのためにキャンセルされた、このデータベースのクエリの数。
db.conflicts.bufferpinPerSecond
このデータベースで、バッファが固定されているためにキャンセルされたクエリの数。
db.conflicts.deadlockPerSecond
このデータベースでデッドロックのためにキャンセルされたクエリの数。
db.tempFilesCreatedPerSecond
このデータベースのクエリによって作成された一時ファイルの数。一時ファイルが作成された理由(並べ替えやハッシュなど)に関係なく、またlog_temp_files
の設定に関係なく、すべての一時ファイルがカウントされます。
db.tempWrittenInBytesPerSecond
このデータベースのクエリによって一時ファイルに書き込まれたデータの合計量。一時ファイルが作成された理由やlog_temp_files
の設定に関係なく、すべての一時ファイルがカウントされます。
db.deadlocksPerSecond
このデータベースで検出されたデッドロックの数。
db.readTimeInMillisecondsPerSecond
このデータベースのバックエンドがデータファイルのブロックを読み込むのにかかった時間(単位:ミリ秒)。
db.writeTimeInMillisecondsPerSecond
このデータベースのバックエンドによるデータファイルブロックの書き込みにかかった時間(単位:ミリ秒)。
PostgresqlIndexSampleメトリクス PostgreSQLIndexSampleの属性
説明
index.sizeInBytes
インデックスのサイズです。
index.rowsReadPerSecond
このインデックスに対するスキャンによって返されたインデックス・エントリの数です。
index.rowsFetchedPerSecond
このインデックスに対するスキャンによってフェッチされたインデックスエントリの数。
PostgresqlInstanceSampleメトリクス PostgreSQLInstanceSample属性
説明
bgwriter.checkpointsScheduledPerSecond
実行されたスケジュールされたチェックポイントの数。
bgwriter.checkpointsRequestedPerSecond
要求されたチェックポイントが実行された数。
bgwriter.buffersWrittenForCheckpointsPerSecond
チェックポイント中に書き込まれたバッファの数。
bgwriter.buffersWrittenByBackgroundWriterPerSecond
バックグラウンドライターで書き込まれたバッファの数。
bgwriter.backgroundWriterStopsPerSecond
バッファの書き込みが多すぎたために、バックグラウンドライターがクリーニングスキャンを停止した回数。
bgwriter.buffersWrittenByBackendPerSecond
バックエンドが直接書き込んだバッファの数。
bgwriter.buffersAllocatedPerSecond
割り当てられたバッファの数。
bgwriter.backendFsyncCallsPerSecond
バックエンドが独自のfsync
呼び出しを実行しなければならなかった回数。通常、バックエンドが独自の書き込みを行う場合でも、バックグラウンドライターがそれらを処理します。
bgwriter.checkpointWriteTimeInMillisecondsPerSecond
チェックポイント処理のうち、ファイルをディスクに書き込む処理にかかった時間の合計(単位:ミリ秒)。
bgwriter.checkpointSyncTimeInMillisecondsPerSecond
チェックポイント処理のうち、ファイルをディスクに同期させる処理にかかった時間の合計(単位:ミリ秒)。
PostgresqlTableSampleメトリクス PostgreSQLTableSampleの属性
説明
table.totalSizeInBytes
インデックスとTOASTデータを含む、テーブルが使用する総ディスク容量。
table.indexSizeInBytes
指定されたテーブルにアタッチされたインデックスが使用するディスク容量の合計です。
table.liveRows
ライブの列数
table.deadRows
デッドローの数
table.indexBlocksReadPerSecond
このテーブルのすべてのインデックスから読み込まれたディスクブロックの数です。
table.indexBlocksHitPerSecond
このテーブルのすべてのインデックスにおけるバッファヒットの数。
table.indexToastBlocksReadPerSecond
このテーブルのTOASTテーブルインデックスから読み込まれたディスクブロックの数。
table.indexToastBlocksHitPerSecond
このテーブルのTOASTテーブルインデックスのバッファヒットの数。
table.lastVacuum
テーブルに最後の真空をかけた時間
table.lastAutoVacuum
テーブルに最後に自動バキュームをかけた時間
table.lastAnalyze
テーブル上での最後の分析の時間。
table.lastAutoAnalyze
最後に自動分析を行った時間
table.sequentialScansPerSecond
このテーブルに対して1秒あたりに実行されるシーケンシャルスキャンの数。
table.sequentialScanRowsFetchedPerSecond
シーケンシャルスキャンによって1秒あたりに取得されたライブ行の数。
table.indexScansPerSecond
このテーブルで行われたインデックススキャンの数。
table.indexScanRowsFetchedPerSecon
インデックススキャンによって取得されたライブ行の数。
table.rowsInsertedPerSecond
1秒間に挿入される行数。
table.rowsUpdatedPerSecond
1秒間に更新される行数。
table.rowsDeletedPerSecond
1秒間に削除される行数。
table.bloatSizeInBytes
ブルートのサイズ(バイト)。
table.dataSizeInBytes
テーブルのメインフォークが使用するディスクの間隔のサイズ。
table.bloatRatio
テーブルのデータサイズのうち、肥大化している部分の割合。
PgBouncerSampleメトリクス PgBouncerSampleの属性
説明
pgbouncer.stats.transactionsPerSecond
取引レートです。
pgbouncer.stats.queriesPerSecond
クエリーレートです。
pgbouncer.stats.bytesInPerSecond
受信したネットワークトラフィックの総量です。
pgbouncer.stats.bytesOutPerSecond
送信されたネットワークトラフィックの総量です。
pgbouncer.stats.totalTransactionDurationInMillisecondsPerSecond
pgbouncer
がトランザクションに費やした時間。
pgbouncer.stats.totalQueryDurationInMillisecondsPerSecond
pgbouncer
がPostgreSQLをアクティブにクエリするために費やした時間。
pgbouncer.stats.avgTransactionCount
直近の統計期間における1秒あたりの平均トランザクション数。
pgbouncer.stats.avgTransactionDurationInMilliseconds
トランザクションの平均時間です。
pgbouncer.stats.avgQueryCount
直近の統計期間における、1秒あたりの平均クエリ数。
pgbouncer.stats.avgBytesIn
受信したクライアントのネットワークトラフィックを
pgbouncer.stats.avgBytesOut
送信されたクライアントのネットワークトラフィック。
pgbouncer.stats.avgQueryDurationInMilliseconds
クエリの平均時間です。
pgbouncer.pools.clientConnectionsActive
クライアントの接続は、サーバーの接続にリンクされ、クエリを処理することができます。
pgbouncer.pools.clientConnectionsWaiting
クライアントの接続がサーバーの接続を待っている状態。
pgbouncer.pools.clientConnectionsWaitingCancelReq
クエリのキャンセルをまだサーバーに転送していないクライアント接続。
pgbouncer.pools.clientConnectionsActiveCancelReq
クエリのキャンセルをサーバーに転送し、サーバーの応答を待っているクライアント接続。
pgbouncer.pools.serverConnectionsActiveCancel
現在キャンセルリクエストを転送中のサーバー接続。
pgbouncer.pools.serverConnectionsBeingCancel
通常はアイドル状態になる可能性があるサーバーですが、このサーバー上のクエリをキャンセルするために送信されたすべての実行中のキャンセル要求が完了するまで、アイドル状態になるのを待機しています。
pgbouncer.pools.serverConnectionsActive
クライアント接続にリンクされたサーバー接続。
pgbouncer.pools.serverConnectionsIdle
サーバー接続はアイドル状態で、クライアントからの問い合わせに対応しています。
pgbouncer.pools.serverConnectionsUsed
サーバー接続はserver_check_delay
を超えてアイドル状態であり、 server_check_query
が必要です。
pgbouncer.pools.serverConnectionsTested
現在server_reset_query
またはserver_check_query
のいずれかを実行しているサーバー接続。
pgbouncer.pools.serverConnectionsLogin
現在ログイン処理中のサーバー接続。
pgbouncer.pools.maxwaitInMilliseconds
最も古い未サービスのクライアント接続の年齢。