AWS RDS PostgreSQLインスタンス用のNRDOT Collectorを使用して、PostgreSQL監視をセットアップします。RDS環境には、拡張機能とパラメーターグループに関する特定の考慮事項があります。
ガイド付きインストレーション
代わりにNew Relic UIからインストールするには、one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360)に移動してください。このページでは、手動インストレーションについてのみ説明します。
前提条件
インストールする前に、以下のものがあることを確認してください:
- PostgreSQL
14以降 - NewRelicライセンスキー。
- NRDOT CollectorをインストールするホストとRDS PostgreSQLインスタンス間のネットワーク接続。
- New Relic OTLPエンドポイントのドキュメントへのネットワーク接続
- RDSマスターユーザーの認証情報。
サポートされているPostgreSQLのバージョン、必要な権限、および推奨されるサーバーパラメーターについては、互換性と前提条件をご覧ください。
NRDOT Collectorのセットアップ
RDSインスタンスに接続できるシステムにNRDOT Collectorをインストールします:
データベースユーザーと権限を設定する
RDS PostgreSQLインスタンスに必要な権限を持つ監視ユーザーを作成します。
監視ユーザーと権限を作成するには:
- マスターユーザーとしてRDSインスタンスに接続します:
$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という名前の設定ファイルを作成します:
$sudo nano /etc/nrdot-collector/postgresql-config.yaml- 前の手順で作成した
postgresql-config.yamlファイルに以下の設定を追加します。
1receivers:2nrpostgresql:3 endpoint: "mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com:5432"4 username: "newrelic"5 password: "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 - rdsadmin13 collection_interval: 15s14events:15 db.server.top_query:16 enabled: true17 db.server.query_sample:18 enabled: true19 db.server.query_plan:20 enabled: true21top_query_collection:22 max_rows_per_query: 100023 top_n_query: 20024 collection_interval: 60s25 allowed_comment_keys: [nr_service_guid]26query_sample_collection:27 max_rows_per_query: 100028 allowed_comment_keys: [nr_service_guid]29resource_attributes:30 db.system.version:31 enabled: 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:35 postgresql.database.locks:36 enabled: true37 postgresql.deadlocks:38 enabled: true39 postgresql.function.calls:40 enabled: true41 postgresql.query.conflicts:42 enabled: true43 postgresql.sequential_scans:44 enabled: true45 postgresql.temp.io:46 enabled: true47 postgresql.temp_files:48 enabled: true49processors:50batch:51 batch/metrics:52 send_batch_size: 819253 send_batch_max_size: 819254 timeout: 10s55exporters:56 otlp/newrelic:57 endpoint: "https://otlp.nr-data.net:4318"58headers:59 api-key: "YOUR_LICENSE_KEY"60 compression: gzip61sending_queue:62 enabled: true63 sizer: bytes64 queue_size: 100_000_00065 num_consumers: 1066 batch:67 sizer: bytes68 max_size: 1_000_00069 min_size: 070 flush_timeout: 5s71retry_on_failure:72 enabled: true73 initial_interval: 5s74 max_interval: 30s75 max_elapsed_time: 300s76service:77telemetry:78metrics:79 level: none80pipelines:81metrics:82 receivers: [nrpostgresql]83 processors: [batch/metrics]84 exporters: [otlp/newrelic]85logs:86 receivers: [nrpostgresql]87 processors: [batch]88 exporters: [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ファイルを指すように設定パスを更新します:
$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.conf- NRDOT Collectorの設定を検証して、正しくフォーマットされ、適切に機能することを確認します:
$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/postgresql-config.yamlNRDOT 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データベースを選択します。