物理サーバー、仮想マシン、およびスタンドアロンのインストレーションを含むセルフホスト環境で、NRDOT Collectorを使用してPostgreSQLの監視を設定してください。
ガイド付きインストレーション
代わりにNew Relic UIからインストールするには、one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360)に移動してください。このページでは、手動インストレーションについてのみ説明します。
前提条件
インストールする前に、以下のものがあることを確認してください:
- PostgreSQL 14以降
- NewRelicライセンスキー。
- PostgreSQLインスタンスへの管理アクセス。
- NRDOT CollectorをインストールするホストとPostgreSQLデータベース間のネットワーク接続。
- New Relic OTLPエンドポイントのドキュメントへのネットワーク接続
サポートされているPostgreSQLのバージョン、必要な権限、および推奨されるサーバーパラメーターについては、互換性と前提条件をご覧ください。
NRDOT Collectorのセットアップ
システムにNRDOT Collectorをインストールします:
データベースユーザーと権限を設定する
PostgreSQLインスタンスに必要な権限を持つ監視ユーザーを作成します。
監視ユーザーと権限を作成するには:
- スーパーユーザー、または必要な権限を持つ別のユーザーとしてPostgreSQLインスタンスに接続します:
$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という名前の設定ファイルを作成します:
$sudo nano /etc/nrdot-collector/postgresql-config.yaml- 前の手順で作成した
postgresql-config.yamlファイルに以下の設定を追加します。
1receivers:2nrpostgresql:3 endpoint: "postgresql.example.com:5432"4 username: "newrelic"5 password: "YOUR_PASSWORD"6databases:7 - YOUR_DATABASE_NAME8 collection_interval: 15s9events:10 db.server.top_query:11 enabled: true12 db.server.query_sample:13 enabled: true14 db.server.query_plan:15 enabled: true16top_query_collection:17 max_rows_per_query: 100018 top_n_query: 20019 collection_interval: 60s20 allowed_comment_keys: [nr_service_guid]21query_sample_collection:22 max_rows_per_query: 100023 allowed_comment_keys: [nr_service_guid]24resource_attributes:25 db.system.version:26 enabled: 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:30 postgresql.database.locks:31 enabled: true32 postgresql.deadlocks:33 enabled: true34 postgresql.function.calls:35 enabled: true36 postgresql.query.conflicts:37 enabled: true38 postgresql.sequential_scans:39 enabled: true40 postgresql.temp.io:41 enabled: true42 postgresql.temp_files:43 enabled: true44processors:45batch:46 batch/metrics:47 send_batch_size: 819248 send_batch_max_size: 819249 timeout: 10s50exporters:51 otlp/newrelic:52 endpoint: "https://otlp.nr-data.net:4318"53headers:54 api-key: "YOUR_LICENSE_KEY"55 compression: gzip56sending_queue:57 enabled: true58 sizer: bytes59 queue_size: 100_000_00060 num_consumers: 1061 batch:62 sizer: bytes63 max_size: 1_000_00064 min_size: 065 flush_timeout: 5s66retry_on_failure:67 enabled: true68 initial_interval: 5s69 max_interval: 30s70 max_elapsed_time: 300s71service:72telemetry:73metrics:74 level: none75pipelines:76metrics:77 receivers: [nrpostgresql]78 processors: [batch/metrics]79 exporters: [otlp/newrelic]80logs:81 receivers: [nrpostgresql]82 processors: [batch]83 exporters: [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ファイルを指すように設定パスを更新します:
$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でPostgreSQLデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- Entity typeドロップダウンからPostgreSQL instanceを選択し、Applyをクリックします。
- エンティティのリストからPostgreSQLデータベースを選択します。