Postgres データベースモニタリングの高度なコンフィギュレーション

多数のリレーションの取り扱い

Postgres データベースに大量 (数千単位) のリレーションがある場合、Datadog ではそのデータベースのインスタンスのコンフィギュレーションに collect_database_size_metrics: false を追加することをおすすめしています。この設定が無効の場合、Agent はデータベースのサイズ統計を収集する関数 pg_database_size() を実行しないため、大量のテーブルがあるインスタンスでパフォーマンスが悪くなります。

instances:
  - dbm: true
    ...
    collect_database_size_metrics: false

さらに、名前以外のテーブルの定義が同一である複数のテーブル間でデータをパーティション化すると、大量のクエリまたは正規化されたクエリが発生します。

SELECT * FROM daily_aggregates_001
SELECT * FROM daily_aggregates_002
SELECT * FROM daily_aggregates_003

このような場合は、replace_digits オプションを使用してこのクエリを単一の正規化されたクエリとして追跡すると、このクエリのすべてのメトリクスが単一のクエリにロールアップされます。

SELECT * FROM daily_aggregates_?

Datadog Agent のデータベースインスタンスのコンフィギュレーションに replace_digits オプションを追加します。

instances:
  - dbm: true
    ...
    obfuscator_options:
      replace_digits: true

サンプリングレートの増加

比較的頻度が低い、またはすばやく実行するクエリがある場合は、collection_interval の値を下げてサンプル収集の頻度を上げ、サンプリングレートを増加します。

Datadog Agent のデータベースインスタンス構成で collection_interval を設定します。デフォルト値は 1 秒で、postgres/conf.yaml.example で確認できます。

より小さな間隔に値を下げます。

instances:
  - dbm: true
    ...
    query_samples:
        collection_interval: 0.1