AWS RDS PostgreSQLインスタンス用のNRDOT Collectorを使用して、PostgreSQL監視をセットアップします。RDS環境には、拡張機能とパラメーターグループに関する特定の考慮事項があります。
前提条件
インストールする前に、以下のものがあることを確認してください:
PostgreSQL
14以降NewRelicライセンスキー。
NRDOT CollectorをインストールするホストとRDS PostgreSQLインスタンス間のネットワーク接続。
New Relic OTLPエンドポイントのドキュメントへのネットワーク接続
RDSマスターユーザーの認証情報。
サポートされているPostgreSQLのバージョン、必要な権限、および推奨されるサーバーパラメーターについては、互換性と前提条件をご覧ください。
NRDOT Collectorのセットアップ
RDSインスタンスに接続できるシステムにNRDOT Collectorをインストールします:
データベースユーザーと権限を設定する
RDS PostgreSQLインスタンスに必要な権限を持つ監視ユーザーを作成します。
監視ユーザーと権限を作成するには:
マスターユーザーとしてRDSインスタンスに接続します:
bash$psql --host=<YOUR_RDS_ENDPOINT> --dbname=postgres --port=5432 --username=<YOUR_MASTER_USERNAME>監視ユーザーを作成する:
CREATE USER <YOUR_DB_USERNAME> WITH LOGIN PASSWORD '<YOUR_DB_PASSWORD>';必要に応じて、監視ユーザーロールのメンバーシップを付与する:
PostgreSQL 15以降を使用している場合は、権限を継承するようにロールを割り当てます:
ALTER ROLE <YOUR_DB_USERNAME> INHERIT;ヒント
PostgreSQL 14を使用している場合、監視ユーザーはデフォルトで権限を継承するため、この手順をスキップできます。
監視するすべてのデータベースに次のスキーマと権限を作成します:
CREATE SCHEMA IF NOT EXISTS otel;GRANT USAGE ON SCHEMA otel TO <YOUR_DB_USERNAME>;GRANT USAGE ON SCHEMA public TO <YOUR_DB_USERNAME>;GRANT SELECT ON ALL TABLES IN SCHEMA public TO <YOUR_DB_USERNAME>;GRANT pg_monitor TO <YOUR_DB_USERNAME>;CREATE EXTENSION IF NOT EXISTS pg_stat_statements;(オプション)ベクトルメトリクスを収集するには、各データベースで
pgvector拡張機能を作成します:CREATE EXTENSION IF NOT EXISTS vector;l1、hamming、およびjaccardの距離関数には、pgvectorバージョン0.7.0以降が必要です。(オプション)接続と権限を確認するには、次を実行します:
bash$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> --command '\conninfo'$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_database LIMIT 1;" && echo "pg_stat_database OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_activity LIMIT 1;" && echo "pg_stat_activity OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_statements LIMIT 1;" && echo "pg_stat_statements OK"各コマンドがエラーなしで完了した場合、監視ユーザー、ホスト、およびポートはすべて正しいです。
NRDOT Collectorを構成する
RDS PostgreSQL固有の設定でNRDOT Collectorを設定してください。
この設定は、nrpostgresqlレシーバーのみを使用した基本的なPostgreSQL監視に焦点を当てています。
完全な設定
このベースライン設定は、必須のメトリクスを取得します。完全なメトリクスカタログを確認するには、設定リファレンスを参照してください。
postgresql-config.yamlという名前の設定ファイルを作成します:bash$sudo nano /etc/nrdot-collector/postgresql-config.yaml前の手順で作成した
postgresql-config.yamlファイルに以下の設定を追加します。postgresql-config.yaml1receivers:2nrpostgresql:3endpoint: "mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com:5432"4username: "newrelic"5password: "YOUR_PASSWORD"6databases:7- YOUR_DATABASE_NAME8# top_query/query_sample scan pg_stat_statements/pg_stat_activity cluster-wide9# regardless of the databases list above; on RDS/Aurora, exclude reserved10# databases the monitoring user can never reach.11exclude_databases:12- rdsadmin13collection_interval: 15s14events:15db.server.top_query:16enabled: true17db.server.query_sample:18enabled: true19db.server.query_plan:20enabled: true21top_query_collection:22max_rows_per_query: 100023top_n_query: 20024collection_interval: 60s25allowed_comment_keys: [nr_service_guid]26query_sample_collection:27max_rows_per_query: 100028allowed_comment_keys: [nr_service_guid]29resource_attributes:30db.system.version:31enabled: true32# Metrics needed for the out-of-the-box dashboard but disabled by default:33# see "Available metrics" below for the full default-on/default-off breakdown.34metrics:35postgresql.database.locks:36enabled: true37postgresql.deadlocks:38enabled: true39postgresql.function.calls:40enabled: true41postgresql.query.conflicts:42enabled: true43postgresql.sequential_scans:44enabled: true45postgresql.temp.io:46enabled: true47postgresql.temp_files:48enabled: true49processors:50batch:51batch/metrics:52send_batch_size: 819253send_batch_max_size: 819254timeout: 10s55exporters:56otlp/newrelic:57endpoint: "https://otlp.nr-data.net:4318"58headers:59api-key: "YOUR_LICENSE_KEY"60compression: gzip61sending_queue:62enabled: true63sizer: bytes64queue_size: 100_000_00065num_consumers: 1066batch:67sizer: bytes68max_size: 1_000_00069min_size: 070flush_timeout: 5s71retry_on_failure:72enabled: true73initial_interval: 5s74max_interval: 30s75max_elapsed_time: 300s76service:77telemetry:78metrics:79level: none80pipelines:81metrics:82receivers: [nrpostgresql]83processors: [batch/metrics]84exporters: [otlp/newrelic]85logs:86receivers: [nrpostgresql]87processors: [batch]88exporters: [otlp/newrelic]設定パラメーター
次の表は、
nrpostgresql受信機のキー設定を説明しています。パラメータ 説明 <YOUR_RDS_ENDPOINT>RDSインスタンスのエンドポイントのホスト名を入力します。 <YOUR_DB_PORT>PostgreSQLデータベースのポートを入力します。 <YOUR_DB_USERNAME>データベースのユーザー名を入力してください。 <YOUR_DB_PASSWORD>データベースのパスワードを入力してください。 <YOUR_DATABASE_NAME>監視するデータベースの名前を入力します。 databases統計を収集するデータベースのリストです。デフォルト: [](すべての非テンプレートデータベース)。メトリクスにのみ適用されます。クエリサンプルとトップクエリはこのリストを無視し、exclude_databasesによってのみフィルタリングされます。exclude_databases統計、クエリサンプル、トップクエリから除外されるデータベース。デフォルト: []。監視ユーザーがアクセスできないマネージドサービスの内部データベース(rdsadminなど)には、これを使用してください。<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLPエンドポイントを入力します。詳細については、New Relic OTLPエンドポイントを参照してください。 <YOUR_NEWRELIC_LICENSE_KEY>New Relicのライセンスキーを入力してください。 collection_intervalメトリクススクレイプの間隔を入力します。デフォルト: 15s。
ヒント
もできます。
- 複数のレシーバーの構成:1つのコレクターから複数のPostgreSQLインスタンスをモニターします。
- PostgreSQLデータベースをAPMとリンクする:アプリケーションパフォーマンスをデータベース操作と関連付けるため。これにより、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。
- 書き込みステートメントのクエリプラン:監視ユーザーに書き込みアクセス権を付与せずに、ロックまたは書き込みステートメントのクエリプランを収集します。
- シークレット管理のセットアップ:データベースの認証情報などの機密情報を安全に管理します。これにより、設定ファイルへの機密データのハードコーディングを回避し、監視セットアップのセキュリティを強化できます。
NRDOT Collectorの設定の検証
新しい
postgresql-config.yamlファイルを指すように設定パスを更新します:bash$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/postgresql-config.yaml"|' /etc/nrdot-collector/nrdot-collector.confNRDOT Collectorの設定を検証して、正しくフォーマットされ、適切に機能することを確認します:
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/postgresql-config.yaml
NRDOT Collectorを再起動します
コレクターを設定した後、NRDOT Collectorサービスを再起動して変更を適用します:
$sudo systemctl restart nrdot-collectorコレクターが正常に実行されていることを確認するには、サービスステータスを確認します:
$sudo systemctl status nrdot-collectorヒント
新しい設定を確実に適用するために、設定を変更した後は常にNRDOT Collectorを再起動してください。
データを探す、使う
クエリのサンプルと上位のクエリは、ログイベント(event.name = 'db.server.query_sample'/'db.server.top_query'、db.system.name = 'postgresql')として到着します。メトリクスはpostgresql.*ネームスペースの下に到着します。
New RelicでRDS PostgreSQLデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- Entity typeドロップダウンからPostgreSQL instanceを選択し、Applyをクリックします。
- エンティティのリストからRDS PostgreSQLデータベースを選択します。