物理サーバー、仮想マシン、およびスタンドアロンのインストレーションを含むセルフホスト環境で、NRDOT Collectorを使用してPostgreSQLの監視を設定してください。
前提条件
インストールする前に、以下のものがあることを確認してください:
PostgreSQL 14以降
NewRelicライセンスキー。
PostgreSQLインスタンスへの管理アクセス。
NRDOT CollectorをインストールするホストとPostgreSQLデータベース間のネットワーク接続。
New Relic OTLPエンドポイントのドキュメントへのネットワーク接続
サポートされているPostgreSQLのバージョン、必要な権限、および推奨されるサーバーパラメーターについては、互換性と前提条件をご覧ください。
NRDOT Collectorのセットアップ
システムにNRDOT Collectorをインストールします:
データベースユーザーと権限を設定する
PostgreSQLインスタンスに必要な権限を持つ監視ユーザーを作成します。
監視ユーザーと権限を作成するには:
スーパーユーザー、または必要な権限を持つ別のユーザーとしてPostgreSQLインスタンスに接続します:
bash$sudo -u postgres psql --dbname=postgres --port=5432監視ユーザーを作成する:
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=localhost --port=5432 --dbname=<YOUR_DATABASE_NAME> --command '\conninfo'$psql --username=<YOUR_DB_USERNAME> --host=localhost --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=localhost --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=localhost --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_statements LIMIT 1;" && echo "pg_stat_statements OK"各コマンドがエラーなしで完了した場合、監視ユーザー、ホスト、およびポートはすべて正しいです。
NRDOT Collectorを構成する
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: "postgresql.example.com:5432"4username: "newrelic"5password: "YOUR_PASSWORD"6databases:7- YOUR_DATABASE_NAME8collection_interval: 15s9events:10db.server.top_query:11enabled: true12db.server.query_sample:13enabled: true14db.server.query_plan:15enabled: true16top_query_collection:17max_rows_per_query: 100018top_n_query: 20019collection_interval: 60s20allowed_comment_keys: [nr_service_guid]21query_sample_collection:22max_rows_per_query: 100023allowed_comment_keys: [nr_service_guid]24resource_attributes:25db.system.version:26enabled: true27# Metrics needed for the out-of-the-box dashboard but disabled by default:28# see "Available metrics" below for the full default-on/default-off breakdown.29metrics:30postgresql.database.locks:31enabled: true32postgresql.deadlocks:33enabled: true34postgresql.function.calls:35enabled: true36postgresql.query.conflicts:37enabled: true38postgresql.sequential_scans:39enabled: true40postgresql.temp.io:41enabled: true42postgresql.temp_files:43enabled: true44processors:45batch:46batch/metrics:47send_batch_size: 819248send_batch_max_size: 819249timeout: 10s50exporters:51otlp/newrelic:52endpoint: "https://otlp.nr-data.net:4318"53headers:54api-key: "YOUR_LICENSE_KEY"55compression: gzip56sending_queue:57enabled: true58sizer: bytes59queue_size: 100_000_00060num_consumers: 1061batch:62sizer: bytes63max_size: 1_000_00064min_size: 065flush_timeout: 5s66retry_on_failure:67enabled: true68initial_interval: 5s69max_interval: 30s70max_elapsed_time: 300s71service:72telemetry:73metrics:74level: none75pipelines:76metrics:77receivers: [nrpostgresql]78processors: [batch/metrics]79exporters: [otlp/newrelic]80logs:81receivers: [nrpostgresql]82processors: [batch]83exporters: [otlp/newrelic]設定パラメーター
次の表は、
nrpostgresql受信機のキー設定を説明しています。パラメータ 説明 <YOUR_DB_HOST>PostgreSQLデータベースのホスト名を入力してください。 <YOUR_DB_PORT>PostgreSQLデータベースのポートを入力します。 <YOUR_DB_USERNAME>データベースのユーザー名を入力してください。 <YOUR_DB_PASSWORD>データベースのパスワードを入力してください。 <YOUR_DATABASE_NAME>監視するデータベースの名前を入力します。 databases統計を収集するデータベースのリストです。デフォルト: [](すべての非テンプレートデータベース)。メトリクスにのみ適用されます。クエリサンプルとトップクエリはこのリストを無視し、exclude_databasesによってのみフィルタリングされます。exclude_databases統計、クエリサンプル、トップクエリから除外されるデータベース。デフォルト: []。監視ユーザーがアクセスできない内部データベースには、これを使用してください。<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でPostgreSQLデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- Entity typeドロップダウンからPostgreSQL instanceを選択し、Applyをクリックします。
- エンティティのリストからPostgreSQLデータベースを選択します。