• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

詳細なインサイトを有効にする

|View as Markdown (English)

PostgreSQLインスタンスに関するより深いインサイトを得るには、以下のオプションを設定できます:

TLSを有効にする

tlsフィールドはオプションですが、これを省略することはTLSを明示的に無効にすることと同じではありません:レシーバーのデフォルト設定ではすでにinsecure: falseとinsecure_skip_verify: trueが設定されているため、接続は暗号化されます(sslmode=require)が、insecure_skip_verify: falseを設定してca_fileを提供しない限り、サーバー証明書は検証されません。ほとんどのAmazon RDSおよびAuroraインスタンスはSSL/TLSを強制するため、通常はそれらの環境に対してその検証を追加することをお勧めします。

receivers:
nrpostgresql:
endpoint: <YOUR_HOST>:<YOUR_PORT>
username: <YOUR_DB_USERNAME>
password: <YOUR_DB_PASSWORD>
collection_interval: 30s
tls:
insecure: false
insecure_skip_verify: false
ca_file: <PATH_TO_CA_CERTIFICATE>
cert_file: <PATH_TO_CLIENT_CERTIFICATE>
key_file: <PATH_TO_CLIENT_KEY>

ヒント

cert_file/key_file は、PostgreSQLサーバーが相互TLS(クライアント証明書認証)を必要とする場合にのみ必要です;ほとんどのセットアップでは、サーバーを検証するために ca_file のみが必要です。Amazon RDS/Auroraの場合は、適切なRDS CA証明書バンドルをダウンロードし、ca_file で参照してください。insecure_skip_verify: true(デフォルト)は、自己署名証明書を使用するインスタンスに対するテストの場合にのみそのままにし、本番環境では決して使用しないでください。

書き込みステートメントのクエリプラン

デフォルトでは、EXPLAINは直接監視ユーザーとして実行され、PostgreSQLはプラン時にテーブル権限を確認します。つまり、監視ユーザーが書き込みアクセス権を持っていない限り、行ロックや書き込みステートメントはpermission deniedで失敗します。なお、監視ユーザーが書き込みアクセス権を持つことは決してあってはなりません。

監視ユーザーに書き込みアクセス権を付与せずに行ロックまたは書き込みステートメントのクエリ計画を収集するには、各データベースに次の関数を作成します:

CREATE OR REPLACE FUNCTION otel.explain_statement(l_query text)
RETURNS json
LANGUAGE plpgsql
SECURITY DEFINER
AS $$
DECLARE
v_plan json;
v_param_count int;
v_nulls text := '';
i int;
BEGIN
SET TRANSACTION READ ONLY;
SET plan_cache_mode = force_generic_plan;
EXECUTE 'PREPARE otel_explain_stmt AS ' || l_query;
SELECT COALESCE(array_length(parameter_types, 1), 0) INTO v_param_count
FROM pg_prepared_statements WHERE name = 'otel_explain_stmt';
IF v_param_count > 0 THEN
FOR i IN 1..v_param_count LOOP
v_nulls := v_nulls || CASE WHEN i > 1 THEN ', ' ELSE '' END || 'null';
END LOOP;
v_nulls := '(' || v_nulls || ')';
END IF;
EXECUTE 'EXPLAIN (FORMAT JSON) EXECUTE otel_explain_stmt' || v_nulls INTO v_plan;
DEALLOCATE otel_explain_stmt;
RETURN v_plan;
EXCEPTION WHEN OTHERS THEN
IF EXISTS (SELECT 1 FROM pg_prepared_statements WHERE name = 'otel_explain_stmt') THEN
DEALLOCATE otel_explain_stmt;
END IF;
RAISE;
END;
$$;
GRANT EXECUTE ON FUNCTION otel.explain_statement(text) TO <YOUR_DB_USERNAME>;

実行計画の収集メカニズム

  • レート制限: top_query_collection.max_explain_each_interval(デフォルトは1000)は、スクレイプごとのEXPLAIN呼び出し回数を制限します。
  • キャッシング: query_plan_cache_size/query_plan_cache_ttl(デフォルトは1000エントリ/1h)は、取得した計画をクエリIDをキーとしてキャッシュします。

セルフホスト環境での計装

New Relicを使用して、セルフホスト環境でPostgreSQL監視をセットアップする方法について説明します。

メトリクスリファレンス

NRDOT Collectorによって収集される利用可能なメトリクスについて説明します。

トラブルシューティングガイド

PostgreSQL監視に関する一般的な問題のトラブルシューティング方法について説明します。

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.