postgresql-otel Helmチャートを使用して、Kubernetes上でPostgreSQLの監視をインストールおよび構成できます。オプションとして、チャートは監視ロール、その権限、およびpg_stat_statements拡張機能を作成するセットアップジョブを実行することもできます。
ガイド付きインストレーション
代わりにNew Relic UIからインストールするには、one.newrelic.com > Integrations & Agents > PostgreSQL (Database 360)に移動してください。このページでは、手動インストレーションについてのみ説明します。
重要
チャートは、ネットワーク経由でリモートからPostgreSQLに到達するKubernetesデプロイメントとしてコレクターをデプロイするため、PostgreSQLのメトリクスのみをレポートします:PostgreSQLが実行されているマシンのホストやインフラストラクチャのメトリクスはレポートしません。リリースごとに1つのPostgreSQLインスタンスをモニターし(そのインスタンス上の複数のデータベースがサポートされています)、TLSやAWS IAM認証などのdb_auth資格情報プロバイダーは構成しません。
サーバーレベルの前提条件
PostgreSQL 14以降が必要です。このチャートをインストールする(またはセットアップジョブを有効にする)前に、以下のサーバーパラメーターを設定しておく必要があります。shared_preload_librariesなしではpg_stat_statementsを作成できません。また、そのパラメーターには再起動が必要なため、Kubernetesクラスタ内で実行されているものがこれを代行することはできません。
パラメータ | 価値 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
- セルフホスト型:これらを
postgresql.confに設定し、PostgreSQLを再起動します。一部のディストリビューションでは、pg_stat_statementsを利用可能にするためにpostgresql-contribパッケージをインストールする必要があります。 - AWS RDSまたはAurora:これらは設定ファイルではなく、DBのパラメーターグループで設定します。
track_activity_query_sizeとpg_stat_statements.maxは静的パラメーターです;apply_method: pending-rebootで適用してから、インスタンスを再起動してください。これらをすぐに適用すると、InvalidParameterCombinationで失敗します。Auroraの場合、パラメーターグループのファミリー名はエンジンのメジャーバージョンと完全に一致する必要があります(例:aurora-postgresql16)。
前提条件
有効なNew Relicのライセンスキー。
Helm 3.0以降、およびKubernetesクラスタにアクセスするように設定された
kubectl。KubernetesクラスタからPostgreSQLホスト(またはRDSエンドポイント)およびポートへのネットワーク接続:
- セルフホスト型:PostgreSQLホストへのルーティングされたパス(VPN、ピアリング、または共有ネットワーク)、ホスト名の場合はDNS解決、そしてPostgreSQL側の
pg_hba.confとファイアウォールは、接続の実際の送信元IP(ポッドのIP自体ではなく、NATゲートウェイである可能性があります)を許可する必要があります。 - AWS RDS:VPCピアリング、トランジット・ゲートウェイ、またはRDSインスタンスとの共有VPC配置を行い、RDSセキュリティ・グループでクラスタのエグレス・ソースからのPostgreSQLポート(デフォルトでは
5432)を許可する必要があります。
- セルフホスト型:PostgreSQLホストへのルーティングされたパス(VPN、ピアリング、または共有ネットワーク)、ホスト名の場合はDNS解決、そしてPostgreSQL側の
データベースごとの権限を持つ作成済みの監視ロール、またはチャートのセットアップジョブがそれらを作成できるようにするためのPostgreSQL管理者認証情報のいずれかです。以下の監視認証情報の設定をご覧ください。
ネームスペースを作成
インストール先のネームスペースを作成します。helm install --create-namespaceは最後のインストール手順でのみネームスペースを作成するため、次の手順でシークレットを作成する前に、ネームスペースが存在している必要があります:
$kubectl create namespace newrelicヒント
以下のすべてのコマンドで-nを渡す必要がないように、現在のkubectlコンテキストのデフォルトのネームスペースとして設定します:
$kubectl config set-context --current --namespace=newrelic監視資格情報の設定
チャートのセットアップ・ジョブでPostgreSQL監視ロールを作成するかどうか、作成しない場合はその認証情報をどのように提供するかを決定します:
Helmの値を設定します
環境に合わせてpostgresql.topologyを設定してください:
価値 | 説明 |
|---|---|
| セルフホスト型PostgreSQL、ネットワーク経由でアクセス。 |
| AWS RDS上のPostgreSQLまたはAurora。 |
postgresql.databases は必須の空ではないリストです。MySQLやSQL Serverとは異なり、PostgreSQLにはすべてのデータベースをモニターするモードはありません:1つの接続が一度に1つのデータベースをターゲットにするため、レシーバーにはどれをスクレイプするかを指示する必要があります。
前の手順で選択した資格情報メソッドに一致するvalues.yamlを使用します:
パラメータ | 説明 |
|---|---|
| New Relicライセンスキー。 |
| ご使用のリージョンのOTLP/gRPCエンドポイントは、 スキームなし の単なる
として指定します:
(米国)または
(EU)。詳細については、 を参照してください。 |
/
| クラスタから到達可能なPostgreSQLホスト(またはRDSエンドポイント)およびポート。 |
| モニターするデータベースの 必須の、空ではないリスト 。 |
| クラスタ全体のトップクエリおよびクエリサンプルのスキャンから除外されるデータベース。デフォルトは
で、
が
の場合にのみレンダリングされます;RDSでは、監視ユーザーは
に到達できないため、これを除外することで権限エラーを回避できます。 |
/
| セットアップジョブで使用される
対応のイメージです。チャートには デフォルトが付属していない ため、セットアップジョブが有効になっている場合は指定する必要があります。公式の
イメージには
がバンドルされており、妥当な選択肢です。 |
| オプション。また、
関数を作成してそれに
を付与し、レシーバーが書き込み権限を保持せずに、ロックおよび書き込みクエリに対して
を実行できるようにします。
のままにしても安全です:レシーバーはインラインの
にフォールバックするため、これらのステートメントは単にクエリプランを取得しません。 |
| オプション。また、ベクトルメトリクスのために、各モニターデータベースに
拡張機能を作成します。
、
、および
の距離関数には、pgvector 0.7.0以降が必要です。 |
ヒント
通常、postgresql.topQueryCollection.explainFunctionNameを設定する必要はありません。レシーバー自体のデフォルトはすでにotel.explain_statement(setupJob.enableExplainPermissionsが作成する関数そのもの)であり、チャートは空の場合にキーを省略するため、追加の設定なしで両者は一致します。レシーバーに異なる名前の関数を指定する場合にのみ、これを設定してください。
ヒント
postgresql.collectionInterval、metricsトグル、topQueryCollection/querySampleCollectionブロック、additionalReceiverConfigエスケープハッチなど、利用可能なすべての設定オプションについては、チャートのvalues.yamlを参照してください。
(オプション) 1つのリリースから複数のインスタンスをモニターする
postgresql.*の代わりに、1つのリリースで単一のコレクターポッドから複数のPostgreSQLインスタンス(セルフホスト型またはRDS)をモニターするようにpostgresqlMulti.enabled: trueを設定します。2つのモードは相互に排他的です:同じリリースでpostgresql.serverとpostgresqlMulti.enabled: trueを設定しないでください。
エントリはdatabasesではなくinstancesと呼ばれます:各インスタンスは個別のPostgreSQLサーバーであり、シングルインスタンスモードでのpostgresql.databasesの動作と同じように、それぞれが独自のネストされたdatabasesリスト(そのインスタンス上でモニターする個々のデータベース)を持ちます。
マルチインスタンスモードには、プレーンなユーザー名/パスワードのパスはありません:各インスタンスには、監視資格情報を含む独自のKubernetesシークレットが必要です。セットアップジョブに各監視ロールを作成させるかどうかも決定してください:
パラメータ | 説明 |
|---|---|
| 1つのリリースから複数のインスタンスをモニターするには、
の代わりに
に設定します。デフォルトは
です。 |
|
または
、
と同じ意味であり、このリリースのすべてのインスタンスで共有されます。 |
| モニターするインスタンスの一覧。各エントリには、一意の
、
(
のデフォルトは
)、
、およびそのインスタンス上のデータベース名の 必須で空ではない
リストが必要です;
が
の場合にのみ、エントリごとに
を追加します。 |
ヒント
setupJob.enableExplainPermissions およびsetupJob.enablePgvectorは、すべてのインスタンスのすべてのデータベースで共有される単一のトグルです;インスタンスごとに設定することはできません。スクレイプ設定(収集間隔、メトリクス、topQueryCollection/querySampleCollection)も同様に、postgresqlMulti.instances内のすべてのインスタンスに同一に適用されます;インスタンスごとのオーバーライドはありません。異なる必要があるものにはadditionalReceiverConfigを使用してください。セットアップジョブは、リリースごとに1回ではなく、インスタンスごとに1回(<release>-setup-<name>)実行されます。
Helmチャートをインストールする
New Relic Helm リポジトリを追加します。
bash$helm repo add newrelic https://helm-charts.newrelic.com$helm repo updatevalues.yamlファイルを使用してチャートをインストールします:bash$helm upgrade --install postgresql-otel newrelic/postgresql-otel \>-n newrelic \>--create-namespace \>-f values.yaml
インストレーションを確認する
セットアップジョブが完了し(有効な場合)、コレクターポッドが実行されていることを確認します:
bash$kubectl get jobs,pods -n newrelic --watchデータが到着していることを確認するには、クエリビルダーでこのクエリを実行してください:
SELECT count(*) FROM MetricWHERE metricName LIKE 'postgresql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes ago
データを探す、使う
データの収集が開始されると、New Relic UIから包括的なPostgreSQLデータベース監視にアクセスできます。
New RelicでPostgreSQLデータベースエンティティを見つけるには:
- one.newrelic.com > All capabilities > Databasesに移動します。
- Entity typeドロップダウンからPostgreSQL instanceを選択し、Applyをクリックします。
- エンティティのリストからPostgreSQLデータベースを選択します。
関連ドキュメント
NRDOTを使用したPostgreSQL監視の概要
New Relicを使用したPostgreSQL監視で利用可能なすべてのインストレーション方法をご覧ください。
CLIインストール
単一のNew Relic CLIコマンドを使用して、PostgreSQLの監視をインストールおよび設定する方法について説明します。
Ansibleのインストール
newrelic.newrelic_installを使用して、大規模なPostgreSQL監視をインストールおよび構成する方法について説明しますAnsibleロール。
Chefのインストール
newrelic-install Chefクックブックを使用して、PostgreSQLの監視を大規模にインストールおよび設定する方法について説明します。